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 Process
10
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             pass
21         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 = arg
60                 if opt in ("-c","--command"):
61                     cmd = arg
62
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
时间: 2024-11-01 00:06:02

python中getopt模块的相关文章

Python中optionParser模块的使用方法[转]

本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

Python中ConfigParser模块应用

Python中ConfigParser模块应用 Python的ConfigParser模块定义了3个对INI文件进行操作的类 RawConfigParser,ConfigParser和SafeConfigParser.其中RawCnfigParser是最基础的INI文件读取类,ConfigParser.SafeConfigParser支持对%(value)s变量的解析. 下面看看怎样通过ConfigParser类来解析一个ini文件. 配置文件settings.cfg [DEFAULT] myk

python中的模块安装

python中的模块研究: 需要用import导入的模块都是用python实现的. 内建的部分是用c.c++实现的. pypi:第三方的python包. 在windows上安装python: 1.安装python到C:\PythonXX,添加系统环境变量path:C:\PythonXX. 安装pypi库的方法三种方法: 1.在pypi上下载安装包离线安装 cd  $package-dir python   setup.py  install 在windos的cmd上也可以这样安装. 3.用eas

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

【转】关于python中re模块split方法的使用

注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于python中re模块split方法的使用 已有 3094 次阅读 2014-3-12 11:30 |系统分类:科研笔记 今天在写一段小代码的时候需要用到re.split()方法,在使用的过程中发现了一个以前不知道的新用法,发现这个用法还是挺实用的,就把它记录下来: >>> m = re.s

python中MySQLdb模块用法实例

篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMyS

Python中peewee模块

Python中peewee模块,有需要的朋友可以参考下. 前言关于ORM框架: 简介: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的"虚拟对象数据库". 对象关系映射(Object-Relational Mapping)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心

Python中的模块介绍和使用

在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 1.import 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入. 形如: importmodu