【发布时间】:2015-04-02 10:44:23
【问题描述】:
我是 python 新手,如果这个问题很简单,我很抱歉。简单地说,我需要编写一个脚本,通过 ssh 连接到远程,然后 telnet 到 localhost 并在那里的 shell 上执行命令。
我正在使用 Python 2.4.3。我在这里阅读了很多类似的问题,很多人建议使用 Paramiko、Pexpect 等模块。但是这是不可能的——我应该只使用“本机”2.4.3 库。我试过弄乱子进程模块,我已经设法连接到远程shell(但是我需要提供密码——我想通过在脚本中提供密码来避免这种情况)——但我仍然需要做一个telnet 到 localhost 并在不同的 shell 上执行一些命令。
谁能这么好心给我一些提示?提前致谢。
TL;DR 我正在寻找这个 bash 命令的 python 替代品:
./sshpass -p 密码 ssh 用户名@$ip -t "(sleep 1;echo "command" ; sleep 1) | telnet localhost $port;exit;bash" >> testing.txt
【问题讨论】:
-
您实际上想要完成什么?如果您通过
ssh登录,那么telnet localhost将毫无意义——它只会添加一个不安全的本地第二个连接。 -
这是我在技术大学的编程课程。基本上,我们在服务器上安装了 Fedora,并通过 localhost 连接到各种网络设备。我们需要做的是登录到服务器,然后连接到这些设备,在它们的自定义 shell 上执行命令并将输出保存到我们桌面上的文件中。两周前我们在 bash 中做了同样的事情 - 我们就是这样做的。现在我们需要做同样的事情,但使用 python。
-
是否需要在 ssh 连接中使用 Python?这真的没有意义。一旦你进入,你是在一个shell中。
-
但是通过 ssh 端口转发,您可以公开端口并使用本机
socket调用连接到那些端口。这就是你想要的吗? -
我们要做的是在python中编写一个连接设备的脚本,执行命令并将输出保存到文件中。该设备作为具有给定端口的本地主机连接到具有给定 IP 的 Fedora 远程服务器。对不起,我只是二年级学生,所以请原谅我的无知——不知道你的意思。使用 bash 非常简单,因为我使用了这样的命令: ./sshpass -p password ssh username@$ip -t "(sleep 1;echo "command" ; sleep 1) | telnet localhost $port;exit;bash" > > testing.txt - 我想在 python 中做类似的事情。