最近在笔记本重新安装了虚拟机,由于在家在公司经常需要切换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"
本文出自 “&思远晨曦” 博客,请务必保留此出处http://kling.blog.51cto.com/3320545/1606396
原文地址:http://kling.blog.51cto.com/3320545/1606396