Python paramiko 模块

paramiko可以远程连接服务器系统并执行相应操作

paramiko远程连接服务器的方式有两种:用户名密码连接、ssh_key连接。

先看使用用户名密码进行连接方法:

技术分享
 1 #用户名和密码连接
 2 import paramiko
 3 
 4 #创建一个ssh对象
 5 ssh = paramiko.SSHClient()
 6 #允许连接不在know_hosts文件中的主机
 7 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 8 #连接服务器
 9 ssh.connect(‘192.168.1.22‘,port=22,username=‘root‘,password=‘123456‘)
10 #使用exex_command方法来执行要在服务器执行的命令,并返回一个元组(包含输入的命令,命令正确时的返回值,命令出错时出错信息)
11 stdin,stdout,stderr = ssh.exec_command(‘df -h‘)
12 #输出命令返回值
13 print stdout.read()
14 #关闭ssh连接
15 ssh.close()
用户名和密码连接

用户名密码连接后,上传下载文件:

技术分享
 1 #用户名密码连接
 2 
 3 #上传文件
 4 import paramiko
 5 
 6 #常见一个传输对象
 7 t = paramiko.Transport((‘182.92.219.86‘,22))
 8 #连接服务器
 9 t.connect(username=‘wupeiqi‘,password=‘WOshiniba8‘)
10 #实例化一个sftp对象
11 sftp = paramiko.SFTPClient.from_transport(t)
12 #sftp使用put方法上传文件
13 sftp.put(‘/tmp/test.py‘,‘/tmp/test.py‘)
14 #关闭连接
15 t.close()
16 
17 
18 #下载文件
19 import paramiko
20 
21 t = paramiko.Transport((‘182.92.219.86‘,22))
22 t.connect(username=‘wupeiqi‘,password=‘WOshiniba8‘)
23 sftp = paramiko.SFTPClient.from_transport(t)
24 sftp.get(‘/tmp/test.py‘,‘/tmp/test2.py‘)
25 t.close()
上传和下载文件

 

再来看看使用ssh_key连接。使用这种连接方式的关键是使用密钥认证。例如:

要使用a服务器通过密钥来访问b服务器,就要在a服务器上生成密钥对,并将a服务器上生成的公钥发送给b服务器,这样a服务器就可以不通过账号密码直接访问b服务器了

注:第一次访问b服务器的时候还是需要输入用户名密码的,之后才不需要使用用户名密码

生成密钥对的过程:

技术分享
1 #bash下设置密钥过程:
2 ssh-keygen -t rsa  ====>生成密钥对(rsa和rsa.pub)
3 ssh-copy-id -i rsa.pub root@192.168.1.2  ===>把生成的公钥发送给要设置密钥登录的服务器
生成密钥对

使用ssh_key进行连接:

技术分享
 1 import paramiko
 2 
 3 #私钥文件路径
 4 private_key_path = ‘/root/.ssh/id_rsa‘
 5 #从私钥文件读取私钥
 6 key = paramiko.RSAKey.from_private_key_file(private_key_path)
 7 
 8 #创建一个ssh对象
 9 ssh = paramiko.SSHClient()
10 #允许连接不在know_hosts文件中的主机
11 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
12 #连接服务器
13 ssh.connect(hostname=‘192.168.1.22‘,port=22,username=‘root‘,pkey=key)
14 stdin,stdout,stderr = ssh.exec_command(‘df -h‘)
15 print stdout.read()
16 ssh.close()
ssh_key连接

 

ssh_key连接后,上传下载文件:

技术分享
 1 #密钥连接
 2 
 3 #上传文件
 4 import paramiko
 5 
 6 pravie_key_path = ‘/home/auto/.ssh/id_rsa‘
 7 key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
 8 
 9 t = paramiko.Transport((‘182.92.219.86‘,22))
10 t.connect(username=‘wupeiqi‘,pkey=key)
11 sftp = paramiko.SFTPClient.from_transport(t)
12 sftp.put(‘/tmp/test3.py‘,‘/tmp/test3.py‘)
13 t.close()
14 
15 
16 
17 #下载文件
18 import paramiko
19 
20 pravie_key_path = ‘/home/auto/.ssh/id_rsa‘
21 key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
22 
23 t = paramiko.Transport((‘182.92.219.86‘,22))
24 t.connect(username=‘wupeiqi‘,pkey=key)
25 sftp = paramiko.SFTPClient.from_transport(t)
26 sftp.get(‘/tmp/test3.py‘,‘/tmp/test4.py‘)
27
posted @ 2017-04-13 11:15  漫舞沧海  阅读(92)  评论(0编辑  收藏  举报