使用子进程模块SSH一个linux框

时间:2012-05-30 11:50:36

标签: python subprocess fabric paramiko pexpect

我有一个要求,我需要做以下

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

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

基本上我需要一个.py代码,我将提供用于连接到linux框的ip地址,用户名和密码,并运行命令并获取输出。

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

欢迎提出建议。

2 个答案:

答案 0 :(得分: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']

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

答案 1 :(得分:0)

如果它只是一个命令,您只需将其附加到命令行:

ssh user@host "echo foo"
然后

将返回foo。如果您在远程主机的ssh-agent文件中使用~/.ssh/authorized_keys和您的公钥,那么您甚至不需要输入密码。