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"