day8-paramiko模块

paramiko模块:用于SSH连接远程服务器并执行相关操作

一、SSHClient

SSHClient :用于连接远程服务器并执行基本命令

 1 import paramiko
 2 
 3 # 创建SSH对象
 4 ssh = paramiko.SSHClient()
 5 # 允许连接不在know_hosts文件中的主机
 6 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 7 
 8 # --------------------------------
 9 # 1.使用用户名密码登录
10 # 连接服务器
11 ssh.connect(hostname='10.0.0.7', port=22, username='test', password='123')
12 
13 # --------------------------------
14 # 2. 使用秘钥登录
15 # RSA非对称算法验证,公钥私钥成对出现
16 # ssh-keygen生成公私钥
17 # Your identification has been saved in /root/.ssh/id_rsa.
18 # Your public key has been saved in /root/.ssh/id_rsa.pub.
19 # 场景:A想跟B通信
20 # 公钥:放在想要ssh连接的服务器B登录用户家目录下的.ssh/authorized_keys里,权限600
21 # 私钥:自有
22 # 拷贝公钥到连接服务器:ssh-copy-id 用户@服务器,比如ssh-copy-id test@10.0.0.7
23 # 指定B的私钥地址
24 private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
25 ssh.connect(hostname='10.0.0.7', port=22, username='test', pkey=private_key)
26 
27 # ----------------------------------
28 # 执行命令
29 stdin, stdout, stderr = ssh.exec_command('pwd')
30 result = stdout.read() or stderr.read()
31 print result
32 # 关闭结果
33 ssh.close()

二、SFTPClient

SFTPClient:用于连接远程服务器并执行上传下载

 1 import paramiko
 2 
 3 # 创建Transport对象
 4 transport = paramiko.Transport(('10.0.0.7', 22))
 5 
 6 # --------------------------------
 7 # 1.使用用户名密码登录
 8 # transport.connect(username='test', password='123')
 9 
10 # --------------------------------
11 # 2. 使用秘钥登录
12 private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
13 transport.connect(username='test', pkey=private_key)
14 
15 # ----------------------------------
16 # 创建SFTP实例
17 sftp = paramiko.SFTPClient.from_transport(transport)
18 # 将本地test上传至服务器/tmp/test
19 sftp.put('test', '/tmp/test')
20 # 将test2下载到本地
21 sftp.get('/tmp/test2', 'test2')
22 
23 # 关闭连接
24 transport.close()

 

posted @ 2017-11-07 14:34  不知所以  阅读(100)  评论(0)    收藏  举报