gpt4 book ai didi

linux - 国家和外部 IP Bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:36 26 4
gpt4 key购买 nike

我根据我在互联网上找到的内容和一些 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 $2}')"
done

上面的代码好像是 dig 为您的 IP 返回了多个地址。如果不是这种情况,则 while 循环是多余的。

如果您只需要一个 IP,则:

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

注意事项:

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

  • 我的 whois 返回了一行 Country,而不是 country。因此,我对国家/地区进行了不区分大小写的搜索。

关于linux - 国家和外部 IP Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38668501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com