[英]Running a local Python script on a remote machine with Expect
我的本地机器上有一个 python 脚本,它只打印“hello world”。 我想使用 Expect 通过 ssh 在远程机器上运行此脚本。 我正在使用 Expect 来自动输入密码。 在命令行中输入以下命令会在远程机器上运行本地脚本,但是它们需要用户输入密码:
ssh abcd@111.222.333.44 python < hello .py
或
cat hello.py | ssh abcd@111.222.333.44 python -
以下 .exp 脚本会自动输入密码,但会运行远程计算机上已有的脚本。
#!/usr/bin/expect
spawn ssh abcd@111.222.333.44 python < hello.py
set pass "1"
expect {
password: { send "$pass\r"; exp_continue }
}
如果在远程机器上找不到 hello.py 文件,我会收到以下消息:“bash: hello.py: No such file or directory”。 有人可以帮我吗? 提前致谢。
编辑:我不想先将脚本复制到远程机器然后执行它。 我试过了,它有效,但我不想以这种方式运行它。
<
在 Expect/Tcl 中并不特殊。 spawn ssh abcd@111.222.333.44 python < hello.py
就像您手动运行ssh abcd@111.222.333.44 "python < hello.py"
其中<
在远程端解释。
你可以这样写:
spawn bash -c "ssh abcd@111.222.333.44 python < hello.py"
或
spawn bash -c "cat hello.py | ssh abcd@111.222.333.44 python"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.