A public IP address is assigned to each server when it is connected to the Internet. This address can be assigned directly to a router that is used to send signals or traffic to the server.
This article shows how the IP address and geographical location of the remote Linux system can be determined using open APIs and how a bash script can be executed through the terminal. We have executed all commands and scripts on the CentOS 8 system, which are listed below:
Find the geographical location of a Linux server on CentOS 8
You need to run the various commands on your system to find your server’s geographic location. Login as root user on your CentOS 8 system and perform the steps as follows:
Open terminal
Open the terminal window through the shortcut method ‘Ctrl + Alt + t’ or Click on ‘Activities’ and launch the terminal by typing ‘terminal’ in the application search bar as follows:
Install curl and jq
To find the IP address and geographic location of a Linux server, you need to install Curl and Jq command-line tools that will be used to process the JSON data using geolocation APIs. For that purpose, you will execute the following command on the terminal:
$ sudo yum install curl jq
You will press ‘y’ and ‘Enter’ that will allow you to use additional space for installation.
After a while, you will see that curl and jq have been successfully installed on your system CentOS 8.
How to find the public IP address of a remote server?
Using curl command, you can get the public IP address of the server. The curl command is used to send an API request to the following URL ipinfo.io using the terminal as follows:
$ curl https://ipinfo.io/ip
How to get geographic location data from API?
Once the IP address of the server is retrieved, now you will send a request to ipvigilante.com API that will fetch the geographic location. For this purpose, use the following command in which you will replace the <your IP address> with the public IP address of the server:
$ curl https://ipvigilante.com/<Enter your IP address>
Get geographic location data using a bash script
You can automate the API process using the bash script method. To create a script, you need to create a text file in which you will paste the following script:
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
Now, save the above script file with the name ‘getipgeoloc.sh’. You can also save with your desired name as per your requirements. Again, move to the terminal window and type the command to create an executable file as follows:
$ chmod +x getipgeoloc.sh
Now it’s time to run the above script file to display the Linux server’s IP geographic location using in the following command:
$ ./getipgeoloc.sh
After executing the above script, the city, country name will be displayed along with longitude and latitude coordinates.
You can run the above script without saving it in an executable script file. So, you will type the following command on the terminal:
$ curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
You will see that approximate coordinates with your geographical location will be displayed on the terminal as follows:
Conclusion
In this article, you have explored how to find the geographical location of a public IP remote Linux server. Furthermore, you learned how to install and use curl, jq tools on your CentOS 8, how to use these to find the geographical location of your remote server. In case of any queries, please do comments in the comment box.