首页 > 代码库 > python中getopt模块
python中getopt模块
在日常的工作中免不了需要编写很多python脚本,当脚本的功能比较多的时候,又或者需要外部传入参数的时候,如果以参数
名和参数值的方式执行可能脚本显得更直观,也给自己提供方便。
python下有一个getopt的模块,该模块就是处理命令行参数的。
函数getopt(args,shortopts,longopts = [])
args一般是sys.argv[1:]
shortopys 短格式(-)
longopts 长格式(–) //两个杠
执行方法:
python run_cmd.py -f iplist.txt -c ifconfig
python run_cmd.py –file iplist.txt –command ifconfig
代码如下:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import ConfigParser 5 import paramiko 6 import sys 7 import os 8 import datetime 9 from multiprocessing import Process10 11 class remote_connection:12 13 def __init__(self,files,cmd):14 self.ini = ‘iplist.ini‘15 self.allfile = []16 17 # 读取INI配置文件18 def getini(self):19 if os.path.isfile(self.ini):20 pass21 else:22 sys.exit(‘Check your %s exists‘ % self.ini)23 cfg = ConfigParser.ConfigParser()24 cfg.read(self.ini)25 sec = ‘‘.join(cfg.sections())26 options = cfg.options(sec)27 self.user = cfg.get(sec,options[0])28 self.passwd = cfg.get(sec,options[1])29 self.host_all = cfg.get(sec,options[2])30 self.host = ‘‘.join(self.host_all).split(‘,‘)31 32 # 执行远程ssh命令33 def sshcmd(self,host=‘‘,port=‘‘,username=‘‘,passwd=‘‘):34 s=paramiko.SSHClient()35 s.set_missing_host_key_policy(paramiko.AutoAddPolicy())36 try:37 s.connect(host,port,username,passwd,timeout=5)38 except Exception:39 sys.exit(host+‘\x1b[1;31m\t\t[连接失败]\x1b[0m‘)40 chan = s.get_transport().open_session()41 chan.exec_command(cmd)42 status = chan.recv_exit_status()43 if status == 0:44 print host+‘\x1b[1;32m\t\t[执行成功]\x1b[0m‘45 else:46 print host+‘\x1b[1;31m\t\t[执行失败]\x1b[0m‘47 48 if __name__ == ‘__main__‘:49 try:50 opts,args = opts,args = getopt.getopt(sys.argv[1:],"(hH)f:c:",["help","file=","command="])51 if len(sys.argv) == 1:52 print ‘用法: python xxx.py -f xxx.file -c ifconfig‘53 sys.exit()54 if sys.argv[1] in ("-h","-H","--help"):55 print ‘用法: python xxx.py -f xxx.file -c ifconfig‘56 elif sys.argv[1] in ("-f","--file"):57 for opt,arg in opts:58 if opt in ("-f","--file"):59 files = arg60 if opt in ("-c","--command"):61 cmd = arg62 63 box = []64 p = remote_connection(sys.argv[1],sys.argv[2])65 p.getini()66 for i in p.host:67 box.append(Process(target=p.sshcmd,args=(i,3389,p.user,p.passwd)))68 for i in box:69 i.start()70 i.join()71 except Exception,e:72 print e
python中getopt模块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。