本文目录导读:

我来帮你编写一个定时重启路由器的脚本,这里提供几种常见的实现方式:
Windows批处理脚本(最常用)
@echo off
:: 路由器重启脚本 - Windows版
:: 使用方法:将脚本保存为 .bat 文件,配合Windows任务计划程序使用
echo ========================================
echo 路由器定时重启脚本
echo ========================================
:: 设置路由器IP地址(根据你的路由器实际IP修改)
set ROUTER_IP=192.168.1.1
:: 设置路由器管理密码(根据实际情况修改)
set ADMIN_PASSWORD=admin123
echo 正在重启路由器 %ROUTER_IP% ...
:: 方法1: 使用ping测试连通性(简单方式)
ping -n 1 %ROUTER_IP% > nul
if %errorlevel%==0 (
echo 路由器连接正常,开始重启...
) else (
echo 警告:路由器无法连接,请检查网络设置
)
:: 方法2: 使用curl调用路由器API(需要路由器支持)
:: 这里以示例API为例,具体API请参考路由器说明书
curl -X POST "http://%ROUTER_IP%/cgi-bin/restart" ^
-d "username=admin&password=%ADMIN_PASSWORD%"
echo 重启命令已发送!
echo 等待路由器重启完成...
:: 等待30秒后检查连接
timeout /t 30 /nobreak > nul
ping -n 5 %ROUTER_IP% > nul
if %errorlevel%==0 (
echo 路由器重启成功,网络恢复正常!
) else (
echo 警告:路由器可能还未重启完成,请稍后检查
)
pause
PowerShell脚本(Windows)
# 路由器定时重启脚本 - PowerShell版
# 保存为 Restart-Router.ps1
# 参数配置
$routerIP = "192.168.1.1"
$adminUrl = "http://$routerIP/cgi-bin/reboot"
$username = "admin"
$password = "your_password"
# 创建日志记录函数
function Write-Log {
param($Message)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logEntry = "[$timestamp] $Message"
Write-Host $logEntry
Add-Content -Path "router-restart.log" -Value $logEntry
}
Write-Log "=== 开始路由器重启流程 ==="
# 测试路由器连通性
Write-Log "测试路由器连接..."
if (Test-Connection -ComputerName $routerIP -Count 2 -Quiet) {
Write-Log "路由器连接正常"
} else {
Write-Log "警告:路由器无法连接"
}
# 发送重启请求(这里以HTTP POST为例)
try {
$body = @{
username = $username
password = $password
action = "restart"
}
$response = Invoke-RestMethod -Uri $adminUrl `
-Method Post `
-Body $body `
-TimeoutSec 10
Write-Log "重启命令已发送至路由器"
Write-Log "响应:$($response | ConvertTo-Json)"
} catch {
Write-Log "错误:发送重启命令失败 - $($_.Exception.Message)"
}
# 等待路由器重启
Write-Log "等待路由器重启完成..."
Start-Sleep -Seconds 60
# 验证网络连接
Write-Log "验证网络连接..."
if (Test-Connection -ComputerName $routerIP -Count 3 -Quiet) {
Write-Log "路由器重启成功,网络恢复正常"
} else {
Write-Log "警告:检查网络连接,可能需要手动干预"
}
Write-Log "=== 重启流程结束 ==="
Linux Bash脚本
#!/bin/bash
# 路由器定时重启脚本 - Linux版
# 保存为 restart_router.sh 并设置执行权限
# 配置信息
ROUTER_IP="192.168.1.1"
USERNAME="admin"
PASSWORD="your_password"
LOG_FILE="/var/log/router-restart.log"
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}
# 检查root权限
if [[ $EUID -ne 0 ]]; then
log "错误:请使用sudo运行此脚本"
exit 1
fi
# 主函数
main() {
log "=== 开始路由器重启 ==="
# 测试连接
if ping -c 2 $ROUTER_IP > /dev/null 2>&1; then
log "路由器连接正常"
else
log "警告:路由器无法连接"
fi
# 发送重启命令(使用curl)
log "发送重启命令..."
curl -s -X POST "http://$ROUTER_IP/api/reboot" \
-d "username=$USERNAME&password=$PASSWORD" \
--connect-timeout 10
# 等待路由器重启
log "等待路由器重启..."
sleep 60
# 验证重连
if ping -c 3 $ROUTER_IP > /dev/null 2>&1; then
log "路由器重启成功"
else
log "警告:路由器未在预期时间内重启"
fi
log "=== 重启完成 ==="
}
# 执行主函数
main
Python脚本(跨平台)
#!/usr/bin/env python3
# 路由器定时重启脚本 - Python版
# 保存为 restart_router.py
import requests
import time
import subprocess
import logging
import sys
from datetime import datetime
import platform
# 日志配置
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('router_restart.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
class RouterRestart:
def __init__(self, router_ip="192.168.1.1", username="admin", password="password"):
self.router_ip = router_ip
self.username = username
self.password = password
def ping_router(self):
"""测试路由器连接"""
try:
system = platform.system()
if system == "Windows":
cmd = f"ping -n 1 {self.router_ip}"
else:
cmd = f"ping -c 1 {self.router_ip}"
result = subprocess.run(cmd, shell=True, capture_output=True)
return result.returncode == 0
except Exception as e:
logger.error(f"Ping失败: {e}")
return False
def send_restart_command(self):
"""发送重启命令"""
# 根据你的路由器型号修改API endpoint
url = f"http://{self.router_ip}/cgi-bin/reboot"
try:
response = requests.post(
url,
data={
"username": self.username,
"password": self.password,
"action": "restart"
},
timeout=10
)
return response.status_code == 200
except Exception as e:
logger.error(f"发送重启命令失败: {e}")
return False
def restart(self):
"""执行重启流程"""
logger.info("=== 开始路由器重启 ===")
# 测试连接
if self.ping_router():
logger.info("路由器连接正常")
else:
logger.warning("路由器无法连接")
# 发送重启命令
if self.send_restart_command():
logger.info("重启命令已发送")
else:
logger.error("重启命令发送失败")
return False
# 等待重启
logger.info("等待路由器重启...")
time.sleep(60)
# 验证重连
if self.ping_router():
logger.info("路由器重启成功")
return True
else:
logger.warning("路由器可能还未完成重启")
return False
# 主程序
if __name__ == "__main__":
# 创建配置
router = RouterRestart(
router_ip="192.168.1.1",
username="admin",
password="your_password"
)
# 执行重启
router.restart()
定时任务配置
Windows任务计划程序
:: 创建Windows计划任务(凌晨3点执行) schtasks /create /tn "RouterRestart" /tr "C:\scripts\restart_router.bat" /sc daily /st 03:00
Linux Crontab配置
# 编辑crontab crontab -e # 添加定时任务(每天凌晨3点执行) 0 3 * * * /path/to/restart_router.sh
注意事项
-
安全考虑:
- 脚本中包含密码,注意文件权限
- 建议使用环境变量存储敏感信息
-
路由器型号:
- 不同品牌的路由器API接口不同
- 建议先手动测试API接口
-
测试环境:
- 首次使用前先手动测试
- 确认路由器支持远程重启
-
优化建议:
- 添加错误处理和日志记录
- 设置重启前的网络检查
- 考虑添加邮件通知功能
如需针对特定路由器型号调整或遇到问题,请告诉我具体型号,我可以帮助你调整脚本。