Joh*_*ion 5 command-line bash bashrc
我已经在这个论坛上其他人的帮助下编辑了我的 .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
}
Run Code Online (Sandbox Code Playgroud)
基本上我需要一个 if 语句来做这样的事情:
如果站点没有在可配置的时间负载“第 1 行”的情况下提供预期内容,则加载“第 2 行”
第 1 行将包含没有外部 IP 请求的代码 第 2 行将包含具有外部 IP 请求的代码。
现在..我实际上不确定是什么导致挂起..我不知道该站点是否没有响应..或者它是否忙且需要更长的时间来响应,或者它是否获取信息但不是预期的.. .它偶尔发生,如果它挂在我身上,我可以关闭外壳并打开它,通常它会得到信息..我想过ping但是......再次..不确定该站点是否仍然会响应ping但是不产生脚本正在寻找的内容并且仍然挂起。
我只是不知道如何正确设置语句来实现这一点或类似的事情
提前致谢。
我尝试了格伦杰克曼建议的路线
curl --silent --output - --connect-timeout 2 --max-time 3 http://checkip.dyndns.org:8245/ | grep "Current IP Address" | cut -d":" -f2 | cut -d"" -f2
Run Code Online (Sandbox Code Playgroud)
它确实获得了 IP 地址,但结果如下:
xxx.xxx.xxx.xxx</body></html>
Run Code Online (Sandbox Code Playgroud)
我可能不得不调整第二个剪切命令..大声笑..我想我需要学习剪切:D
如果我使用
curl --silent --output - --connect-timeout 2 --max-time 3 http://checkip.dyndns.org:8245/ | grep "Current IP Address"
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
<html><head><title>Current IP Check</title></head><body>Current IP Address: xxx.xxx.xxx.xxx</body></html>
Run Code Online (Sandbox Code Playgroud)
如果我切换回 lynx 行而不是 curl 并使用-read_timeout=1 -connect-timeout=1
this 确实可以防止外壳挂起,如果它有连接问题但是..它会产生错误,这就是为什么我希望做出某种 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/
Run Code Online (Sandbox Code Playgroud)
似乎可行的解决方案是使用 Glenn jackman 建议的curl 命令和Terrance 建议的地址。我还没有遇到挂起的情况,所以我不知道它是否会出现任何错误,但它似乎运行良好......新行现在是
curl --silent --output - --connect-timeout 1 --max-time 2 http://icanhazip.com/
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常..我已经启动终端 10 次,没有挂起或错误。我想你们又这么做了…伙计,我希望哪里有像 Windows 论坛这样的东西…哈哈,你去他们的论坛问一个问题…你得到一个不相关的“套用信函回复”,然后什么也没有。
你们太棒了..我想这现在已经得到了我想要的终端外壳,而且没有挂起..哈哈,因为烦恼,我禁用了外部IP一段时间,但现在我可以再次恢复它了:D
如果有人决定使用我链接的 .bashrc, 哈哈,它有点抄袭,但我不记得脚本第一次开始时我从谁那里得到它,但从那时起我就一直在玩它......就像在 2010 年或某物。
该文件还包含一个指向 .bashrcc 的链接,您可以在其中添加命令和别名,而无需将它们放入主文件中。这样做是因为我在多台计算机上同步 bashrc,有时我想要一台计算机有一个特殊的别名,但我不能在所有同步到该文件的 PC 上使用它。.bashrcc 只允许我为一个用户添加它。另请记住,您必须使用weather
邮政编码更改功能,否则您将查看我所在地区的临时情况:D