Paramiko模块

Paramiko模块用于使用SSH连接远程服务器,执行命令和文件的上传下载

执行命令,返回命令的结果

 1 import paramiko
 2 
 3 # 创建SSH对象
 4 ssh = paramiko.SSHClient()
 5 # 允许连接不在know_hosts文件中的主机
 6 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 7 # 连接服务器
 8 ssh.connect(hostname='172.16.0.109', port=22, username='root', password='xile99hang')
 9 
10 # 执行命令
11 stdin, stdout, stderr = ssh.exec_command('pwd')
12 # 获取命令结果
13 #result = filter(lambda x: x is not None,[stdout.read(),stderr.read()])(0)
14 result = stdout.read()
15 print(result)
16 
17 # 关闭连接
18 ssh.close()
19 
20 #结果  b'/root\n'

基于公钥密钥的连接

 1 import paramiko
 2 
 3 private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
 4 
 5 # 创建SSH对象
 6 ssh = paramiko.SSHClient()
 7 # 允许连接不在know_hosts文件中的主机
 8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 9 # 连接服务器
10 ssh.connect(hostname='172.16.0.109', port=22, username='root', key=private_key)
11 
12 # 执行命令
13 stdin, stdout, stderr = ssh.exec_command('df')
14 # 获取命令结果
15 result = stdout.read()
16 
17 # 关闭连接
18 ssh.close()

上传和下载文件

 1 import paramiko
 2 
 3 transport = paramiko.Transport(('172.16.0.109',22))
 4 transport.connect(username='root',password='xile99hang')
 5 
 6 sftp = paramiko.SFTPClient.from_transport(transport)
 7 # 将location.py 上传至服务器 /tmp/test.py
 8 sftp.put('/tmp/location.py', '/tmp/test.py')
 9 # 将remove_path 下载到本地 local_path
10 sftp.get('remove_path', 'local_path')
11 
12 transport.close()

 

posted @ 2016-08-23 14:25  yoyoua  阅读(364)  评论(0编辑  收藏  举报