popen

Python调用PowerShell

拜拜、爱过 提交于 2020-03-15 06:30:43
需求 在server程序运行到一半或者要结束的时候希望它自动记录下当前server的状态,包括有多少个进程,每个占多少CPU,多少内存,系统还剩多少内存之类的。 想法 很简单,既然程序有python脚本,那么就通过python脚本开一个进程运行一些power shell的脚本,把结果写文件。 PowerShell 花了一天时间,啃了点文档,记录一些例子: 获取帮助:get-help get-help * get-help get-help -detailed 获取object的member get-process | get-member 获取进程列表然后输出用CPU时间最多的5个和最少的5个,并把结果写到 D:\a.txt get-process | sort-object CPU -descending | select-object -first 5 -last 5 | out-file D:\a.txt 输出到csv或者xml get-process | Export-Csv D:\ccc.csv get-process | Export-Clixml d:\ccc.xml 输出为HTML get-service | convertto-html -property name,status | out-file D:\ab.html 输出带颜色 write-host

subprocess模块

荒凉一梦 提交于 2020-03-14 15:43:19
  subprocess模块 允许你去创建一个新的进程让其执行另外的程序,并与它进行通信,获取标准的输入、标准输出、标准错误以及返回码等。 Popen类   subprocess模块中定义了一个Popen类,通过它可以来创建进程,并与其进行复杂的交互。 Popen类的构造函数如上图,其主要参数为:    args :是一个字符串或者序列类型(如:字符串、list、元组),用于指定进程的可执行文件及其参数。如果是一个序列类型参数,则序列的第一个元素通常都必须是一个可执行文件的路径。当然也可以使用executeable参数来指定可执行文件的路径。   stdin,stdout,stderr :分别表示程序的标准输入、标准输出、标准错误。有效的值可以是PIPE,存在的文件描述符,存在的文件对象或None,如果为None需从父进程继承过来,stdout可以是PIPE,表示对子进程创建一个管道,stderr可以是STDOUT,表示标准错误数据应该从应用程序中捕获并作为标准输出流stdout的文件句柄。   shell :如果这个参数被设置为True,程序将通过shell来执行。   env :它描述的是子进程的环境变量。如果为None,子进程的环境变量将从父进程继承而来。   cwd :用于设置子进程的当前目录。    universal_newlines :不同系统的的换行符不同

Can I pipe a io.BytesIO() stream to subprocess.popen() in Python?

删除回忆录丶 提交于 2020-03-14 06:58:16
问题 I'm trying to pipe a io.BytesIO() bytetream to a separate program using subprocess.popen() , but I don't know how or if this is at all possible. Documentation and examples are all about text and newlines. When I whip up something like this: import io from subprocess import * stream = io.BytesIO() someStreamCreatingProcess(stream) command = ['somecommand', 'some', 'arguments'] process = Popen(command, stdin=PIPE) process.communicate(input=stream) I get Traceback (most recent call last): File "

《自拍教程43》adb命令_一键读取硬件配置

ε祈祈猫儿з 提交于 2020-03-13 14:55:46
Android系统测试过程中, 比如接口测试,需要用到设备的iccid, 或者uuid, 车载测试需要用到VIN号(车辆唯一标识号), 4G测试等需要设计IMEI号等设备配置字参数等, 我们还可以读取到设备的分辨率,emmc磁盘容量, cpu型号,内存大小等,这些硬件配置信息, 可以辅助我们做测试,如何读取到这些硬件信息呢? 准备阶段 adb shell getprop命令,可以获取到Android设备iccid, imei,emmc磁盘容量等 adb shell wm size 可以读取到分辨率 adb shell cat /proc/cpuinfo 可以读取到cpu相关的信息 adb shell cat /proc/meminfo 或adb shell free 可以读取到内存相关的信息 os.popen()函数可以快速调用以上命令并获取输出字符串。 python的re正则表达式可以轻易地进行数据匹配,查找等强大的字符串处理 getprop命令介绍 getprop命令是android自带的动态获取系统属性参数, 包括了软件,硬件属性参数等,其有好几种执行方式,包括: 用法一: getprop 获取全部系统属性参数, 比如魅族Note5的 getprop我们保存为txt文件(可点击下载) 用法二: getprop 属性名,可获取某个指定属性的具体参数信息,比如: 相对应的

How to detect if shell failed to execute a command after popen call? Not to confuse with the command exit status

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-03 05:50:26
问题 Recently I start doing some tests for my python scripts. And for some awkward reason, the module that runs python script and checks its output is written in C with addition of some other languages. This way is more convinient for me to use for now. The single test runs with the below code: FILE *fd = NULL; fd = popen("cmd", "r"); if(NULL == fd){ fprintf(stderr, "popen: failed\n"); return 1; } fprintf(stderr, "res = %d: %s\n", errno, strerror(errno)); int res = pclose(fd); fprintf(stderr, "res

How to detect if shell failed to execute a command after popen call? Not to confuse with the command exit status

不羁岁月 提交于 2020-03-03 05:48:28
问题 Recently I start doing some tests for my python scripts. And for some awkward reason, the module that runs python script and checks its output is written in C with addition of some other languages. This way is more convinient for me to use for now. The single test runs with the below code: FILE *fd = NULL; fd = popen("cmd", "r"); if(NULL == fd){ fprintf(stderr, "popen: failed\n"); return 1; } fprintf(stderr, "res = %d: %s\n", errno, strerror(errno)); int res = pclose(fd); fprintf(stderr, "res

python中调用cmd

送分小仙女□ 提交于 2020-02-27 18:59:27
1. 使用os.system("cmd") 这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息。使用前需要import os。 os.system("ls") 2. 使用Popen模块产生新的process 现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值了。 Popen原型是: 1 subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=Fal 参数bufsize:指定缓冲。我到现在还不清楚这个参数的具体含义,望各个大牛指点。 参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行的程序

append subprocess.Popen output to file?

ε祈祈猫儿з 提交于 2020-02-27 14:11:25
问题 I can successfully redirect my output to a file, however this appears to overwrite the file's existing data: import subprocess outfile = open('test','w') #same with "w" or "a" as opening mode outfile.write('Hello') subprocess.Popen('ls',stdout=outfile) will remove the 'Hello' line from the file. I guess a workaround is to store the output elsewhere as a string or something (it won't be too long), and append this manually with outfile.write(thestring) - but I was wondering if I am missing

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

时间秒杀一切 提交于 2020-02-24 20:57:58
问题 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: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