【问题标题】:How to source environment file in python?如何在python中获取环境文件?
【发布时间】:2019-08-21 17:12:13
【问题描述】:

我正在尝试使用当前使用 shell 脚本实现的 Python 自动重启应用程序。在运行重启命令之前,我们需要获取一个在 shell 脚本中完成的 .sh 环境文件 . ./opt///**.sh。我正在使用 paramiko 和 exec_command 运行重新启动命令,这会引发库丢失的错误。所以我尝试了几种方法在python程序中获取这个环境文件,但都没有成功。

我尝试过的事情:

  1. stdin1,stdout1,stderr1 = ssh_client1.exec_command("../opt///**.sh")

  2. stdin1,stdout1,stderr1 = ssh_client1.exec_command("source /opt///**.sh")

  3. subprocess.call("/opt///**.sh", shell=True)

  4. os.system("./opt///**.sh")

  5. 如果我没记错的话,我从堆栈溢出中选择了以下内容 enter code herecommand = shlex.split("bash -c 'source /opt///**.sh'") enter code hereproc = subprocess.Popen(command, stdout = subprocess.PIPE) enter code herefor proc.stdout 中的行: enter code here(key, _, value) = line.partition("=") enter code hereos.environ[key] = value enter code hereproc.communicate()

使用 exec_command("/opt///start" )

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: python-3.7


    【解决方案1】:

    @Martin Prikryl:Execute multiple commands in Paramiko so that commands are affected by their predecessors

    我爱你!我正在使用 paramiko 向远程 ssh 编写一个 py 脚本,该脚本在运行应用程序重新启动命令之前获取本地环境文件。我为此头疼了两个多星期,直到我读到这篇文章。它就像一个魅力。谢谢!!

    解决方案: 每个 exec_command 多次在其自己的“shell”中执行。所以前面的命令对后面命令的环境没有影响。

    使用 && 组合命令。这样,前面的命令,在我的例子中是环境文件,对后面的命令有影响。

    stdin3,stdout3,stderr3 = ssh_client1.exec_command("./opt///env.sh && STOP")

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多