国家和外部 IP Bash 脚本

Country and External IP Bash script

我根据我在 INTERNET 上找到的内容和一些 bash 教程创建了一个脚本,它将显示我的外部 IP 及其所在的国家/地区。

#

脚本如下所示:

#!/bin/bash

wanip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo "$wanip" > /root/Documents/filewanip;
iplist="/root/Documents/filewanip"

while read IP;do
whois "$IP"
done < "$iplist" | grep "country" >geoloc
cat geoloc filewanip
rm filewanip geoloc
#

输出如下所示: 国家:荷兰 183.64.132.80

#

问题是我不想使用文件来执行此操作,因为文件结构显然因系统而异。 我怎样才能以一种优雅的方式进行检查,以便进行检查并将其存储到变量中,然后直接显示到 shell?

约翰·康纳

据我了解,您的目标是消除临时文件的使用。在那种情况下:

#!/bin/bash
wanip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo "$wanip" | while read ip; do
    echo "$ip $(whois "$ip" | awk ' /[Cc]ountry/{print }')"
done

上面写的好像dig returns你的IP不止一个地址。如果不是这种情况,那么 while 循环就是多余的。

如果您只需要一个 IP,那么:

#!/bin/bash
ip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo "$ip $(whois "$ip" | awk ' /[Cc]ountry/{print }')"

备注:

  • 我将 IP 转换为 ip,因为最好为 shell 变量使用小写或混合大小写名称。

  • 我的whoisreturns一行是国家,不是国家。因此,我搜索了不区分大小写的国家/地区。