subprocess

Python - subprocess.Popen - ssh -t user@host 'service --status-all'

不羁的心 提交于 2020-02-24 20:57:48
问题 I've read a bunch of examples but none of them work for this specific task. Python code: x = Popen(commands, stdout=PIPE, stderr=PIPE, shell=True) print commands stdout = x.stdout.read() stderr = x.stderr.read() print stdout, stderr return stdout Output: [user@host]$ python helpers.py ['ssh', '-t', 'user@host', ' ', "'service --status-all'"] usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11] [-i

Python - subprocess.Popen - ssh -t user@host 'service --status-all'

隐身守侯 提交于 2020-02-24 20:56:13
问题 I've read a bunch of examples but none of them work for this specific task. Python code: x = Popen(commands, stdout=PIPE, stderr=PIPE, shell=True) print commands stdout = x.stdout.read() stderr = x.stderr.read() print stdout, stderr return stdout Output: [user@host]$ python helpers.py ['ssh', '-t', 'user@host', ' ', "'service --status-all'"] usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11] [-i

Python 使用OS模块调用 cmd

自闭症网瘾萝莉.ら 提交于 2020-02-24 18:34:34
在os模块中提供了两种调用 cmd 的方法, os.popen() 和 os.system() os.system(cmd) 是在执行command命令时需要打开一个终端,并且无法保存command命令的执行结果。 os.popen(cmd,mode) 打开一个与command进程之间的管道。返回值是一个文件对象,可以读或者写(由mode决定,默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。 os.system() 定义: def system(*args, **kwargs): # real signature unknown """ Execute the command in a subshell. """ pass 简单的来说就是在shell中执行command命令 示例: (venv) C:\Users\TynamYang>python Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> >>> import os >>> cmd

Python subprocess.Popen doesn't take text argument

我与影子孤独终老i 提交于 2020-02-24 10:45:48
问题 According to the Python 3 documentation for subprocess.Popen, the class constructor takes an optional argument text (which is supposed to control whether the file objects stdin, stdout and stderr are opened in text mode). However, when I try setting text=true upon construction of a Popen object, I get the error Failed: TypeError: __init__() got an unexpected keyword argument 'text' and when I look in the source code (I'm using Python 3.6.4), the constructor takes no argument text . What is

Python subprocess.Popen doesn't take text argument

只谈情不闲聊 提交于 2020-02-24 10:45:21
问题 According to the Python 3 documentation for subprocess.Popen, the class constructor takes an optional argument text (which is supposed to control whether the file objects stdin, stdout and stderr are opened in text mode). However, when I try setting text=true upon construction of a Popen object, I get the error Failed: TypeError: __init__() got an unexpected keyword argument 'text' and when I look in the source code (I'm using Python 3.6.4), the constructor takes no argument text . What is

Can't execute msg (and other) Windows commands via subprocess

帅比萌擦擦* 提交于 2020-02-23 10:31:50
问题 I have been having some problems with subprocess.call() , subprocess.run() , subprocess.Popen() , os.system() , (and other functions to run command prompt commands) as I can't seem to get the msg command to work. import subprocess subprocess.call("msg * Hey",shell=True) In theory, this should send "Hey" to every computer on the network unfortunately, this isn't running at all and I'm not quite sure why. I can run it on cmd successfully, but can't get it to work from Python. I'd love to hear

Python 之进程

倾然丶 夕夏残阳落幕 提交于 2020-02-22 15:08:59
要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。 Unix/Linux操作系统提供了一个 fork() 系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是 fork() 调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。 子进程永远返回 0 ,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用 getppid() 就可以拿到父进程的ID。 Python的 os 模块封装了常见的系统调用,其中就包括 fork ,可以在Python程序中轻松创建子进程: import os print('Process (%s) start...' % os.getpid()) # Only works on Unix/Linux/Mac: pid = os.fork() if pid == 0: print('I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid())) else: print('I (%s) just created a child process (%s).' % (os

浅谈CMDB

◇◆丶佛笑我妖孽 提交于 2020-02-20 20:43:33
CMDB和运维自动化 一、运维 运维,指的是对已经搭建好的网络,软件,硬件进行维护。运维领域也是细分的,有硬件运维和软件运维 硬件运维 主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理设备的维护 软件运维 主要包括系统运维和应用运维,系统运维主要包括对OS,数据库,中间件的监控和维护,这些系统介于设备和应用之间,应用运维主要是对线上业务系统的运维 讨论的主要是软件运维的自动化,包括系统运维和应用运维的自动化 二、软件运维 传统运维 日常工作繁琐 日常运维工作是比较繁琐的,研发同学会经常需要到服务器上查日志,重启应用,或者是说今天上线某个产品,需要部署下环境。这些琐事是传统运维的大部分工作 应用运行环境不统一 在部署某应用后,应用不能访问,就会听到开发人员说,在我的环境运行很好的,怎么部署到测试环境后,就不能用了,因为各类环境的类库不统一 还有一种极端情况,运维人员习惯不同,可能凭自己的习惯来安装部署软件,每种服务器上运行软件的目录不统一 运维及部署效率低下 想想运维人员需要登陆到服务器上执行命令,部署程序,不仅效率很低,并且非常容易出现人为的错误,一旦手工出错,追溯问题将会非常不容易 无用报警信息过多 经常会收到很多报警信息,多数是无用的报警信息,造成运维人员经常屏蔽报警信 另外如果应用的访问速度出了问题,总是需要从系统、网络、应用、数据库等一步步的查找原因

运维自动化和CMDB实现方法

久未见 提交于 2020-02-20 05:43:44
CMDB和运维自动化 一、运维 运维,指的是对已经搭建好的网络,软件,硬件进行维护。运维领域也是细分的,有硬件运维和软件运维 硬件运维 主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理设备的维护 软件运维 主要包括系统运维和应用运维,系统运维主要包括对OS,数据库,中间件的监控和维护,这些系统介于设备和应用之间,应用运维主要是对线上业务系统的运维 讨论的主要是软件运维的自动化,包括系统运维和应用运维的自动化 二、软件运维 传统运维 日常工作繁琐 日常运维工作是比较繁琐的,研发同学会经常需要到服务器上查日志,重启应用,或者是说今天上线某个产品,需要部署下环境。这些琐事是传统运维的大部分工作 应用运行环境不统一 在部署某应用后,应用不能访问,就会听到开发人员说,在我的环境运行很好的,怎么部署到测试环境后,就不能用了,因为各类环境的类库不统一 还有一种极端情况,运维人员习惯不同,可能凭自己的习惯来安装部署软件,每种服务器上运行软件的目录不统一 运维及部署效率低下 想想运维人员需要登陆到服务器上执行命令,部署程序,不仅效率很低,并且非常容易出现人为的错误,一旦手工出错,追溯问题将会非常不容易 无用报警信息过多 经常会收到很多报警信息,多数是无用的报警信息,造成运维人员经常屏蔽报警信 另外如果应用的访问速度出了问题,总是需要从系统、网络、应用、数据库等一步步的查找原因

python- 粘包 struct,socketserver

隐身守侯 提交于 2020-02-19 08:31:33
黏包 黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) 1 res=subprocess.Popen(cmd.decode('utf-8'), 2 shell=True, 3 stderr=subprocess.PIPE, 4 stdout=subprocess.PIPE) 5 6 的结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdout.read()读出的就是GBK编码的,在接收端需要用GBK解码 7 8 且只能从管道里读一次结果 9 10 注意 注意 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包。 基于tcp协议实现的黏包 1 #_*_coding:utf-8_*_ 2 from socket import * 3 import subprocess 4 5 ip_port=('127.0.0.1',8888) 6 BUFSIZE=1024 7 8 tcp_socket_server=socket(AF_INET,SOCK_STREAM) 9 tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 10 tcp_socket_server.bind(ip_port)