当前位置: 首页 > news >正文

【代码模板】如何用Python脚本执行shell命令并且获取命令的输出?(subprocess.Popen,subprocess.check_output)

背景

用python脚本文件模拟一个shell命令执行,并且把输出打印出来。
适用场景比如在服务器端是Python脚本,需要执行shell命令,并且把shell命令的执行输出结果获取出来。本文记录一个使用文件作为输出的传输方式,提供一个临时实验的代码模板

代码模板

原理:将cmd用system命令执行,并把输出放在本地目录,然后用cat打印出收集的信息。

import sys
from urllib.parse import quote
import os
import pwdimport subprocess#command = [""]
#command = command + sys.argv
cmd = sys.argv[1].split()
command = list(cmd)if "man" == command[0]:#print("yes")grepcmd=" | head -n 150"
else:grepcmd=""try:os.system(f"{sys.argv[1]} {grepcmd} > ./pyshelloutput.log")command=("cat", "./pyshelloutput.log")process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #, shell=True)#out,err = process.communicate()#print(process.stdout)#out = subprocess.check_output(grepcmd, stdin=process.stdout)out,err = process.communicate()out = out.decode()
except Exception as e:out=eout = "# \"" + str(command) + "\"\n\n" + str(out).replace("\\n", "\n\n") # need 2 \n ding markdown can see
print(str(out))

坑:

  • subprocess.Popen直接执行命令很多命令没有权限

用法

python3 cmd.py "ps -u"

效果:
在这里插入图片描述


http://www.mrgr.cn/news/53622.html

相关文章:

  • 【Hadoop】hadoop的路径分不清?HDFS路径与本地文件系统路径的区别
  • Android 应用包名的定义 pm list packages查询的包名
  • 展会亮点回顾|HMS汽车工业通信解决方案
  • 某ai gpt的bug
  • JSON日志处理 | 基于SparkSql实现
  • 技术经济学·技术经济分析指标体系与基本原则
  • TryHackMe 第8天 | Web Fundamentals (三)
  • 如何安全运行别人上传的Python代码?
  • 题目 3161: 蓝桥杯2023年第十四届省赛真题-子矩阵
  • kubernetes(三)
  • 勤于奋身体倒下还是上来回答粉丝关于Adsense赚美金
  • 设计模式之设计模式分类
  • ESP32-IDF 通用定时器 GPTimer
  • LeetCode题练习与总结:拼接最大数--321
  • 小白学大模型 RAG:GraphRAG 概念、组成和流程,看完这一篇你就懂了!!
  • 出手!快手可灵开源版,AI视频生成整合包!
  • 84.【C语言】数据结构之顺序表的头部插入和删除
  • 医疗领域的RAG技术:如何通过知识图谱提升准确性
  • vb操作电子表格 文件夹内多表格 提取数据 在生成一个新表格
  • Leetcode—192. 统计词频【中等】(Shell)
  • 【树莓派】树莓派搭建个人服务器
  • Qt之QObject
  • Java并发编程深度解析:从基础到实战
  • Shades of Gray 算法
  • 问:MySQL数据库存储引擎及对应的锁有哪些?
  • ​AI Sketchnotes Generator——解锁创意表达的新方式