一篇详细的修改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

  
  
  
  
  1. #!/bin/bash 
  2. sed -i s@BOOTPROTO=.*@BOOTPROTO=dhcp@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  3. #重启网络服务 
  4. service network restart 
  5. #验证 
  6. ifconfig eth0 

保存后退出

#chmod u+x set_auto_ip.sh  #改脚本的执行权限,只需一次即可
#bash set_auto_ip.sh       #执行脚本

windows 操作系统
脚本为
set_auto_ip.bat

  
  
  
  
  1. @echo off 
  2. rem eth为网卡名称,可在网络连接中查询,如"本地链接" 
  3. set eth="本地连接" 
  4.  
  5. echo 正在修改IP为自动获取,请稍候 
  6.  
  7. rem ip动态获取 
  8. cmd /c netsh interface ip set address %eth% dhcp 
  9.   
  10. rem dns动态获取 
  11. cmd /c netsh interface ip set dns %eth%  dhcp     
  12.  
  13. pause 

 

脚本执行 : 以管理员的的身份双击运行之

解释:
@echo off 意思是不显示下面的命令
rem 的作用是注释作用,只对读代码有用
pause 的作用是让对话框暂停

B.第二种情况甲地是动态获取ip,乙地是静态获取ip 

linux操作系统

新建脚本文件set_static_auto_ip.sh
#vim set_static_ip.sh

  
  
  
  
  1. #!/bin/bash 
  2. #choice 1 to set static ip , choice 2 to set dynamic ip.... 
  3. declare -i A  #变量的申明 
  4. read -p "输入“1”为乙获得静态ip,输入“2”为甲获得动态(default[2]):" A  
  5. #这里有一个小技巧,当不输入值时默认是“2”动态获取 
  6. if [ "$A" != 1 ] && [ "$A" != "2" ];then 
  7.        A=2 
  8. fi 
  9.  
  10. if [ "$A" == "1" ];then 
  11.     #该网卡获取ip类型static(静态) 
  12.     sed -i s@BOOTPROTO=.*@BOOTPROTO=static@g /etc/sysconfig/network-scripts/ifcfg-eth0     
  13.     #改ip 
  14.     sed -i s@IPADDR=.*@IPADDR=192.168.1.2@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  15.     #设置子网掩码 
  16.     sed -i s@NETMASK=.*@BOOTPROTO=255.255.255.0@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  17.     #设置网关 
  18.     sed -i s@GATEWAY=.*@GATEWAY=192.168.1.1@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  19.     #设置dns 
  20.     sed -i s@nameserver.*@nameserver\202.176.32.1@g /etc/resolv.conf 
  21.     #重启网络服务 
  22.     service network restart 
  23.     #验证是否成功 
  24.     ifconfig eth0 
  25. elif [ "$A" ==  "2" ];then 
  26.     #改为动态获取ip,这里只需改获取ip的形式为dhcp即可,只要为dhcp其他的不起作用 
  27.     sed -i s@BOOTPROTO=.*@BOOTPROTO=dhcp@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  28.   #重启网络服务 
  29.     service network restart 
  30.   #验证 
  31.     ifconfig eth0 
  32. else 
  33.      echo "your choice is worng..."  
  34. fi 

 

保存退出
chmod u+x set_static_ip.sh  #改脚本的执行权限
bash set_static_ip.sh       #执行脚本

解释:

sed是一种在线编辑器,它一次处理一行内容。
“.”:任意一个字符 

“*”:重复零个或多个前一个重复的字符 

“.*”:任意字符 

“@”:是分隔符,只要与其他字符没有歧义即可,分隔符可以是“/ # % ”等 

“\”:是转义字符,这里主要是转义空格

