python subprocess中ssh命令的特殊性】的更多相关文章

今天尝试使用python 的 subprocess 模块 使用类似如下语句: p=subprocess.Popen(['ssh','root@localhost'],stdout=subprocess.PIPE) 按照参数的说明,ssh的输出内容会到 subprocess.PIPE,但是实际执行发现,ssh的内容还是被打印到屏幕上了,不仅如此,还接管了当前命令行窗口的标准输入.…
调用subprocess的推荐方法是对于它可以处理的所有使用场景都使用run()函数. run()函数是在Python 3.5中添加的,如果在老版本中使用,需要下载并扩展. 扩展安装方式: $ pip install subprocess.run 使用方式: subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False) 运行args…
Popen对象 poll() 判断是否执行完毕,执行完毕返回0,未执行完毕返回None terminate() 终止进程发送SIGTERM信号 raise 自定义返回错误 import time import subprocess class TimeoutError(Exception): pass def command(cmd, timeout=60): """执行命令cmd,返回命令输出的内容. 如果超时将会抛出TimeoutError异常. cmd - 要执行的命令…
如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess import call call(["ls", "-l"]) subprocess比system的优势在于它更灵活(您可以获得stdout,stderr,“真实”状态代码,更好的错误处理等). 在官方文档中也建议用subprocess替代使用os.system模块. 作…
已经知道,os.system可以方便的利用python代码执行一些像ping.ipconfig之类的系统命令,但却只能得到命令执行是否成功,不能获得命令成功执行后的结果,像下面这样: >>> s = os.system("ping www.baidu.com") 正在 Ping www.a.shifen.com [220.181.38.150] 具有 32 字节的数据: 来自 220.181.38.150 的回复: 字节=32 时间=18ms TTL=52 来自 22…
参数args 参数args可以是一个参数序列,也可以是一个单独的字符串.参数序列通常是首选的,因为它允许模块处理参数的转义和引号(例如,允许文件名中有空格). 如果传递参数序列,默认情况下,程序执行序列的第一个元素,后面所有的元素都作为参数. 如果传一个单独字符串,要么参数shell为True,要么字符串必须没有指定任何参数的可执行程序的名称. 所以,一般的搭配是参数序列和shell=False,字符串和shell=True. 参数shell shell参数设置是否在单独的shell中执行命令.…
[问题原因]:django工程中存在多个应用,每个应用都指定了对应的数据库.执行python manage.py migrate命令时没有指定数据库,将只初始化默认的default数据库. [解决方案]:针对每个应用的数据库分别执行python manage.py migrate --database=app_db_name…
optpars是python中用来处理命令行参数的模块,可以自动生成程序的帮助信息,功能强大,易于使用,可以方便的生成标准的,符合Unix/Posix 规范的命令行说明.使用 add_option() 来加入选项,使用 parse_args() 来解析命令行. add_option()中参数 第一个参数表示option的缩写,以单个中划线引导,例如-f.-d,只能用单个字母,可以使用大写;第二个参数表示option的全拼,以两个中划线引导,例如--file.--Opencv_version; 第…
1 现象描述 最近使用ssh批量执行命令(已经做了密钥互信了),脚本读取配置文件中的主机列表(内容为每行一台主机IP地址),然后执行,可是每次只是执行第一台,就退出循环了. 2 排查思路 由于脚本比较简单,只是读取主机,然后ssh而已,所以问题应该出现在ssh上 3 确定问题 搞不通ssh命令为什么会导致shell退出,最后上网搜了一下才找到答案. ssh命令在每次执行时,会读取所有的标准输入中的内容. 对于while循环,当按照如下方式使用时: while read Line do echo…
一.isinstance()和issubclass()命令 1.isinstance(对象,类型) 用来判定该对象是不是此类型或者说是该对象是不是此类的对象,返回结果为True和False,如图所示. 注:在python3中类和类型做了统一,都叫做类. 2.issubclass(对象(子类),对象(父类)) 用来判定该对象是不是该父类的子类,返回的结果为True或False,如图所示. 二.反射 1.什么是反射? 反射就相当于程序能检测,访问和修改他本身状态和行为的一种能力,相当于自省. 2.p…