我有一个Raspberry PI,用作机器中的时钟 以太网接口每隔几个小时就会下降到每两天一次 这是我们在机器中设置的第二个pi。在原来的一个,它使用无线和无线接口上发生同样的问题。有了wifi问题,你可以拔掉usb wifi适配器并将其重新插入以对其进行排序。但是,我无法访问以太网插槽,我无法在新的pi上打开pi案例。
计划是使用cron脚本每10分钟左右运行一次。
因此,我使用脚本重新启动界面。脚本的想法是ping网关。如果没有收到响应,那么pi应该在接口eth0上运行IFDOWN然后运行IFUP。如果失败,则应重新启动。但是,我尝试过的每个脚本都失败了。目前,我使用以下脚本:
#!/bin/bash
function pingf1 {
ping1=$(ping -c 1 10.0.0.1)
ping1result=$?
echo $ping1result
if [ $ping1result -eq 1 ]
then
sudo /sbin/ifdown eth0 #or wlan0 if using on old clocker
sudo /sbin/ifup eth0 #or wlan0 if using on old clocker
fi
}
pingf1
exit
我知道这篇文章可能会被标记为重复帖子,但我已经在堆栈交换上尝试了很多不同的解决方案,但没有一个对我有用。
答案 0 :(得分:1)
对于sudo来说,听起来@andlrc是正确的,但是如果你从root用户那里创建了cronjob,那么你就不需要sudo了。
为了简单起见,请在cronjob中使用此脚本:
#!/bin/bash
if ! ping -q -c 1 192.168.1.121 &>/dev/null; then
/sbin/ifdown eth0 #or wlan0 if using on old clocker
/sbin/ifup eth0 #or wlan0 if using on old clocker
fi
exit
这里我们没有在$?
上使用不必要的变量和检查,因为它可以在if语句中完成。
确保您的cronjob是通过root运行的,因此您不必包含sudo,因为默认情况下它会要求输入密码,除非您在/ etc / sudoers中指定