首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建脚本来检查ssh是否正在运行,如果没有,则重新启动它

如何创建脚本来检查ssh是否正在运行,如果没有,则重新启动它
EN

Stack Overflow用户
提问于 2016-01-25 09:16:10
回答 1查看 1.6K关注 0票数 1

我正在运行一个带有覆盆子pi的无头系统,在一段时间不通过ssh连接后,系统将停止对ssh的响应,这不是Wi-Fi加密狗进入睡眠状态,我检查了一下,看到我有一个正在运行的glow sysmon,并且当pi停止响应ssh时,pi glow中监控网络活动的部分确实显示了活动。我发现了一个很好的脚本,用于检查Wi-Fi是否启动,如果没有重新启动它,尽管我不太擅长bash脚本,也不知道如何或是否可以修改它以使用ssh而不是Wi-Fi,如果有人可以帮助我修改它,或者提供一个小的快速修改,我将使用cron每隔几分钟运行一次(一旦我可以修改它

下面是我尝试修改的脚本

代码语言:javascript
复制
#!/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
EN

回答 1

Stack Overflow用户

发布于 2016-01-25 11:34:58

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

1)您的帐户在authorized_keys文件中有自己的ssh密钥,因此"ssh localhost“本质上只是提供另一个shell,而不会提示您输入密码

2)如果ssh命令没有在三秒钟内完成,则可以安全地假定ssh守护进程已启动,但由于某种原因而停滞:

代码语言:javascript
复制
#! /bin/bash

ssh localhost /bin/true &

sleep 3; kill -9 $!

if wait $!
then
    echo Up
else
    echo Down
fi

有点粗糙,但应该是有效的。如何以最佳方式重新启动ssh服务取决于您。填空。

你可能还想在这里丢弃所有标准错误,因为它可能会有一些不重要的噪音……

另一方面,如果此脚本报告ssh服务正在运行,但您仍然无法从外部连接,则问题不在于ssh服务,而在于其他地方,因此将重新为您做准备。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34983708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档