国家和外部 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 变量使用小写或混合大小写名称。
我的whois
returns一行是国家,不是国家。因此,我搜索了不区分大小写的国家/地区。
我根据我在 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 变量使用小写或混合大小写名称。
我的
whois
returns一行是国家,不是国家。因此,我搜索了不区分大小写的国家/地区。