用脚本定时重启路由器怎么写

wen 实用脚本 3

本文目录导读:

用脚本定时重启路由器怎么写

  1. Windows批处理脚本(最常用)
  2. PowerShell脚本(Windows)
  3. Linux Bash脚本
  4. Python脚本(跨平台)
  5. 定时任务配置
  6. 注意事项

我来帮你编写一个定时重启路由器的脚本,这里提供几种常见的实现方式:

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

注意事项

  1. 安全考虑

    • 脚本中包含密码,注意文件权限
    • 建议使用环境变量存储敏感信息
  2. 路由器型号

    • 不同品牌的路由器API接口不同
    • 建议先手动测试API接口
  3. 测试环境

    • 首次使用前先手动测试
    • 确认路由器支持远程重启
  4. 优化建议

    • 添加错误处理和日志记录
    • 设置重启前的网络检查
    • 考虑添加邮件通知功能

如需针对特定路由器型号调整或遇到问题,请告诉我具体型号,我可以帮助你调整脚本。

抱歉,评论功能暂时关闭!