繁体   English   中英

使用 Expect 在远程机器上运行本地 Python 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM