美文网首页大数据 爬虫Python AI Sql互联网科技码农的世界
【Python】绑定修改网卡绑定关系的python程序

【Python】绑定修改网卡绑定关系的python程序

作者: IT派森 | 来源:发表于2019-08-02 22:50 被阅读1次

标签: <绑定修改网卡绑定关系的python程序>
python -s ethx -l hostname 用来查看网卡信息,例如光卡还是电卡
python set_ethx.py -f ethx -i x.x.x.x -m 255.x.x.x -l [host] -e ethx 根据需要用来配置ifcfg-ethx文件,DECIVE=(-e 后面的参数)

  1. [代码][Python]代码
#!/usr/bin/env python
#-*-: coding: utf-8 -*-
 
import subprocess
import sys
import re
import optparse
import pxssh
import os
 
if sys.hexversion < 0x02040000:
        print >> sys.stderr, 'Your python version is too old (%s)' % \
                                                        (sys.version.split()[0])
        print >> sys.stderr, 'You need at least Python 2.4'
        sys.exit(1)
 
class RemoteDispatch(object):
    def __init__(self, host, usrname, password):
        self.host = host
        self.usr = usrname
        self.pwd = password
 
    def login(self):
        self.s=pxssh.pxssh()
        try:
                self.s.login(self.host, self.usr, self.pwd)
            except: 
            print "Login %s Failed !" % self.host
 
    def trasmit_cmd(self, cmdline):
        self.s.sendline(cmdline)
        self.s.prompt()
         
        return self.s.before.strip()
 
    def logout(self):
        self.s.logout()
 
class SetEthx(object):
    def __init__(self, host, username, password, options):
        self.opts = options
        self.host = host
        self.remote = RemoteDispatch(self.host, username, password)
        self.sock = self.remote.login()
 
    def search(self):
        output = self.remote.trasmit_cmd("ethtool -i %s" % self.opts.search)
        for i in output.split('\n')[1:]:
            print i
 
    def modify(self):
        if self.opts.ip:
            output = self.remote.trasmit_cmd("ifconfig %s" % self.opts.eth)
            content = self.process(output)
            self.remote.trasmit_cmd("echo '%s' > /etc//etc/sysconfig/network-scripts/ifcfg-%s" % (content, self.opts.file))
            self.remote.logout()
        else:
            print "Error ! Please press -i x.x.x.x !"
            sys.exit(1)
 
    def process(self, output):
        olist = output.split('\n')[1]
        m = re.match(".*HWaddr (.*).*", olist)
        if m:
            hwaddr = m.group(1)
            if hwaddr is None:
                print "have no hwaddr !"
                sys.exit(1)
            else:
                return "DEVICE=%s\nBOOTPROTO=static\nIPADDR=%s\nNETMASK=%sHWADDR=%s\nONBOOT=yes\n" % (self.opts.eth, self.opts.ip, self.opts.mask, hwaddr)  
        else:
            print "Don't finde HWaddr work !"
            sys.exit(1)
 
def parse_cmd():
    p = optparse.OptionParser(description="ethernet setup", prog="set_ethx", version="1.0", 
            usage="%prog [options] [ethx]")
    p.add_option("-s", "--search", action="store", dest="search", help="search ethernet tpye", 
            type="str")
    p.add_option("-f", "--file", action="store", dest="ifcfg-ethx file", help="modified ifcfg file", 
                        type="str")
    p.add_option("-i", "--ip", action="store", dest="ip", help="setup ip", type="str")
    p.add_option("-e", "--eth", action="store", dest="eth", help="set up ethx", type="str")
    p.add_option("-m", "--mask", action="store", dest="mask", help="set up mask", type="str")
    p.add_option("-l", "--host", action="store", dest="host", help="host name", type="str")
    (opts, args) = p.parse_args()
 
    return opts, args
 
def usage():
    print "python set_ethx.py -s ethx -l [host]\npython set_ethx.py -f ethx -i x.x.x.x -m 255.x.x.x -l [host] -e ethx"
 
def main():
    flag = False
    USERNAME = 'xxx'
    PASSWORD = 'xxxxxxx'
    opts, args = parse_cmd()
    try:
        if opts.host:
            obj = SetEthx(opts.host, USERNAME, PASSWORD, opts)
            if opts.search:
                obj.search()
                flag = True
            if flag == False:
                if opts.file and opts.ip and opts.eth and opts.mask:
                    obj.modify()
    except:
        print "set_ethx.py --help"
        usage()
        sys.exit(1)
         
if __name__ == '__main__':
    main()
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

相关文章

  • 【Python】绑定修改网卡绑定关系的python程序

    标签: <绑定修改网卡绑定关系的python程序>python -s ethx -l hostname 用来查看网...

  • CentOS 一个网卡设置多个IP

    CentOS 一个网卡设置多个IP 方法1:少量IP手动绑定: (这里以绑定IP到eth0为例,其它网卡的话修改相...

  • XenServer网络

    Xenserver 网卡绑定 xenServer支持三种网卡绑定: Active/active , acti...

  • python class slots

    python 中的类的slots 因为python是动态语言,它允许在程序运行过程中给class实例绑定任何属性和...

  • 使用__slots__实现动态绑定

    Python作为动态语言,可以实现动态绑定属性和实例方法等。 动态绑定属性 动态绑定实例方法 给一个实例绑定的方法...

  • #8 面向对象高级编程,python内部属性方法

    一.实例绑定方法和给类绑定方法 由于python动态语言的特性,在创建类之后,可以给实例或类再绑定方法。给实例绑定...

  • 微信小程序和Vue的区别

    单向绑定 & 双向绑定 微信小程序只支持单向绑定,如果需要修改data的值,只能通过setData操作。Vue可以...

  • Python-Unbound/Bound method obje

    本篇主要总结Python中绑定方法对象(Bound method object)和未绑定方法对象(Unboud m...

  • 网卡绑定

    [root@localhost ~]# modprobe --first-time bonding[root@lo...

  • Linux下双网卡绑定

    由于工作关系,需要进行双网卡绑定,之前单纯认为网卡绑定就是把两个网口通过配置的改变合并成一个网口,没有多复杂。详细...

网友评论

    本文标题:【Python】绑定修改网卡绑定关系的python程序

    本文链接:https://www.haomeiwen.com/subject/oqjaqctx.html