我的shell脚本非常低..
如果我的连接已启动,我需要检查一个cron(没问题)。如果不是,我想调用一些脚本重新连接。
我在考虑使用grep和ping某个站点(或ip),然后检查返回的字符串。
然后拨打我的命令:
sudo pppd call speedtch
我需要一个线索谢谢!或者有更好的方法来做到这一点?
由于我的呼叫需要sudo,有一种批量方式可以在没有密码输入的情况下调用它吗?
答案 0 :(得分:3)
ping运行正常,请使用以下命令行:
if ping -W 5 -c 1 google.com >/dev/null; then
echo "Internet is up."
fi
这使用以下命令行参数来ping:
至于你的sudo问题,你可以在sudoers文件中配置它。
在sudo中使用以下行:
fromuser ALL=(root) NOPASSWD: /usr/bin/mycommand
您需要替换以下字符串:
使用此配置,用户“fromuser”将始终能够执行/ usr / bin / mycommand而无需输入密码。出于安全原因,你当然要小心。
答案 1 :(得分:0)
更快(和被动方式),如果您正在测试的盒子直接连接到互联网,则检查是否存在默认路由:
netstat -rn | grep '^default' && echo connection is up || echo connection is down
如果您想在脚本中检查错误级别:
#!/bin/sh netstat -rn | grep '^default' connected=$? if [ ! -z $connect ]; then echo connected; fi
我个人做的另一件事是等待进行连接......
function wait_for_router() { el=1 while [ -z $el ]; do sleep 1 ping -c 1 $1 > /dev/null 2>&1 el=$? done }
如果您在另一个脚本中包含此函数,则可以执行以下操作:
#!/bin/sh echo Waiting for connection... wait_for_router 192.168.1.1 echo We have a connection... lets party