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()

浙公网安备 33010602011771号