有了它改ip不怕不怕了
大家都知道,如果是笔记本换一个环境上网就得改ip,gateway,dns,network等信息。今天就按两种不同环境实现之。
从前有一个人他叫王二,王二的工作有两个地点甲地,乙地,他用的办公工具是笔记本,由于工作需要他每天在两地之间穿梭不下于十次。这个王二很头痛啊,他每到一个地方都得改一次ip。这叫我们王二挺为难的,一天改十多次ip,叫谁谁也难受,为了帮助王二解决这个问题,我们来分析一下。
更据ip获取的方式分析一共有一下几种情况:
1.甲地是动态获取ip,乙地也是动态获取ip
2.甲地是动态获取ip,乙地是静态获取ip
乙地网络环境:
ip 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 dns 202.176.32.1
3.甲地是静态获取ip,乙地是动态获取ip
甲地网络环境:
ip 10.22.123.33 netmask 255.255.255.0 gateway 10.22.123.1 dns 201.34.16.1
4.甲地是静态获取ip,乙地也是静态获取ip
甲地网络环境:
ip 10.22.123.33 netmask 255.255.255.0 gateway 10.22.123.1 dns 201.34.16.1
乙地网络环境:
ip 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 dns 202.176.32.1
下面对这四种情况依次讨论之
A.对于第一种情况很好解决,只需一个简单的脚本,下面分别以两个操作系统linux,windows说一下解决方案:
linux 操作系统
脚本为
vim set_auto_ip.sh
#!/bin/bash
sed -i s@BOOTPROTO=.*@BOOTPROTO=dhcp@g /etc/sysconfig/network-scripts/ifcfg-eth0
#重启网络服务
service network restart
#验证
ifconfig eth0
保存后退出
chmod u+x set_auto_ip.sh #改脚本的执行权限,只需一次即可
bash set_auto_ip.sh #执行脚本
windows 操作系统
脚本为
set_auto_ip.bat
@echo off
rem eth为网卡名称,可在网络连接中查询,如"本地链接"
set eth="本地连接"
echo 正在修改IP为自动获取,请稍候
rem ip动态获取
cmd /c netsh interface ip set address %eth% dhcp
rem dns动态获取
cmd /c netsh interface ip set dns %eth% dhcp
pause
脚本执行 : 以管理员的的身份双击运行之
解释:
@echo off 意思是不显示下面的命令
rem 的作用是注释作用,只对读代码有用
pause 的作用是让对话框暂停
B.第二种情况甲地是动态获取ip,乙地是静态获取ip
linux操作系统
新建脚本文件set_static_auto_ip.sh
vim set_static_ip.sh
#!/bin/bash
#choice 1 to set static ip , choice 2 to set dynamic ip....
declare -i A #变量的申明
read -p "输入“1”为乙获得静态ip,输入“2”为甲获得动态(default[2]):" A
#这里有一个小技巧,当不输入值时默认是“2”动态获取
if [ "$A" != 1 ] && [ "$A" != "2" ];then
A=2
fi
if [ "$A" == "1" ];then
#该网卡获取ip类型static(静态)
sed -i s@BOOTPROTO=.*@BOOTPROTO=static@g /etc/sysconfig/network-scripts/ifcfg-eth0
#改ip
sed -i s@IPADDR=.*@IPADDR=192.168.1.2@g /etc/sysconfig/network-scripts/ifcfg-eth0
#设置子网掩码
sed -i s@NETMASK=.*@BOOTPROTO=255.255.255.0@g /etc/sysconfig/network-scripts/ifcfg-eth0
#设置网关
sed -i s@GATEWAY=.*@GATEWAY=192.168.1.1@g /etc/sysconfig/network-scripts/ifcfg-eth0
#设置dns
sed -i s@nameserver.*@nameserver\202.176.32.1@g /etc/resolv.conf
#重启网络服务
service network restart
#验证是否成功
ifconfig eth0
elif [ "$A" == "2" ];then
#改为动态获取ip,这里只需改获取ip的形式为dhcp即可,只要为dhcp其他的不起作用
sed -i s@BOOTPROTO=.*@BOOTPROTO=dhcp@g /etc/sysconfig/network-scripts/ifcfg-eth0
#重启网络服务
service network restart
#验证
ifconfig eth0
else
echo "your choice is worng..."
fi
保存退出
chmod u+x set_static_ip.sh #改脚本的执行权限
bash set_static_ip.sh #执行脚本
解释:
sed是一种在线编辑器,它一次处理一行内容。
“.”:任意一个字符
“*”:重复零个或多个前一个重复的字符
“.*”:任意字符
“@”:是分隔符,只要与其他字符没有歧义即可,分隔符可以是“/ # % ”等
“\”:是转义字符,这里主要是转义空格
windows 操作系统
新建脚本文件
set_static_auto_ip.bat
@echo off
echo ---------------------------------------------------------------------
echo "A为乙静态获取ip,B为甲动态获取ip"
echo ---------------------------------------------------------------------
set choice
set /p choice=请输入A 或B,然后回车:
if "%choice%"=="A" goto yi
if "%choice%"=="B" goto jia
:yi
rem eth 为网卡名称,可在网络连接中查询,如"本地链接"
set eth="本地连接"
rem ip为你想更改的IP
set ip=192.168.1.2
rem gateway 为网关地址
set gateway=192.168.1.1
rem netmasks //netmasks 为子网掩码
set netmasks=255.255.255.0
rem dns 为首选DNS
set dns=202.176.32.1
echo 正在将本机IP更改到: %ip% 请等候...
rem 校验
if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul
if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul
if %dns%==none netsh interface ip set dns %eth% static %dns%> nul
if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul
echo.........................
echo 检查当前本机IP:
ipconfig
echo.........................
echo 成功将本机IP更改为: %ip%
pause
exit
:jia
set eth="本地连接"
echo 正在修改IP为自动获取,请稍候
rem ip动态获取
cmd /c netsh interface ip set address %eth% dhcp
rem dns动态获取
cmd /c netsh interface ip set dns %eth% dhcp
echo ----------------------------------------------------
echo 动态获取IP设置成功!
echo ----------------------------------------------------
pause
exit
脚本执行:以管理员的的身份双击运行之
解释:上述脚本用到跳转goto,当输入A时goto到:yi 对乙静态ip获取之后exit退出;当输入B时goto到:jia 对甲动态ip获取之后exit退出
C.对于第三种情况 甲地是静态获取ip,乙地是动态获取ip。这种情况与第二种差不多,在这里不再做详细介绍
D.对于第四种情况 甲地是静态获取ip,乙地也是静态获取ip ,只要前几种情况搞懂了这种情况也是小菜,下面来介绍之。
linux操作系统
新建脚本set_static_ip.sh 这里不再解释每句话的意识,以上已经介绍过了
vim set_static_ip.sh
#!/bin/bash
#choice 1 to set static ip , choice 2 to set dynamic ip....
declare -i A #变量的申明
read -p "输入“1”为乙获得静态ip,输入“2”代表甲获得静态ip(default[2]):" A
if [ "$A" != 1 ] && [ "$A" != "2" ];then
A=2
fi
if [ "$A" == "1" ];then
sed -i s@BOOTPROTO=.*@BOOTPROTO=static@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@IPADDR=.*@IPADDR=192.168.1.2@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@NETMASK=.*@BOOTPROTO=255.255.255.0@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@GATEWAY=.*@GATEWAY=192.168.1.1@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@nameserver.*@nameserver\202.176.32.1@g /etc/resolv.conf
service network restart
ifconfig eth0
elif [ "$A" == "2" ];then
sed -i s@BOOTPROTO=.*@BOOTPROTO=static@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@IPADDR=.*@IPADDR=10.22.123.33@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@NETMASK=.*@BOOTPROTO=255.255.255.0@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@GATEWAY=.*@GATEWAY=10.22.123.1@g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s@nameserver.*@nameserver\201.34.16.1@g /etc/resolv.conf
service network restart
ifconfig eth0
else
echo "your choice is worng..."
fi
保存退出
chmod u+x set_static_ip.sh
bash set_static_ip.sh
windows操作系统
新建脚本 set_static_ip.bat
@echo off
echo ---------------------------------------------------------------------
echo "A为乙静态获取ip,B为甲静态获取ip"
echo ---------------------------------------------------------------------
set choice
set /p choice=请输入A 或B,然后回车:
if "%choice%"=="A" goto yi
if "%choice%"=="B" goto jia
:yi
rem eth 为网卡名称,可在网络连接中查询,如"本地链接"
set eth="本地连接"
rem ip为你想更改的IP
set ip=192.168.1.2
rem gateway 为网关地址
set gateway=192.168.1.1
rem netmasks //netmasks 为子网掩码
set netmasks=255.255.255.0
rem dns 为首选DNS
set dns=202.176.32.1
echo 正在将本机IP更改到: %ip% 请等候...
rem
if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul
if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul
if %dns%==none netsh interface ip set dns %eth% static %dns%> nul
if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul
echo.........................
echo 检查当前本机IP:
ipconfig
echo.........................
echo 成功将本机IP更改为: %ip%
pause
exit
:jia
rem eth 为网卡名称,可在网络连接中查询,如"本地链接"
set eth="本地连接"
rem ip为你想更改的IP
set ip=10.22.123.33
rem gateway 为网关地址
set gateway=10.22.123.1
rem netmasks 为子网掩码
set netmasks=255.255.255.0
rem dns 为首选DNS
set dns=201.34.16.1
echo 正在将本机IP更改到: %ip% 请等候...
rem
if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul
if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul
if %dns%==none netsh interface ip set dns %eth% static %dns%> nul
if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul
echo.........................
echo 检查当前本机IP:
ipconfig
echo.........................
echo 成功将本机IP更改为: %ip%
pause
exit
Ok,It's over!!!