我正在运行一个带有覆盆子pi的无头系统,在一段时间不通过ssh连接后,系统将停止对ssh的响应,这不是Wi-Fi加密狗进入睡眠状态,我检查了一下,看到我有一个正在运行的glow sysmon,并且当pi停止响应ssh时,pi glow中监控网络活动的部分确实显示了活动。我发现了一个很好的脚本,用于检查Wi-Fi是否启动,如果没有重新启动它,尽管我不太擅长bash脚本,也不知道如何或是否可以修改它以使用ssh而不是Wi-Fi,如果有人可以帮助我修改它,或者提供一个小的快速修改,我将使用cron每隔几分钟运行一次(一旦我可以修改它
下面是我尝试修改的脚本
#!/bin/bash
LOGFILE=/home/pi/network-monitor.log
if ifconfig wlan0 | grep -q "inet addr:" ;
then
echo "$(date "+%m %d %Y %T") : Wifi OK" >> $LOGFILE
else
echo "$(date "+%m %d %Y %T") : Wifi connection down! Attempting reconnection." >> $LOGFILE
ifup --force wlan0
OUT=$? #save exit status of last command to decide what to do next
if [ $OUT -eq 0 ] ; then
STATE=$(ifconfig wlan0 | grep "inet addr:")
echo "$(date "+%m %d %Y %T") : Network connection reset. Current state is" $STATE >> $LOGFILE
else
echo "$(date "+%m %d %Y %T") : Failed to reset wifi connection" >> $LOGFILE
fi
fi发布于 2016-01-25 11:34:58
尝试以下脚本。它做了一些假设:
1)您的帐户在authorized_keys文件中有自己的ssh密钥,因此"ssh localhost“本质上只是提供另一个shell,而不会提示您输入密码
2)如果ssh命令没有在三秒钟内完成,则可以安全地假定ssh守护进程已启动,但由于某种原因而停滞:
#! /bin/bash
ssh localhost /bin/true &
sleep 3; kill -9 $!
if wait $!
then
echo Up
else
echo Down
fi有点粗糙,但应该是有效的。如何以最佳方式重新启动ssh服务取决于您。填空。
你可能还想在这里丢弃所有标准错误,因为它可能会有一些不重要的噪音……
另一方面,如果此脚本报告ssh服务正在运行,但您仍然无法从外部连接,则问题不在于ssh服务,而在于其他地方,因此将重新为您做准备。
https://stackoverflow.com/questions/34983708
复制相似问题