Python——检测Popen返回的stdOutMsg中是否是否包含指定字符,并提取指定位置的信息
问题背景:
Python 中经常会需要通过subprocess.PoPen函数下发Shell Command,与操作系统进行交互。一些情况下,还需要分析shell command的返回值,提取有用信息。
1、首先给出subporess.Popen下发shell command的接口示例:
def FilterPrintable(input_string=""):
printable = set(string.printable)
if isinstance(input_string, bytes):
try:
input_string = input_string.decode("utf-8", errors="replace")
except Exception as ex:
raise Exception(ex)
obj_filter = filter(lambda x: x in printable, input_string)
output_string = ''.join(c for c in obj_filter)
return output_string
def SendShellCommand(self, shellcmd="", timeOut=0):
try:
p = subprocess.Popen(shellcmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, universal_newlines=True)
if timeOut:
(stdOut, stdErr) = p.communicate(timeOut)
else:
(stdOut, stdErr) = p.communicate()
stdOutMsg = self.FilterPrintable(stdOut)
stdErrMsg = self.FilterPrintable(stdErr)
except subprocess.TimeoutExpired:
raise subprocess.TimeoutExpired
except Exception as ex:
raise Exception(ex)
if p.stdout:
p.stdout.close()
if p.stdErr:
p.stdErr.close()
try:
p.kill()
except OSError:
pass
return p.returncode, stdOutMsg, stdErrMsg
2、举例说明如何解决背景中所述 的问题:
def CheckFioProcess():
cmdStr = "ps -elf | grep fio"
returncode, stdOutMsg, stdErrMsg = self.SendShellCommand(cmdStr)
fioPidList = []
stdOutMsgList = stdoutMsg.spilt("\n")
for stdMsg in stdOutMsgList:
if stdMsg.find("fio") != -1:
index1 = stdMsg.find("root")
subStdoutMsg = stdMsg[index1+3:]
fioPid = int(re.findall("\d+", subStdoutMsg))[0])
fioPidList .append(fioPid)
else:
continue
return fioPidList
Python——检测Popen返回的stdOutMsg中是否是否包含指定字符,并提取指定位置的信息的更多相关文章
- sql-将字符串按指定字符分割插入指定表中
CREATE PROC SPLIT( @STR VARCHAR(MAX), --截取字符串 ), --截取字符 ) --存放表名 ) AS BEGIN ) IF(OBJECT_ID(@TABLE) I ...
- Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换
[1]a=[8,13,11,6,26,19,24]1)请输出列表a中的奇数项2)请输出列表a中的奇数 解:1) a=[8,13,11,6,26,19,24] print a[::2] Result:& ...
- 使用python检测一个设备是否ping的通
使用python检测一个设备是否ping的通 一,subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并 ...
- python检测服务器是否ping通
好想在2014结束前再赶出个10篇博文来,~(>_<)~,不写博客真不是一个好兆头,至少说明对学习的欲望和对知识的研究都不是那么积极了,如果说这1天的时间我能赶出几篇精致的博文,你们信不信 ...
- python检测404页面
某些网站为了实现友好的用户交互,提供了一种自定义的错误页面,而不是显示一个大大的404 ,比如CSDN上的404提示页面如下: 这样虽然提高了用户体验,但是在编写对应POC进行检测的时候如果只根据返回 ...
- Python 基础知识(持续更新中)
内置数据类型: 整型 浮点型 字符串 布尔值 空值 None 列表 list 元组 tuple 字典 dict 集合 set ...
- Python分析离散心率信号(中)
Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...
- Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出
从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...
- Android——检测TXT文件中是否含有双字节字符
在读取双字节字符时,主要涉及到编码的选取: public static boolean isRightfulTXT(File f) { // TODO Auto-generated method st ...
- python3.6 + selenium2.53.1 查询数据库并将返回的内容中每一行的内容转换成class对象
环境: win10 python3.6 selenium2.53.1 准备工作:先安装pymysql python2.x链接数据库使用MySQLdb,而python3.x链接数据库使用pymysql ...
随机推荐
- 你不知道的JavaScript APIs
前言 在本文中,将介绍一些鲜为人知但却非常有用的API,如: Page Visibility API Web Share API Broadcast Channel API International ...
- Vue之将前端的筛选结果导出为csv文件
有导入就有导出哈!这里继导入之后记录一下导出的实现过程. 1.按钮部分: <el-button class="filter-item" style="margin- ...
- java - 创建文件
package practice; import java.io.File; import java.io.IOException; public class CreateFile { public ...
- [转帖]5 分钟学会写一个自己的 Prometheus Exporter
https://cloud.tencent.com/developer/article/1520621学习一下怎么搭建呢. 去年底我写了一个阿里云云监控的 Prometheus Exporter, ...
- [转帖]time_zone 是怎么打爆你的MySQL的
https://plantegg.github.io/2023/10/03/time_zone%E6%98%AF%E6%80%8E%E4%B9%88%E6%89%93%E7%88%86%E4%BD%A ...
- [转帖]Use TiFlash
https://docs.pingcap.com/tidb/v5.0/use-tiflash 8 Contributors After TiFlash is deployed, data replic ...
- [转帖]TiDB 热点问题处理
TiDB 热点问题处理 本文介绍如何定位和解决读写热点问题. TiDB 作为分布式数据库,内建负载均衡机制,尽可能将业务负载均匀地分布到不同计算或存储节点上,更好地利用上整体系统资源.然而,机制不是万 ...
- [转帖]浅谈Redis大Key与热Key
https://www.cnblogs.com/jelly12345/p/16424080.html 如何定义大 Key 和 热 Key 如何定义大 Key 如何定义热 Key 大 Key 和 热 K ...
- 获取特定端口java进程的路径的shell脚本
获取特定端口java进程的路径的shell脚本 ll /proc/`lsof -i:5200 |grep ^java |awk '{print $2}' |uniq` |grep cwd |cut - ...
- ARC150D - Removing Gacha (树上期望)
Link 题意: 给一棵 \(n\) 个节点的树,称一个点是好的,当且仅当它到根的路径上都是黑色(包括自己).每次在不好的节点中随机选一个把它涂成黑色(不管原来它是否是白的),直到所有点都是好的为止. ...