使用subprocess执行复杂的shell命令

import subprocess
cmd1=['ifconfig','-a']
cmd2=['grep','inet']
cmd3=['grep', '-v', '127.0.0.1']
cmd4=['grep', '-v', 'inet6']
cmd5=['awk','{print $2}']
cmd6=['tr','-d','addr:']
cmd7=['head','-n','1']

def exec_cmd(*args):
    for index,cmd in enumerate(args):
        if index == 0:
            p=subprocess.Popen(cmd,stderr=subprocess.PIPE,stdout=subprocess.PIPE,
                               shell=False)
        else:
            p=subprocess.Popen(cmd,stdin=p.stdout,stderr=subprocess.PIPE,
                               stdout=subprocess.PIPE,shell=False)
    ret = p.communicate()[0]
    print(ret.decode().split()[0])


exec_cmd(cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7)

注意:这个没有考虑有docker存在的情况,只是简单的演示subprocess执行复杂命令的使用

posted on 2020-12-25 09:51  松风新雪初霁  阅读(65)  评论(0)    收藏  举报