The geolocate program uses https://ipgeolocation.io or https://ip2location.io API to fetch geolocation data of a given IP (IPv4) address. The data returned by the API is in JSON format.
The easiest way to install the geolocate program is via cargo. If you have cargo installed on your system, you can simply run cargo install --git https://github.com/westernwontons/geolocate in a terminal. I would also recommend topgrade if you haven't heard of it.
In case you do not have cargo on your system, you can get it from the official site .
To fetch geodata from an IP address you first need to create an account at https://ipgeolocation.io/signup.html and/or https://ip2location.io to get an API key. There's a free tier on both sites.
geolocate has the following CLI arguments:
Long form is --name, short is -n.\
Currently, this can either be ipgeolocation or ip2location.\
default value is ipgeolocation if you choose to not supply it.\
It tells geolocate which API to hit.\
Long form is --ip, short is -i.\
This is the IP address you want to fetch geolocation data about.\
Long form is --key, short is -k.\
This is your API key for the respective service.\
If you don't want to always type it out, you can also slap it in an environment variable.\
Currently, geolocate looks for these two values:
* IP_GEOLOCATION_DOT_IO_API_KEY
* IP_2_LOCATION_DOT_IO_API_KEY
If you have both of them saved and don't give a --name parameter, geolocate will default to hit https://ipgeolocation.io.\
I suggest saving them in environment variables, makes it easier to use.
If you have jq on your system, you can pipe the returned JSON data there for pretty colors: geolocation IP -k API_Token | jq.
If you wish to do this via bash function, paste the below lines into your .zshrc, .bashrc or whichever shell you use:
```bash
geoloc() { if [[ -z $1 ]]; then geolocate --help
else
geolocate "$@" 2>&1 | jq
fi
} ```
Save and exit the file. Now you either restart your terminal session or simply reload the .*rc file with the source ~/.*rc command.
Please note, that for the function to work you have to have at least one of the tokens saved into an environment variable.