本文目录导读:

- Linux服务器网络检测与重启脚本
- Windows网络检测与重启脚本 (PowerShell)
- 路由器/交换机检测重启脚本 (SSH方式)
- 定时任务配置 (crontab)
- Python版本的网络监控脚本
- 使用说明
- 注意事项
我来为您提供几个不同场景下检测并重启网络设备的脚本。
Linux服务器网络检测与重启脚本
#!/bin/bash
# 网络检测与重启脚本
# 文件名: network_monitor.sh
# 配置参数
PING_TARGET="8.8.8.8" # ping测试的目标地址
PING_COUNT=3 # ping次数
LOG_FILE="/var/log/network_monitor.log"
TIMEOUT=5 # 超时时间(秒)
# 日志函数
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 检测网络连接
check_network() {
if ping -c $PING_COUNT -W $TIMEOUT $PING_TARGET > /dev/null 2>&1; then
return 0
else
return 1
fi
}
# 重启网络服务
restart_network() {
log_message "正在重启网络服务..."
# 尝试多种方式重启网络
if systemctl restart network 2>/dev/null; then
log_message "通过 systemctl 重启网络成功"
elif service networking restart 2>/dev/null; then
log_message "通过 service 重启网络成功"
elif ifdown eth0 && ifup eth0 2>/dev/null; then
log_message "通过 ifdown/ifup 重启网络成功"
else
log_message "ERROR: 网络重启失败"
return 1
fi
# 等待网络恢复
sleep 5
# 验证网络是否恢复
if check_network; then
log_message "网络已成功恢复"
return 0
else
log_message "ERROR: 网络未能恢复,需要人工干预"
return 1
fi
}
# 主循环
log_message "网络监控脚本启动"
while true; do
if check_network; then
log_message "网络连接正常"
else
log_message "警告: 网络连接异常,尝试重启..."
restart_network
fi
# 每60秒检查一次
sleep 60
done
Windows网络检测与重启脚本 (PowerShell)
# Windows网络检测与重启脚本
# 文件名: network_monitor.ps1
# 配置参数
$PingTarget = "8.8.8.8"
$LogFile = "C:\Logs\network_monitor.log"
$CheckInterval = 60 # 检查间隔(秒)
# 日志函数
function Write-Log {
param([string]$Message)
$TimeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$TimeStamp - $Message" | Out-File -FilePath $LogFile -Append
Write-Host "$TimeStamp - $Message"
}
# 检测网络连接
function Test-Network {
try {
$result = Test-Connection -ComputerName $PingTarget -Count 2 -Quiet
return $result
}
catch {
return $false
}
}
# 重启网络适配器
function Restart-NetworkAdapter {
Write-Log "正在重启网络适配器..."
try {
# 获取网络适配器
$adapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
foreach ($adapter in $adapters) {
Write-Log "重启适配器: $($adapter.Name)"
Restart-NetAdapter -Name $adapter.Name -Confirm:$false
}
Write-Log "网络适配器重启完成"
Start-Sleep -Seconds 10
# 验证网络
if (Test-Network) {
Write-Log "网络已恢复"
return $true
} else {
Write-Log "警告: 网络未能自动恢复"
return $false
}
}
catch {
Write-Log "ERROR: 重启网络适配器失败: $_"
return $false
}
}
# 主循环
Write-Log "网络监控脚本启动"
while ($true) {
if (Test-Network) {
Write-Log "网络连接正常"
} else {
Write-Log "警告: 网络连接异常"
Restart-NetworkAdapter
}
Start-Sleep -Seconds $CheckInterval
}
路由器/交换机检测重启脚本 (SSH方式)
#!/bin/bash
# 路由器/交换机检测重启脚本
# 需要安装 sshpass 或配置SSH密钥
# 配置参数
ROUTER_IP="192.168.1.1"
SSH_USER="admin"
SSH_PASS="your_password" # 建议使用SSH密钥替代密码
PING_TARGET="8.8.8.8"
LOG_FILE="/var/log/router_monitor.log"
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 检测网络
check_network() {
ping -c 2 -W 3 $PING_TARGET > /dev/null 2>&1
return $?
}
# SSH执行命令
ssh_exec() {
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 \
$SSH_USER@$ROUTER_IP "$1" 2>/dev/null
}
# 重启路由器
reboot_router() {
log "准备重启路由器 $ROUTER_IP"
# 发送重启命令 (不同厂商命令不同)
# Cisco
ssh_exec "reload"
# 华为
# ssh_exec "reboot"
# 其他品牌请根据实际情况修改
log "重启命令已发送"
# 等待路由器重启
log "等待路由器重启 (预计60秒)..."
sleep 60
# 验证网络恢复
local retry_count=0
while [ $retry_count -lt 6 ]; do
if check_network; then
log "路由器重启成功,网络已恢复"
return 0
fi
retry_count=$((retry_count + 1))
log "等待网络恢复... (第${retry_count}次尝试)"
sleep 10
done
log "ERROR: 路由器重启后网络仍未恢复"
return 1
}
# 主程序
log "开始监控网络..."
if check_network; then
log "网络连接正常"
else
log "网络连接异常,尝试重启路由器..."
reboot_router
fi
定时任务配置 (crontab)
# 每5分钟执行一次网络检测 */5 * * * * /path/to/network_monitor.sh # 或者使用更简单的检测脚本 */5 * * * * ping -c 2 8.8.8.8 > /dev/null || /sbin/service network restart
Python版本的网络监控脚本
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import time
import subprocess
import logging
from datetime import datetime
class NetworkMonitor:
def __init__(self):
self.ping_target = "8.8.8.8"
self.log_file = "/var/log/network_monitor.log"
self.setup_logging()
def setup_logging(self):
logging.basicConfig(
filename=self.log_file,
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
def check_network(self):
try:
result = subprocess.run(
['ping', '-c', '2', '-W', '3', self.ping_target],
capture_output=True,
timeout=10
)
return result.returncode == 0
except:
return False
def restart_network(self):
logging.warning("网络异常,尝试重启网络服务...")
try:
# 尝试重启网络服务
commands = [
['systemctl', 'restart', 'network'],
['service', 'networking', 'restart'],
['ifdown', 'eth0'], ['ifup', 'eth0']
]
for cmd in commands:
try:
subprocess.run(cmd, check=True, timeout=30)
logging.info(f"执行命令成功: {' '.join(cmd)}")
break
except:
continue
time.sleep(10)
if self.check_network():
logging.info("网络已恢复")
return True
else:
logging.error("网络未能自动恢复")
return False
except Exception as e:
logging.error(f"重启网络失败: {str(e)}")
return False
def run(self, interval=60):
logging.info("网络监控脚本启动")
while True:
if self.check_network():
pass # 网络正常,不做操作
else:
logging.warning("检测到网络异常")
self.restart_network()
time.sleep(interval)
if __name__ == "__main__":
monitor = NetworkMonitor()
monitor.run()
使用说明
-
设置执行权限:
chmod +x network_monitor.sh
-
测试执行:
./network_monitor.sh
-
添加开机启动:
# 添加到 /etc/rc.local /path/to/network_monitor.sh &
-
配置系统服务 (systemd):
# /etc/systemd/system/network-monitor.service [Unit] Description=Network Monitor Service After=network.target [Service] Type=simple ExecStart=/path/to/network_monitor.sh Restart=always [Install] WantedBy=multi-user.target
注意事项
- 安全性:不要在脚本中硬编码密码,建议使用SSH密钥认证
- 监控频率:合理设置检查间隔,避免过于频繁
- 日志管理:定期清理日志文件,避免磁盘空间占用
- 权限问题:可能需要root权限执行网络重启操作
- 厂商差异:不同网络设备的重启命令不同,请根据实际情况修改
需要根据您的具体网络设备和环境调整脚本中的命令和参数。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播