在论坛其他人的帮助下,我把我的 .bashrc 编辑成这样...感谢大家对这个脚本的天气部分的帮助...
我遇到的一个问题是外部 IP 地址的代码。如果出于某种原因,我用来检查外部 IP 的站点没有响应……它会锁定我的 bash,直到它获得信息为止。
我想做的是改变它,这样如果它在一秒或 500 毫秒内没有响应,就可以继续运行,这样它就不会挂起。我希望这是有意义的。这是我正在使用的代码。
localnet()
{
declare -a INETARRAY
INETARRAY=( `/sbin/ifconfig | awk /'inet addr/ {print $2}' && /sbin/ifconfig | awk /'Bcast/ {print $3}'`)
echo -ne ${INETARRAY[@]} "ExtIP:" ; myip
}
myip ()
{
lynx -dump -hiddenlinks=ignore -nolist http://checkip.dyndns.org:8245/ | grep "Current IP Address" | cut -d":" -f2 | cut -d" " -f2
}
基本上我需要一个 if 语句来执行如下操作:
如果网站在可配置的时间内没有给出预期结果,则加载“第 1 行”,否则加载“第 2 行”
第 1 行包含没有外部 IP 请求的代码,第 2 行包含有外部 IP 请求的代码。
现在...我其实不确定是什么导致了挂起...我不知道是不是网站没有响应...或者是网站很忙,需要更长时间才能响应,或者是它获取了信息但不是预期的信息...这种情况偶尔发生,如果它挂起,我可以关闭外壳并打开它,通常它会获取信息..我想过 ping 但是...再次..不确定网站是否仍会响应 ping 但不会产生脚本所寻找的内容并且仍然挂起。
我只是不知道如何正确设置语句来实现这一点或类似的事情
先谢谢了。
我尝试了 Glenn Jackman 建议的路线
curl --silent --output - --connect-timeout 2 --max-time 3 http://checkip.dyndns.org:8245/ | grep "Current IP Address" | cut -d":" -f2 | cut -d"" -f2
它确实获取了 IP 地址,但结果如下:
xxx.xxx.xxx.xxx</body></html>
我可能需要调整第二个剪切命令。哈哈。我想我需要学习剪切:D
如果我用
curl --silent --output - --connect-timeout 2 --max-time 3 http://checkip.dyndns.org:8245/ | grep "Current IP Address"
我得到的输出是:
<html><head><title>Current IP Check</title></head><body>Current IP Address: xxx.xxx.xxx.xxx</body></html>
如果我切换回 lynx 线而不是 curl 并使用这个,-read_timeout=1 -connect-timeout=1
如果它有连接问题,它确实可以防止 shell 挂起,但是......它会产生错误,这就是为什么我希望做出某种 if 语句
Network: addr:192.168.1.20 addr:127.0.0.1 Bcast:192.168.1.255 ExtIP:
Looking up checkip.dyndns.org:8245
Making HTTP connection to checkip.dyndns.org:8245
Alert!: Connection failed (too many retries).
Alert!: Unable to connect to remote host.
lynx: Can't access startfile http://checkip.dyndns.org:8245/
答案1
似乎可行的解决方案是使用 glenn jackman 建议的 curl 命令和 Terrance 建议的地址。我还没有遇到挂起问题,所以我不知道它是否会出现任何错误,但它似乎运行良好。新的线路现在是
curl --silent --output - --connect-timeout 1 --max-time 2 http://icanhazip.com/
似乎有效。。。我已经启动终端 10 次,没有挂起或出现错误。我想你们又成功了。。。伙计,我希望哪里有类似这样的 Windows 论坛。。。哈哈,你去他们的论坛问问题。。。你会得到一个不相关的“表格信函回复”,然后什么都没有。
你们太棒了。。我想现在终端 shell 就像我想要的那样,而且没有挂起。。哈哈,因为太烦人,我暂时禁用了外部 IP 功能,但现在我可以恢复它了 :D
如果有人决定使用.bashrc 我链接了 哈哈,这有点抄袭,但我不记得当剧本刚开始时我从谁那里得到它,但从那时起我就一直在玩它......就像是在 2010 年左右。
该文件还包含一个指向 .bashrcc 的链接,您可以创建该链接,在其中添加命令和别名,而不必将它们放在主文件中。这样做是因为我在多台计算机上同步我的 bashrc,有时我想要一台计算机的特殊别名,但并不是所有同步到该文件的 PC 上都有。.bashrcc 只允许我为一个用户添加它。还请记住,您必须使用weather
邮政编码更改该功能,否则您将查看我所在地区的临时数据 :D