我非常低的shell脚本..我怎样才能做一个shell脚本,知道我连接了在Ubuntu
我需要检查一个cron(这个没问题)如果我的连接向上。如果不是,我想调用一些脚本来重新连接。
我正在考虑使用grep和ping到某个站点(或ip),然后检查返回的字符串。
然后打电话给我的命令:
sudo pppd call speedtch
我需要一个线索的感谢!或者有更好的方法来做到这一点?
由于我的电话需要sudo,有没有密码输入的批处理方式来调用它?
我非常低的shell脚本..我怎样才能做一个shell脚本,知道我连接了在Ubuntu
我需要检查一个cron(这个没问题)如果我的连接向上。如果不是,我想调用一些脚本来重新连接。
我正在考虑使用grep和ping到某个站点(或ip),然后检查返回的字符串。
然后打电话给我的命令:
sudo pppd call speedtch
我需要一个线索的感谢!或者有更好的方法来做到这一点?
由于我的电话需要sudo,有没有密码输入的批处理方式来调用它?
查验效果很好,使用此命令行:
if ping -W 5 -c 1 google.com >/dev/null; then
echo "Internet is up."
fi
这使用以下命令行参数平:
至于你的sudo问题,你可以在sudoers文件中配置它。
在使用sudo的下面一行:
fromuser ALL=(root) NOPASSWD: /usr/bin/mycommand
你需要替换以下字符串:
使用此c onfiguration用户“fromuser”将始终能够在不输入密码的情况下执行/ usr/bin/mycommand。出于安全原因,您当然要小心。
一个更快的(和被动的方式),如果你是从直接连接到互联网的测试中,是检查是否默认路由是存在:
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
你能解释一下我这个? ping -W 5 -c 1 google.com>/dev/null 谢谢! – apelliciari 2009-07-22 13:00:35