Python IP切换

发布时间:2019-09-22 07:47:28编辑:auto阅读(1417)

            最近在笔记本重新安装了虚拟机,由于在家在公司经常需要切换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"



关键字

上一篇: Python_对象(实例)

下一篇: python调用tcl