【发布时间】:2012-06-25 00:09:38
【问题描述】:
我正在尝试指示我的 Python 安装执行 Expect 脚本“myexpect.sh”:
#!/usr/bin/expect
spawn ssh usr@myip
expect "password:"
send "mypassword\n";
send "./mycommand1\r"
send "./mycommand2\r"
interact
我使用的是 Windows,因此无法将 Expect 脚本中的行重写为 Python。有什么建议?有什么东西可以像“./myexpect.sh”那样从 bash shell 运行吗?
我在子进程命令方面取得了一些成功:
subprocess.call("myexpect.sh", shell=True)
我收到错误:
myexpect.sh 不是有效的 Win32 应用程序。
我该如何解决这个问题?
【问题讨论】:
-
...您是在问如何在没有 bash 的情况下在 Windows 上运行 bash 脚本?我什至不知道 Python 是从哪里来的。此外,您可能应该为您的 shell 脚本提供 .txt 扩展名(.sh 如果有的话)
-
@MateuszKowalczyk 在某种意义上是的:我想从 .py 文件自动运行此脚本 - 当我运行 .py 文件时,将调用期望脚本并作为.py 文件的序列。
-
所以看起来您根本没有在寻找与 python 相关的解决方案(除了它是由 Python 控制的事实)。您只需要一个能够读取期望脚本并执行它的 Windows 上的程序,对吗?
-
@EricFinn 我正在寻找 python 解决方案 - 如果我从 cygwin 终端执行 myexpect.sh,它运行良好,但这不是我的最终目标。我想做的是让我的 python 脚本在我运行我的 .py 文件时执行我的 .sh 脚本,所以我不必在运行我的 .py 文件之前从终端手动执行它。
-
@gortron 但看起来你的问题并不是真正的 Python 特定的;您只是告诉操作系统将文件作为程序运行,并且允许操作系统运行所述文件的解决方案(很可能通过 Windows 端口的 Expect)将适用于任何语言,而不仅仅是 Python。或者也可以阅读脚本并自己用 Python 解释它?
标签: python ssh subprocess expect