繁体   English   中英

如何创建脚本以检查ssh是否正在运行以及是否重新启动它

[英]how to create a script for checking if ssh is running and if not restart it

我运行的是带有树莓派的无头系统,经过一段时间不通过ssh连接后,系统将停止对ssh的响应,这不是Wi-Fi加密狗入睡,我检查了一下,发现我有一个运行中的小猪-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

尝试以下脚本。 它有一些假设:

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服务,而是在其他地方,因此将其返回给您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM