我正在运行带有覆盆子pi的无头系统,一段时间没有通过ssh连接,系统将停止响应ssh,这不是Wi-Fi加密狗睡着了,我检查过,看到我有一个piglow运行piglow-sysmon,当pi停止响应ssh时,监视网络活动的pi发光部分确实显示活动。我发现了一个很好的脚本,用于检查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
答案 0 :(得分:0)
尝试以下脚本。它做了一些假设:
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服务,而是在其他地方,所以它又回到了绘图董事会为你。