1

我有一个要求,我需要执行以下操作

我需要 ssh 到一个 linux 机器,运行一个命令,取回输出,我需要做一些操作。

这可以通过python子进程模块实现吗?

基本上我需要一个 .py 代码,我将在其中提供 IP 地址、用户名和密码以连接到 linux 机器并运行命令并获取输出。

这也可以通过 Python 中可用的任何其他模块实现。

欢迎提出建议。

4

3 回答 3

3

你的问题被标记为“paramiko”,那么你为什么不直接使用它呢?

我需要 ssh 到一个 linux 机器,运行一个命令,取回输出,我需要做一些操作。

ssh 到 linux 机器(或任何其他 ssh 服务器):

>>> import paramiko
>>> ssh=paramiko.SSHClient()
>>> ssh.load_system_host_keys()
>>> ssh.connect(hostname='localhost', username='haiprasan86', password='secret')
>>> print ssh
<paramiko.SSHClient object at 0xdf2590>

运行命令:

>>> _, out, err = ssh.exec_command('ls -l /etc/passwd')
>>> # block until remote command completes
>>> status = out.channel.recv_exit_status()
>>> print status
0

取回输出:

>>> print out.readlines()
['-rw-r--r--. 1 root root 2351 Mar 27 10:57 /etc/passwd\n']

我不知道你想做什么操作。

于 2012-05-30T12:23:34.687 回答
0

如果它只是一个命令,您可以简单地将其附加到命令行:

ssh user@host "echo foo"

然后会返回 foo. 如果您ssh-agent在远程主机的 -file 中使用您的公钥,~/.ssh/authorized_keys那么您甚至不需要询问密码。

于 2012-05-30T11:53:06.710 回答
0

其他选项是结构,或者如果您需要与远程命令交互,fexpect

于 2012-08-17T11:54:27.090 回答