windows 操作系统
新建脚本文件
set_static_auto_ip.bat

 

  
  
  
  
  1. @echo off 
  2. echo --------------------------------------------------------------------- 
  3. echo "A为乙静态获取ip,B为甲动态获取ip" 
  4. echo --------------------------------------------------------------------- 
  5. set choice 
  6. set /p choice=请输入A 或B,然后回车: 
  7. if "%choice%"=="A" goto yi 
  8. if "%choice%"=="B" goto jia 
  9. :yi 
  10. rem eth 为网卡名称,可在网络连接中查询,如"本地链接" 
  11. set eth="本地连接" 
  12. rem ip为你想更改的IP 
  13. set ip=192.168.1.2 
  14.  
  15. rem gateway 为网关地址 
  16. set gateway=192.168.1.1 
  17.  
  18. rem netmasks //netmasks 为子网掩码 
  19. set netmasks=255.255.255.0 
  20. rem dns 为首选DNS 
  21. set dns=202.176.32.1 
  22.  
  23. echo 正在将本机IP更改到: %ip% 请等候... 
  24.  
  25. rem   校验 
  26. if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul 
  27. if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul 
  28. if %dns%==none netsh interface ip set dns %eth% static %dns%> nul 
  29. if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul 
  30.  
  31. echo......................... 
  32. echo 检查当前本机IP: 
  33. ipconfig 
  34.  
  35. echo......................... 
  36. echo 成功将本机IP更改为: %ip% 
  37.  
  38. pause 
  39. exit 
  40. :jia 
  41. set eth="本地连接" 
  42.  
  43. echo 正在修改IP为自动获取,请稍候 
  44. rem ip动态获取 
  45. cmd /c netsh interface ip set address %eth% dhcp  
  46. rem dns动态获取 
  47. cmd /c netsh interface ip set dns %eth%  dhcp     
  48.  
  49. echo ---------------------------------------------------- 
  50. echo                    动态获取IP设置成功! 
  51. echo ---------------------------------------------------- 
  52. pause 
  53. 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

  
  
  
  
  1. #!/bin/bash 
  2. #choice 1 to set static ip , choice 2 to set dynamic ip.... 
  3. declare -i A  #变量的申明 
  4. read -p "输入“1”为乙获得静态ip,输入“2”代表甲获得静态ip(default[2]):" A  
  5.  
  6. if [ "$A" != 1 ] && [ "$A" != "2" ];then 
  7.        A=2 
  8. fi 
  9.  
  10. if [ "$A" == "1" ];then 
  11.   
  12.     sed -i s@BOOTPROTO=.*@BOOTPROTO=static@g /etc/sysconfig/network-scripts/ifcfg-eth0     
  13.   
  14.     sed -i s@IPADDR=.*@IPADDR=192.168.1.2@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  15.    
  16.     sed -i s@NETMASK=.*@BOOTPROTO=255.255.255.0@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  17.   
  18.     sed -i s@GATEWAY=.*@GATEWAY=192.168.1.1@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  19.  
  20.     sed -i s@nameserver.*@nameserver\202.176.32.1@g /etc/resolv.conf 
  21.    
  22.     service network restart 
  23.    
  24.     ifconfig eth0 
  25. elif [ "$A" ==  "2" ];then 
  26.     sed -i s@BOOTPROTO=.*@BOOTPROTO=static@g /etc/sysconfig/network-scripts/ifcfg-eth0     
  27.   
  28.     sed -i s@IPADDR=.*@IPADDR=10.22.123.33@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  29.    
  30.     sed -i s@NETMASK=.*@BOOTPROTO=255.255.255.0@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  31.   
  32.     sed -i s@GATEWAY=.*@GATEWAY=10.22.123.1@g /etc/sysconfig/network-scripts/ifcfg-eth0 
  33.  
  34.     sed -i s@nameserver.*@nameserver\201.34.16.1@g /etc/resolv.conf 
  35.    
  36.     service network restart 
  37.    
  38.     ifconfig eth0 
  39. else 
  40.      echo "your choice is worng..."  
  41. fi 

保存退出
chmod u+x set_static_ip.sh
bash set_static_ip.sh

windows操作系统

新建脚本 set_static_ip.bat

  
  
  
  
  1. @echo off 

  2. echo --------------------------------------------------------------------- 
  3. echo "A为乙静态获取ip,B为甲静态获取ip" 
  4. echo --------------------------------------------------------------------- 
  5. set choice 
  6. set /p choice=请输入A 或B,然后回车: 
  7. if "%choice%"=="A" goto yi 
  8. if "%choice%"=="B" goto jia 
  9. :yi 
  10. rem eth 为网卡名称,可在网络连接中查询,如"本地链接" 
  11. set eth="本地连接" 
  12. rem ip为你想更改的IP 
  13. set ip=192.168.1.2 
  14.  
  15. rem gateway 为网关地址 
  16. set gateway=192.168.1.1 
  17.  
  18. rem netmasks //netmasks 为子网掩码 
  19. set netmasks=255.255.255.0 
  20. rem dns 为首选DNS 
  21. set dns=202.176.32.1 
  22. echo 正在将本机IP更改到: %ip% 请等候... 
  23.  
  24. rem 
  25. if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul 
  26. if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul 
  27. if %dns%==none netsh interface ip set dns %eth% static %dns%> nul 
  28. if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul 
  29.  
  30. echo......................... 
  31. echo 检查当前本机IP: 
  32. ipconfig 
  33.  
  34. echo......................... 
  35. echo 成功将本机IP更改为: %ip% 
  36.  
  37. pause 
  38. exit 
  39.  
  40. :jia 
  41.  
  42. rem eth 为网卡名称,可在网络连接中查询,如"本地链接" 
  43. set eth="本地连接" 
  44. rem ip为你想更改的IP 
  45. set ip=10.22.123.33 
  46.  
  47. rem gateway 为网关地址 
  48. set gateway=10.22.123.1 
  49.  
  50. rem netmasks 为子网掩码 
  51. set netmasks=255.255.255.0 
  52. rem dns 为首选DNS 
  53. set dns=201.34.16.1 
  54. echo 正在将本机IP更改到: %ip% 请等候... 
  55.  
  56. rem 
  57. if %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% > nul 
  58. if not %gateway%==none netsh interface ip set address %eth% static %ip% %netmasks% %gateway% 1 > nul 
  59. if %dns%==none netsh interface ip set dns %eth% static %dns%> nul 
  60. if not %dns%==none netsh interface ip set dns %eth% static %dns%> nul 
  61.  
  62. echo......................... 
  63. echo 检查当前本机IP: 
  64. ipconfig 
  65.  
  66. echo......................... 
  67. echo 成功将本机IP更改为: %ip% 
  68.  
  69. pause 
  70. exit 
  71.  

 

原文出处:http://linuxme.blog.51cto.com/1850814/393341

你可能感兴趣的:(linux,职场,休闲,自动修改ip)