Question: I’m trying to determine the IP address of the network switch several Linux boxes are plugged into.

Background: I need to know in which physical port they’re plugged into, so the machines automatically detect their 'spatial placing' (Since a certain port is hard-wired to a specific location).

The port detection itself is done via SNMP, which works quite well, but obviously I need the IP of the switch.

What I’m doing at the moment is: Run nmap (meh...) with just ping scan on the whole subnet (or scanning for telnet, since the switch has this port open) and afterwards check the ARP cache and retrieve the IP by checking against the MAC address, since I know what manufacturer part to look for.

Question: Is there some easier way (avoiding nmap), I already tried arp broadcasting, but that doesn't seem to give me an arp cache entry for the switch. The switch in question is an [IGS-801M from Planet Technology](http://www.planet.com.tw/en/product/product.php?id=25685), the (six) devices are plugged in directly, nothing network-ish between them.

The switch gets its IP assign via DHCP or even auto assigned (`169.x.x.x`), static IP is not an option.

I also tried stuff like traceroute and hoping the switch would show up as a hop, but since it just (quietly) forwards stuff to the gateway it won't show up.

Any ideas?

Answer: 
Instead of Direct APIs for backing up Google Takeout(which seems to be almost impossible to do as of now), you can back up your data to 3rd party storage solutions via Google Drive.
Many Google service allow backup to Google Drive, and you can backup Google Drive using the following tools:

[GoogleCL](http://code.google.com/p/googlecl/) - GoogleCL brings Google services to the command line.

[gdatacopier](http://code.google.com/p/gdatacopier/) - Command line document management utilities for Google docs.

[FUSE Google Drive](https://github.com/jcline/fuse-google-drive) - A FUSE user-space filesystem for Google Drive, written in C.

[Grive](https://github.com/Grive/grive) - An independent open-source implementation of a Google Drive client. It uses the Google Document List API to talk to the servers in Google. The code is written in C++.

[gdrive-cli](https://github.com/tom-dignan/gdrive-cli) - A command-line interface for GDrive. This uses the GDrive API, not the GDocs API, which is interesting. To use it, you need to register a chrome application. It must be at least installable by you, but need not be published. There is a boilerplate app in the repo you can use as a starting point.

[python-fuse example](http://www.stavros.io/posts/python-fuse-filesystem/) - Contains some slides and examples of Python FUSE filesystems.

Most of these seem to be in the Ubuntu repositories. I've used Fuse, gdrive and GoogleCL myself and they all work fine. Depending on the level of control you want this will be really easy or really complex. That's up to you. It should be straight forward to do from an EC2/S3 server. Just figure the commands out one by one for everything you need and put it in a script on a cron job.

If you don't want to work so hard, you can also just use a service like [Spinbackup](https://spinbackup.com/). I'm sure there are others just as good but I haven't tried any.
I found this question while searching for how to fix my google photos not showing up properly in google drive (which I'm already automatically backing up!).

So, to get your photos to show up in google drive, go to <https://photos.google.com>, settings and set it to show photos in a folder in drive.

Then use <https://github.com/ncw/rclone> to clone your entire google drive (which now includes photos as a 'normal' directory) down to your local storage.