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 ...
随机推荐
- linux chown 与 chmod 命令的使用
本文为博主原创,未经允许不得转载: 最近在做 linux 系统安全管理检查操作,频繁的用到了 chown 与 chmod 两个命令,觉得有必要对着两个命令总结一下. 一. chown 命令: 1. 设 ...
- git仓库之gogs安装(docker版/二进制版)
二进制安装gogs tar zxf gogs_0.11.91_linux_amd64.tar.gz -C /data/gogs chown -R www.www /data/gogs su - www ...
- Linux-关机重启和注销
- [转帖]hex,base64,urlencode编码方案对比
https://www.jianshu.com/p/4d701c09d44e 原创:打码日记,欢迎分享,转载请保留出处. 简介 在工作过程中,我们慢慢会了解到hex.base64.urlencode这 ...
- [转帖]VMware常用软件ISO下载汇总(2023年6月更新)
https://www.dinghui.org/vmware-iso-download.html#vcsa-patch 请访问 www.dinghui.org 获得最新版,文章将持续更新.[最后更新时 ...
- echarts多条折线图hover的时候添加单位
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- echarts饼图中央自定义文字
var option = { tooltip: { trigger: 'item' }, legend: { top: '5%', left: 'center' }, //中央自定义文字 title: ...
- 【学到一个小技巧】context.WithValue 中的 key 可以是个空对象
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 从 netpoll 库看到这段代码: type connk ...
- 吾爱破解 2023 春节解题领红包之 Web 题解
(图作者 | 吾爱破解@Ps出来的小赵) 吾爱破解每年都有个解题领红包活动,今年也不例外,需要我们使出看家逆向本领来分析内容获得口令红包,根据难度等级不同会获得不同数量的吾爱币,活动持续到元宵节结束. ...
- 自动化部署实例(donetcore GitLab CICD )
主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 .net core 项目,来带小伙伴们感受一下自动化的魅力,从此告别手动发布. 准备工作 创 ...