【发布时间】:2016-05-02 13:09:34
【问题描述】:
这是我的第一个 Bash 脚本。我的 Debian 机器出现 WiFi 问题。我不是在这里询问原因,而是如何在 Bash 问题上使用创可贴。我的 WiFi 会随机掉线,通常每 12-15 分钟一次。我在此服务器上使用 SSH,并且不想从物理服务器手动运行 ifdown wlan0 和 ifup wlan0(重新连接 WiFi)。
这个 Bash 脚本的作用是尝试连接 3 次。如果它失败了三遍,它就会放弃。否则,它会每三秒通过尝试 ping Google 来检查我的服务器是否已连接。
#!/bin/bash
ATTEMPTS=1
function test_connection {
ping -c 1 www.google.com
local EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]
then
return true
else
return false
fi
}
function reset_connection {
ifdown wlan0
ifup wlan0
EXIT_CODE=$((EXIT_CODE+1))
}
function connection_test_loop {
if [ $ATTEMPTS -ge 3 ]
then
echo CONNECTION FAILED TO INITIALIZE ... ATTEMPT $ATTEMPTS FAILED ... EXITING
exit
fi
if ! [ test_connection ]
then
echo CONNECTION DROPPED ... ATTEMPTING TO RE-ESTABLISH CONNECTION ... ATTEMPT $ATTEMPTS
reset_connection
fi
}
test_connection
if [ $? ]
then
echo CONNECTION PRE-ESTABLISHED
watch -n 3 connection_test_loop
else
echo CONNECTION FAILED TO INITIALIZE ... ATTEMPTING TO RESET CONNECTION ... ATTEMPT $ATTEMPTS
reset_connection
if [ $? ]
then
echo CONNECTION ESTABLISHED
watch -n 3 connection_test_loop
else
echo CONNECTION FAILED TO INITIALIZE ... ATTEMPT $ATTEMPTS FAILED ... EXITING
exit
fi
fi
我已经隔离了我在使用此脚本时遇到的问题。在于用watch调用connection_test_loop函数。我一直找不到任何信息说明为什么它没有按预期执行并且每三秒运行一次函数。
【问题讨论】:
标签: linux bash function command watch