Python模块·Subprocess子进程

一、Subprocess模块的定义:

  • subprocess模块主要用于执行系统命令
  • subprocess模块允许你产生新的进程,并获得它们的返回状态
  • 通俗地说就是通过这个模块,你可以在 Python 的代码里执行操作系统级别的命令,比如ifconfigdu -shlsecho 等等

补充:

  • subprocess模块虽然可以支持所有的 linux 命令,但不可乱用,放弃其他的模块
  • 不同于shutilos模块subprocess模块编写的代码,不具有跨平台性,不能在 windows,mac 等系统使用

二、常用方法:subprocess.run()

  • command是命令
  • parameter是命令所需要的参数
分类 函数 / 方法 说明
运行
无参命令
subprocess.run(["command"]) 中括号可加可不加
subprocess.run(“command”,Shell=True) Shell=True可加可不加
运行
有参命令
subprocess.run(["command",“parameter”]) 必须添加中括号,参数可以为多个
subprocess.run(“command parameter”,Shell=True) 可以将命令完整写入
但是需要添加Shell=True来支持shell语法

三、run 方法返回值:

  • run方法返回值:CompletedProcess(args='..', returncode=0)
  • args:run函数执行的命令
  • returncode:类似于$?,执行成功返回0,否则为非0
>>> subprocess.run('ls ..', shell=True)  # 最后一行为返回值
day01  day02  day03  day04
CompletedProcess(args='ls ..', returncode=0)

# run方法查看上一级目录下的内容,赋值给变量result
>>> result = subprocess.run('ls ..', shell=True)
day01  day02  day03  day04

# 查看变量result的值,为run()的返回值
>>> result
CompletedProcess(args='ls ..', returncode=0)

# 查看result中args列表的内容,为linux命令
>>> result.args
'ls ..'

# 查看result中returncode的值,为0;returncode 为状态码
# 上一条命令执行成功,结果为0;反之,结果为非零值
>>> result.returncode
'0'

四、实操训练题:

需求:

  • 编写ping函数
  • 用于测试远程主机的联通性
  • ping 通显示:x.x.x.x:up
  • ping 不通显示:x.x.x.x:down
# 判断是否可以ping通的函数
def check_ping(ip_addresses):
    data = subprocess.run(f"ping -c 2 {ip_addresses} &> /dev/null", shell=True)
    if data.returncode == 0:
        return True
    return False

# 打印ping list 的结果状态
def check_pings(ip_lists):
    for ip in ip_lists:
        if check_ping(ip):
            print(ip, "up")
        else:
            print(ip, "down")

# 初始化
if __name__ == '__main__':
    ip_list = ["192.168.99.100", "192.168.88.10", "192.168.88.210",
               "192.168.88.100", "192.168.88.5", "192.168.88.15",
               "www.baidu.com", "www.yahu.com", "www.douyin.com",
               "www.qq.com", "www.163.com", "www.wangyi.com"]
    check_pings(ip_list)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容