Docker - 青龙面板之断网自动重启路由器
当年我家的联通网络有个毛病,也许是路由器的毛病,有时候无法访问网络,必须断电重启。
因为NAS放在老房子里,平时不住那边,所以怎么在断网后重启路由器就是个难题。
想来想去想到这么个土办法分享给大家。
1. 了解SSH
SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地进行远程登录Linux服务器,进行配置及文件传输等。
路由器也是linux设备,可以通过SSH登陆进行配置。
2. 了解Paramiko库
Paramiko是一个基于Python的SSHv2协议库,主要用于远程服务器管理、安全文件传输和自动化运维。它支持SSH连接、命令执行、SFTP文件传输、端口转发等功能,广泛应用于跨平台服务器管理和自动化运维。
3. Python脚本
详细脚本如下,大概原理是多次ping百度网站,如果可以通则说明网络正常,如果不通则通过SSH连接路由器执行重启命令。
#!usrbinpython3
# -*- coding:utf-8 -*-
import os
import datetime
import time
import paramiko
def network_test():
count = 0
while True:
ret = os.system('ping -c 1 www.baidu.com')
if ret == 0:
time_re = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print("网络连接正常。%s" % time_re)
count += 1
if count > 4:
break
# return True
else:
time_re = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open('./NoInternetAccessLog.txt', 'a') as f:
f.write('网络中断时间为:%sn' % time_re)
print(time_re)
count += 1
if count > 4:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('192.168.50.1', username='xxxxxx', password='xxxxxx')
stdin, stdout, stderr = client.exec_command('reboot')
for line in stdout:
print(line.strip('n'))
client.close()
break
# return False
time.sleep(2)
int2 = 10
if __name__ == '__main__':
network_test()
如果提示“No module named 'paramiko”,则说明没有安装paramiko库。
Traceback (most recent call last):
File "/volume1/脚本/RebootWhenNoInternet.py", line 6, in
import paramiko
ModuleNotFoundError: No module named 'paramiko'
Python脚本安装paramiko库
在青龙脚本中新建如下脚本后运行,安装paramiko库。
import subprocess
import sys
def install_paramiko():
try:
# 尝试导入paramiko,检查是否已安装
import paramiko
print("paramiko已安装,版本:", paramiko.__version__)
return True
except ImportError:
print("正在安装paramiko...")
try:
# 使用subprocess调用pip安装
result = subprocess.run(
[sys.executable, "-m", "pip", "install", "paramiko"],
capture_output=True,
text=True,
check=True
)
print("安装成功!")
print(result.stdout)
return True
except subprocess.CalledProcessError as e:
print("安装失败:", e.stderr)
return False
if __name__ == "__main__":
install_paramiko()
5. 测试Python脚本
运行后可以看见日志,ping通5次百度网站后,测试网络连接正常,异常时候会重启路由器,我就不截图啦。

6. 设置每隔一小时运行一次
