python 执行shell命令

注:python3.X模块中以废弃commands该模块,使用subprocess模块在本文下面增加解说

本篇介绍如何使用python在cmd上执行shell命令
用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果

一:通过os模块
第一种,只执行命令,但是没有返回值:运用os模块

import os
os.system("命令")

这种只执行系统命令,,但是不获取返回值,不是很推荐

可以获取到返回值:

result = os.popen('命令')
res = result.read()
for line in res.splitlines():print line

二:通过commands的函数
需要先引入commands模块
1.commands.getouput(‘shell command’)
执行shell命令,返回结果(string类型)

cmd = "curl -s \"127.0.0.1:7070/api/v3/column/m.id,m.ip?m.sr.id=sls-backend-server.FuxiServiceSlsShennongWorker%23\"|grep m.ip|head -n 1 |awk '{print $2}'"
dockervm_ip = commands.getoutput(cmd)
print(dockervm_ip)

结果:

getoutput直接返回命令的结果,建议使用该命令

2.commands.getstatus(‘命令’)
执行shell命令,该命令返回的的是元组tuple,包含两个元素(status,result),status为int类型,result为string类型
status表示统计的状态,result表示命令的结果数据

cmd="curl -s \"127.0.0.1:7070/api/v3/column/m.id,m.ip?m.sr.id=sls-backend-server.FuxiServiceSlsShennongWorker%23\""
dockervm_ip = commands.getstatusoutput(cmd)
print dockervm_ip

结果:

从结果中可以看出,返回了统计的数据status,还有python中的换行符号等,若是有需求可以使用这条命令

= = = = = = = = = = = = = = = = = = 分割线 = = = = = = = = = == = = = = = = = = = = = = = =

subprocess

本次更新2020.09.11号,
之前使用commands的时候是在我们公司内网线上环境使用的,我们公司内网默认使用的是python2.x版本,所以可以正常使用commands模块,但是前两天我使用自己本地环境(python3.x)时,发现没有commands这个模块,去查了下才发现已经被subprocess模块替代了。
suborocess模块中常用的函数:

函数 描述
subprocess.run() Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。
subprocess.call() 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)。
subprocess.check_call() Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(…, check=True)。
subprocess.check_output() Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常。
subprocess.getoutput(cmd) 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)。
subprocess.getstatusoutput(cmd) 执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()。

subprocess.getoutput()和subprocess.getstatusoutput()函数是来自Python 2.x的commands模块的两个遗留函数。它们隐式的调用系统shell,并且不保证其他函数所具有的安全性和异常处理的一致性。另外,它们从Python 3.3.4开始才支持Windows平台。

subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值
subprocess 模块首先推荐使用的是它的 run 方法,更高级的用法可以直接使用 Popen 接口。相关的介绍可以看下菜鸟

python执行cmd系统命令获取返回值的几种方式相关推荐

  1. python执行系统命令后获取返回值的几种方式集合

    第一种情况 os.system('ps aux') 执行系统命令,没有返回值 第二种情况 result = os.popen('ps aux') res = result.read() for lin ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  3. Mybatis使用注解的方式执行存储过程并获取返回值

    开始 通过搜索引擎搜索了获取返回值的Mybatis注解配置方式,但是都搜索不到,都是xml配置方式,尝试自己写出来了. 过程 首先要有一个存储过程,in,out值. 配置mapper: 部分代码: / ...

  4. 拿到JS异步函数返回值的几种方式

    在我们的编码过程中,为了满足业务需求,经常需要获取JS异步函数的返回值.今天就来汇总一下拿值的几种方式. 1,通过回调函数的方式来拿返回值,这个想必大家不会陌生 function getSomethi ...

  5. SqlSugar 执行存储过程和获取返回值

    根据官方文档 如下: //简单用法 var dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",new{name=& ...

  6. keil5函数 默认返回值_python实用技巧——获取部分返回值的4种方式

    喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! python的函数支持返回多个值.返回多个值时,默认以tuple的方式返回. 例如,下面两个函数的定义是完全 ...

  7. IDEA自动补全返回值的三种方式

    一. 前言 平常在编码的过程中,可能需要调用第三方Api接口,这个过程中可能涉及到不太熟悉第三方Api接口的返回值类型,有可能是String.int.Object.void 等等这些,为了方便快速编码 ...

  8. shell中循环执行某个进程获取返回值,并循环执行直到函数出错

    测试进程test的代码 #include <stdio.h>int main(){return 0; } 编译出测试程序: gcc test.c -o test 测试脚本 #!/bin/s ...

  9. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

最新文章

  1. 如何获取iOS设备的IP地址
  2. oracle ipc message,【案例】Oracle RAC IPC send timeout error导致RAC的节点挂起解决办法
  3. 无线呼叫服务器对码设置,楼层呼叫器对码方式种类
  4. js数组操作各种方法
  5. Java回文数.如12321,123454321(5个数)
  6. imx6ull EMMC和NABD 的移植注意事项,差别
  7. Python数据可视化的四种简易方法 1
  8. linux系统多大分区,linux系统中fdisk最大能认到多大分区
  9. hua图软件 mac_sai mac中文版|sai绘画软件 For Mac下载 v3.0 官方版 - 121苹果网
  10. 电子元件-双向触发二极管与可控硅
  11. 89C51单片机内部结构深度解析
  12. UNITY个人版设置深色主题
  13. js:简单的盒子碰撞
  14. 微信小程序之页面样式以及背景图片显示问题
  15. 记一次简单高效的吸血鬼算法
  16. 运动控制器多工位位置比较输出在转盘式视觉筛选设备中的应用
  17. 北华航天工业学院计算机如何,北华航天工业学院的实力怎么样?如何评价这所学校?...
  18. 11 万字的字节码编程系列合集放送(ASM、Javassist、Byte-buddy、Javaagent)
  19. HTML打造动漫人物,好莱坞顶级制作联袂打造!《和平精英》首部官方角色·吉莉 动画短片发布...
  20. 旧版RTSP协议网页视频无插件直播EasyNVR视频平台为什么无法播放H264编码视频?

热门文章

  1. Python二进制、八进制、十六进制数字的表示和转换
  2. 厨房装修如何选厨具?极家家居好不好?
  3. 转帖]牛市”炒股必备工具
  4. IBM出资450万元收购慧点科技9%股份
  5. elasticsearch :unassigned错误解决
  6. Huffman霍夫曼树,霍夫曼编码
  7. 玫琳凯中国开始实行混合办公模式;洲际酒店集团2021年大中华区新开业88家酒店;LG电子决定撤出太阳能面板业务 | 美通社头条...
  8. 【华人学者风采】夏幼南 乔治亚理工学院
  9. 【考古】遥感考古与物探考古介绍
  10. 关于安卓手机开机自启动APP无法成功的问题