本文目录导读:

我来帮你编写自动切换网络配置脚本,根据不同需求提供几种方案:
Windows PowerShell 脚本
基础版 - 手动选择网络配置
# network_switch.ps1
param(
[Parameter(Mandatory=$true)]
[ValidateSet("办公室","会议室","出差","自动")]
[string]$Profile
)
# 定义网络配置
$configs = @{
"办公室" = @{
IP = "192.168.1.100"
Mask = "255.255.255.0"
Gateway = "192.168.1.1"
DNS = @("8.8.8.8", "114.114.114.114")
Interface = "以太网" # 请修改为你的网卡名称
}
"会议室" = @{
IP = "10.0.0.100"
Mask = "255.255.255.0"
Gateway = "10.0.0.1"
DNS = @("10.0.0.1")
Interface = "以太网"
}
"出差" = @{
# DHCP自动获取
DHCP = $true
Interface = "以太网"
}
}
function Set-NetworkConfig {
param($config)
$interface = $config.Interface
if ($config.DHCP) {
Write-Host "设置 $interface 为DHCP自动获取..." -ForegroundColor Yellow
netsh interface ip set address "$interface" dhcp
netsh interface ip set dns "$interface" dhcp
} else {
Write-Host "设置 $interface 为静态IP: $($config.IP)..." -ForegroundColor Yellow
# 设置IP和子网掩码
netsh interface ip set address "$interface" static $config.IP $config.Mask $config.Gateway 1
# 设置DNS
netsh interface ip set dns "$interface" static $config.DNS[0]
if ($config.DNS.Count -gt 1) {
for ($i = 1; $i -lt $config.DNS.Count; $i++) {
netsh interface ip add dns "$interface" $config.DNS[$i] index=$($i+1)
}
}
}
Write-Host "配置完成: $Profile" -ForegroundColor Green
}
# 执行配置切换
Set-NetworkConfig -config $configs[$Profile]
增强版 - 自动检测网络环境
# auto_network_switch.ps1
function Get-NetworkEnvironment {
# 检测当前网络环境
$detection_ips = @{
"办公室" = "192.168.1.0"
"会议室" = "10.0.0.0"
"家庭" = "192.168.10.0"
}
$currentIP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -eq "以太网"}).IPAddress
if ($currentIP) {
foreach ($env in $detection_ips.Keys) {
if ($currentIP -like "$($detection_ips[$env]-replace'\.0$','.*')*") {
return $env
}
}
}
return "未知环境"
}
# 主逻辑
$env = Get-NetworkEnvironment
Write-Host "检测到当前环境: $env" -ForegroundColor Cyan
switch ($env) {
"办公室" {
Write-Host "切换到办公室网络配置" -ForegroundColor Green
# 执行配置切换代码...
}
"会议室" {
Write-Host "切换到会议室网络配置" -ForegroundColor Yellow
# 执行配置切换代码...
}
default {
Write-Host "使用DHCP自动获取IP" -ForegroundColor Gray
# 执行DHCP配置...
}
}
Linux Bash 脚本
基于 NetworkManager 的版本
#!/bin/bash
# network_switch.sh
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 配置函数
switch_to_office() {
echo -e "${YELLOW}切换到办公室网络配置...${NC}"
sudo nmcli con mod "办公室" ipv4.addresses "192.168.1.100/24"
sudo nmcli con mod "办公室" ipv4.gateway "192.168.1.1"
sudo nmcli con mod "办公室" ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli con mod "办公室" ipv4.method manual
sudo nmcli con up "办公室"
echo -e "${GREEN}办公室配置完成${NC}"
}
switch_to_conference() {
echo -e "${YELLOW}切换到会议室网络配置...${NC}"
sudo nmcli con mod "会议室" ipv4.addresses "10.0.0.100/24"
sudo nmcli con mod "会议室" ipv4.gateway "10.0.0.1"
sudo nmcli con mod "会议室" ipv4.dns "10.0.0.1"
sudo nmcli con mod "会议室" ipv4.method manual
sudo nmcli con up "会议室"
echo -e "${GREEN}会议室配置完成${NC}"
}
switch_to_dhcp() {
echo -e "${YELLOW}切换到DHCP自动获取...${NC}"
sudo nmcli con mod "自动获取" ipv4.method auto
sudo nmcli con up "自动获取"
echo -e "${GREEN}DHCP配置完成${NC}"
}
show_current() {
echo -e "${GREEN}当前网络状态:${NC}"
ip addr show | grep -A2 "state UP"
echo ""
echo -e "${GREEN}当前DNS:${NC}"
nmcli dev show | grep DNS
}
# 主菜单
case "$1" in
office)
switch_to_office
;;
conference)
switch_to_conference
;;
dhcp)
switch_to_dhcp
;;
status)
show_current
;;
auto)
# 自动检测和切换
if ping -c 2 192.168.1.1 > /dev/null 2>&1; then
switch_to_office
elif ping -c 2 10.0.0.1 > /dev/null 2>&1; then
switch_to_conference
else
switch_to_dhcp
fi
;;
*)
echo "使用方法: $0 {office|conference|dhcp|status|auto}"
echo ""
echo "选项说明:"
echo " office 切换到办公室网络"
echo " conference 切换到会议室网络"
echo " dhcp 切换到自动获取"
echo " status 查看当前状态"
echo " auto 自动检测并切换"
exit 1
;;
esac
使用方式
Windows 版本
# 以管理员身份运行 .\network_switch.ps1 -Profile "办公室" .\network_switch.ps1 -Profile "会议室" .\network_switch.ps1 -Profile "出差"
Linux 版本
# 设置执行权限 chmod +x network_switch.sh # 使用 ./network_switch.sh office ./network_switch.sh conference ./network_switch.sh dhcp ./network_switch.sh auto # 自动检测 ./network_switch.sh status # 查看状态
高级功能 - 定时自动切换
#!/bin/bash
# timed_network_switch.sh
# 工作日时间表
case $(date +%u) in
1|2|3|4|5) # 周一至周五
case $(date +%H) in
09|10|11|12|13|14|15|16|17|18)
switch_to_office
;;
*)
switch_to_dhcp
;;
esac
;;
6|7) # 周末
switch_to_dhcp
;;
esac
注意事项
- 管理员权限:修改网络配置需要管理员/root权限
- 网卡名称:请根据实际情况修改脚本中的网卡名称
- 备份配置:切换前建议备份原配置
- 测试环境:先在测试环境验证脚本
你可以根据实际需求修改IP地址、子网掩码、网关和DNS等参数,如果需要自动检测功能,还可以添加更多检测逻辑。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播