如果与互联网断开连接,我可以自动重启吗?

Bre*_*der 5 script reboot ubuntu

我有一个旧台式机,在我上大学时,我在家中将其作为 Web 服务器运行。家里的互联网很糟糕,很多时候当它出现故障时,桌面无法在不重新启动的情况下重新连接。

有没有办法制作一个在启动时加载的脚本,每 12 小时左右,将尝试 ping 路由器,如果失败,则重新启动服务器?

编辑:好的,我可以在谷歌搜索后制作这个脚本。

#!/bin/bash

ping -c 1 192.168.1.1 > /dev/null
if [ $? -ne 0 ]; then
  reboot
fi
Run Code Online (Sandbox Code Playgroud)

这将测试 ping 是否成功,如果失败则重新启动。
现在我需要做什么才能按设定的时间表运行?

小智 5

您没有提到操作系统,但如果您使用的是 Windows,则类似以下内容可能会有所帮助: 用于 Ping、更新 IP 和网络信息 / 修复的 JScript

这是我为类似问题整理的脚本。它几乎完全符合您的要求,因为它按给定的时间表 ping 默认网关(将是您的路由器),然后在 ping 失败时采取所需的操作。

在这种情况下,有问题的 PC 不需要重新启动,只需编写一个ipconfig /releaseipconfig /renew脚本即可重新连接。像这样的事情也可能适用于您的情况。如果仍然需要完全重新启动,则可以轻松修改此脚本以解决此问题。

对于 Linux,您可以使用如下的 shell 脚本:

#!/bin/sh

ping -c5 192.168.1.1

if [ $? -eq 0 ]; then
    echo "ok"
else
    reboot
fi
Run Code Online (Sandbox Code Playgroud)

这是因为 的返回代码ping,如手册页中所述

如果 ping 根本没有收到任何回复数据包,它将以代码 1 退出。 如果同时指定了数据包计数和截止时间,并且在截止时间到达时收到少于计数的数据包,它也会以代码 1 退出。在其他错误时,它以代码 2 退出。否则,它以代码 0 退出。这使得可以使用退出代码来查看主机是否处于活动状态。

替换192.168.1.1路由器的地址后,您可以使用 cron 安排它每隔一小时左右运行一次。为了重新启动,您需要将它作为root. 对于默认的 Ubuntu,您可以使用以下命令添加 cron 作业:

sudo crontab -e
Run Code Online (Sandbox Code Playgroud)

要每小时运行一次此检查,例如:

00 * * * * /path/to/script/pingRouterCheckReboot.sh
Run Code Online (Sandbox Code Playgroud)

您需要确保脚本是可执行的 ( chmod +x)。

如果您发现关闭并备份界面就足够了,您可以改为执行此操作,执行类似ifdown eth0; ifup eth0. 或者,结合方法:先执行此操作,然后再执行 ping 测试。如果连接仍未恢复,则强制执行完全重新启动的激烈措施。