Docker - 青龙面板之断网自动重启路由器

2025-06-20 22:49:33 3点赞 5收藏 0评论

当年我家的联通网络有个毛病,也许是路由器的毛病,有时候无法访问网络,必须断电重启。

因为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'

  1. 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次百度网站后,测试网络连接正常,异常时候会重启路由器,我就不截图啦。

Docker - 青龙面板之断网自动重启路由器

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

Docker - 青龙面板之断网自动重启路由器
展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
5
扫一下,分享更方便,购买更轻松