A-A+
	Python IP地址切换的脚本、编码
最近在笔记本重新安装了虚拟机,由于在家在公司经常需要切换IP,修改IP配置文件,觉得挺繁琐的,所以就索性的写了一个自动切换IP的脚本,主要是读配置文件修改,详情如下:
1、创建配置文件:
- # cat ip.conf
 - [home]
 - ip = 192.168.7.150
 - gateway = 192.168.7.1
 - [work]
 - ip = 10.7.93.150
 - gateway = 10.7.93.1
 
2、脚本实例
- #!/usr/bin/env python
 - # conding = utf-8
 - # finame swtch_ip.py
 - # This is swtch ip python file
 - import socket,os,sys
 - import ConfigParser
 - import time
 - from optparse import OptionParser
 - def init():
 - global IPS
 - global GATEWAYS
 - config = ConfigParser.ConfigParser()
 - dir = os.path.dirname(os.path.abspath(__file__))
 - conf = dir + "/conf"
 - filepath = "%s/ip.conf" %(conf)
 - if not os.path.exists(filepath):
 - raise "ERROR: ip.conf is not it!"
 - config.read(filepath)
 - IPS = config.get(options.type,"ip")
 - GATEWAYS = config.get(options.type,"gateway")
 - print "======[%s] Start get new options,please wait... ======" %(options.type)
 - print "%s config file ip is %s,gateway is %s" %(options.type,IPS,GATEWAYS)
 - def getopts():
 - MSG_USAGE='''python %s -t home''' % sys.argv[0]
 - optParser=OptionParser(MSG_USAGE)
 - optParser.add_option('-t',action='store',type='string',dest='type',default='work',help=u'type:work,home')
 - (options,args)=optParser.parse_args()
 - return options
 - def ipconfig():
 - ipconfigfile = open('/etc/sysconfig/network-scripts/ifcfg-eth0','r')
 - while True:
 - ipconfiglines = ipconfigfile.readlines()
 - if not ipconfiglines:
 - break
 - #ipconfigfile.close()
 - if "IPADDR" in ipconfiglines[4] and "GATEWAY" in ipconfiglines[3]:
 - print "====== Change IP and GATEWAY, please wait... ======"
 - temp = ipconfiglines[4].split('\"')
 - a = temp[1]
 - temp1 = ipconfiglines[3].split('\"')
 - b = temp1[1]
 - print "ifcfg-et0 config old IP is %s and old GATEWAY is %s" %(a,b)
 - edit_file = os.system('sed -i "s/'+a+'/'+IPS+'/g;s/'+b+'/'+GATEWAYS+'/g" /etc/sysconfig/network-scripts/ifcfg-eth0')
 - if edit_file == 0:
 - print 'Edit ifcfg-eth0 ip and gateway is OK,restart network restart'
 - restart_network = os.system('/etc/init.d/network restart')
 - if restart_network == 0:
 - print "Network restart Succ!"
 - else:
 - print "Network restart Fail!"
 - else:
 - print 'Edit ifcfg-eth0 ip is ERROR'
 - else:
 - print "no IP address and GATEWAY!!!"
 - if __name__ == '__main__':
 - if len(sys.argv)<1 and sys.argv[1] != '-h' and sys.argv[1] != '--help':
 - print '''Usage: python %s -t work
 - python %s -h|--help''' % (sys.argv[0],sys.argv[0])
 - sys.exit(1)
 - options = getopts()
 - init()
 - ipconfig()
 
3、查看帮助
- # python swich_ip.py --help
 - Usage: python swich_ip.py -t home
 - Options:
 - -h, --help show this help message and exit
 - -t TYPE type:work,home
 
4、运行测试
- # python swich_ip.py -t home
 - ======[home] Start get new options,please wait... ======
 - home config file ip is 192.168.7.250,gateway is 192.168.7.1
 - ====== Change IP and GATEWAY, please wait... ======
 - ifcfg-et0 config old IP is 192.168.7.250 and old GATEWAY is 192.168.7.1
 - Edit ifcfg-eth0 ip and gateway is OK,restart network restart
 
正在关闭接口 eth0:[确定]
关闭环回接口:[确定]
弹出环回接口:[确定]
弹出界面 eth0:[确定]
Network restart Succ!
5、结果
- # cat /etc/sysconfig/network-scripts/ifcfg-eth0
 - DEVICE="eth0"
 - ONBOOT="yes"
 - BOOTPROTO="static"
 - GATEWAY="192.168.7.1"
 - IPADDR="192.168.7.250"