python自动部署filebeat

公司一个自动部署的py脚本,执行完会自动部署filebeat。
问题:
subprocess.Popen返回为0说明该命令执行成功对吗。
为什么我手动执行这个脚本的时候返回为0,发现自动部署成功了
把这个脚本丢给程序自动执行返回也是0,但是却没部署成功
而且执行的用户和权限都是一样的,我真是懵了,有什么方法可以替代subprocess.Popen吗,我换种方式看看

img

  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:python subprocess.Popen系列问题
  • 除此之外, 这篇博客: python subprocess调用外部进程中的 Popen方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import subprocess, sys
    
    p1 = subprocess.Popen('ping 127.0.0.1'.split(),
                          stdin=subprocess.PIPE,
                          stdout=subprocess.PIPE,
                          stderr=subprocess.PIPE)
    # Popen构造一个新进程,启动其它程序,第一个参数由元组或列表提供,包括了命令和命令的参数。
    # stdin、stdout 输入输出的标准。
    
    # p1.wait()       # 如果此处没有调用wait()方法,那 下面的 print(11111)是在p1执行时,马上接着执行的。
    # print(11111)    # 如果调用了 wait()方法,则在p1结束后,再运行 print()。
    
    output, err = p1.communicate()       # communicate()控制输入输出,结果返回一个元组(stdout, stderr)。
    sys_encode = sys.stdout.encoding   # 获取操作系统的默认编码。
    print('p1', output.decode(sys_encode))    # 获取输出的内容,因为是字节码,所以得得重新解码。
    print('Exit code:', p1.returncode)      # p.returncode ==》p的退出状态码。
    
    p = subprocess.Popen('ping 126.com'.split())
    print(p.poll())  # poll 查看进程是否还在运行,如果还在运行返回None。如果正常结束返回0,错误中止通常为1。
    print(p.wait())  # 等待进程结束,可以传入一个timeout的参数=等待的时长。返回进程的结束状态码。和join类似。
    
    打开其他程序
    p = subprocess.Popen(['程序A', '文件B'])   # 即用 程序A 来打开 文件B。
    p = subprocess.Popen(['start', '文件B'], shell=True)    # 调用系统默认程序打开 文件B, start是windows的shell命令,其他系统有open,see。
    
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632