1、paramiko安装:
$apt-get install python-paramiko
2、SSHClient简单调用:
#!/usr/bin/env python
#t_ssh.py
#version: python 2.7.2
#RoT__ 20120111
import paramiko
c = paramiko.SSHClient()
c.load_system_host_keys()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
paramiko.util.log_to_file("t_ssh.log")
c.connect('192.168.1.104', 22, 'root', '123456')
stdin, stdout, stderr = c.exec_command('ifconfig')
print stdout.read()
c.close()
3、SSHClient自带的exec_command方法不能返回shell命令的退出值,可以采取继承SSHClient重写exec_command方法来获取shell退出值:
#!/usr/bin/env python
#t_ssh.py
#version: python 2.7.2
#RoT__ 20120111
import paramiko
c = paramiko.SSHClient()
c.load_system_host_keys()
c._policy = paramiko.AutoAddPolicy()
c.connect('192.168.1.104', 22, 'root', '123456')
stdin, stdout, stderr = c.exec_command('ifconfig')
print stdout.read()
c.close()
class TestClient(paramiko.SSHClient):
def call(self, command, bufsize=-1):
chan = self._transport.open_session()
chan.exec_command(command)
stdin = chan.makefile('wb', bufsize)
stdout = chan.makefile('rb', bufsize)
stderr = chan.makefile_stderr('rb', bufsize)
status = chan.recv_exit_status()
return stdin, stdout, stderr, status
if __name__ == '__main__':
tc = TestClient()
tc.load_system_host_keys()
tc._policy = paramiko.AutoAddPolicy()
tc.connect('192.168.1.104', 22, 'root', '123456')
stdin, stdout, stderr, status = tc.call('ifconfig')
print stdout.read()
print status