gpt4 book ai didi

python - 在 python 中执行 bash 脚本

转载 作者:行者123 更新时间:2023-11-28 23:01:19 25 4
gpt4 key购买 nike

我创建了一个 expect 脚本,当它被执行时,ssh 连接到服务器并执行一系列命令。伪代码如下所示:

#!/usr/bin/expect
spawn ssh usr@myip
expect "password:"
send "mypassword\n";
send "./mycommand1\r"
send "./mycommand2\r"
interact

当从 bash shell ($ ./myscript.txt) 执行时,代码执行良好。我现在想做的是在 python 文件中有一行以与 bash shell 相同的方式运行脚本中的命令。伪代码如下所示:

import subprocess
def runmyscript():
subprocess.call("myscript.txt", executable="expect", shell=True)
def main():
run = runmyscript():
if __name__ == '__main__': main()

我已将 myscript.txt 脚本文件放在与我的 runmyscript.py 文件相同的目录中,但是当我运行 python 文件时,我收到错误:

WindowsError: [Error 2] The system cannot find the file specified

我已经通读了 documentation on the python.org site ,但无济于事。有没有人有从 .py 代码中执行 bash 脚本的巧妙解决方案?

解决方案:此代码适用于我。

child = subprocess.Popen(['bash', '-c', './myscript.txt'], stdout = subprocess.PIPE)

使用此代码将 Expect 文件调用到 ssh 并从 .py 文件向服务器发送命令 - 如果您在机器上构建 pycrypto/paramiko 时遇到问题,这是一个有用的解决方案。

最佳答案

这是您期望脚本的 python 实现:

import paramiko

user = "user"
pass = "pass"
host = "host"

client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, port=22, username=user, password=pass)
client.exec_command("./mycommand1")
client.exec_command("./mycommand2")
client.close()

关于python - 在 python 中执行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11147548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com