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
代码如下:

<span style="font-size:18px;">#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ConfigParser
import paramiko
import sys
import os
import datetime
from multiprocessing import Process
class remote_connection:
def __init__(self,files,cmd):
self.ini = 'iplist.ini'
self.allfile = []
# 读取INI配置文件
def getini(self):
if os.path.isfile(self.ini):
pass
else:
sys.exit('Check your %s exists' % self.ini)
cfg = ConfigParser.ConfigParser()
cfg.read(self.ini)
sec = ''.join(cfg.sections())
options = cfg.options(sec)
self.user = cfg.get(sec,options[0])
self.passwd = cfg.get(sec,options[1])
self.host_all = cfg.get(sec,options[2])
self.host = ''.join(self.host_all).split(',')
# 执行远程ssh命令
def sshcmd(self,host='',port='',username='',passwd=''):
s=paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
s.connect(host,port,username,passwd,timeout=5)
except Exception:
sys.exit(host+'\x1b[1;31m\t\t[连接失败]\x1b[0m')
chan = s.get_transport().open_session()
chan.exec_command(cmd)
status = chan.recv_exit_status()
if status == 0:
print host+'\x1b[1;32m\t\t[执行成功]\x1b[0m'
else:
print host+'\x1b[1;31m\t\t[执行失败]\x1b[0m'
if __name__ == '__main__':
try:
opts,args = opts,args = getopt.getopt(sys.argv[1:],"(hH)f:c:",["help","file=","command="])
if len(sys.argv) == 1:
print '用法: python xxx.py -f xxx.file -c ifconfig'
sys.exit()
if sys.argv[1] in ("-h","-H","--help"):
print '用法: python xxx.py -f xxx.file -c ifconfig'
elif sys.argv[1] in ("-f","--file"):
for opt,arg in opts:
if opt in ("-f","--file"):
files = arg
if opt in ("-c","--command"):
cmd = arg
box = []
p = remote_connection(sys.argv[1],sys.argv[2])
p.getini()
for i in p.host:
box.append(Process(target=p.sshcmd,args=(i,3389,p.user,p.passwd)))
for i in box:
i.start()
i.join()
except Exception,e:
print e
</span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值