@@@文章内容参照老男孩教育 Alex金角大王,武Sir银角大王@@@
一、Paramiko模块安装
系统环境CentOS 7,Python3.6
1、安装Python3.6
2、yum安装openssl-devel
1 [root@localhost ~]# yum install openssl-devel -y
3、重新编译ssl模块
1 cd Python-3.6.2 2 ./configure --with-ssl 3 make 4 sudo make install
4使用pip安装paramiko模块
1 [root@localhost ~]# python3 -m pip install paramiko
二、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 ssh.connect(hostname = ‘10.0.0.10‘, port = 22, username = ‘root‘, password=‘12345‘) 9 10 # 执行命令 11 stdin,stdout,stderr = ssh.exec_command(‘df‘) 12 # 获取命令结果 13 result = stdout.read() or stderr.read() 14 print(result.decode()) 15 16 # 关闭连接 17 ssh.close()
基于公钥密钥连接
1 import paramiko 2 3 private_key = paramiko.RSAKey.from_private_key_file(‘id_rsa_2048‘) 4 5 # 创建SSH对象 6 ssh = paramiko.SSHClient() 7 # 允许连接不在know_hosts文件中的主机 8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 9 # 连接服务器 10 ssh.connect(hostname = ‘10.0.0.10‘,port = 22,username = ‘root‘, pkey=private_key) 11 12 # 执行命令 13 stdin,stdout,stderr = ssh.exec_command(‘df‘) 14 # 获取命令结果 15 result = stdout.read() or stderr.read() 16 print(result.decode()) 17 18 # 关闭连接 19 ssh.close()
三、SFTPClient
用于连接远程服务器并执行上传下载
基于用户名密码上传下载
1 import paramiko 2 3 transport = paramiko.Transport((‘10.0.0.10‘,22)) 4 transport.connect(username=‘root‘,password=‘12345‘) 5 6 sftp = paramiko.SFTPClient.from_transport(transport) 7 # 将文件上传至服务器 8 sftp.put(‘socketserver并发.py‘,‘/tmp/test.py‘) 9 # 将文件下载到本地 10 sftp.get(‘Python-3.6.2.tar‘,‘Python.tar‘) 11 12 transport.close()
基于公钥密钥上传下载
1 import paramiko 2 3 private_key = paramiko.RSAKey.from_private_key_file(‘id_rsa_2048‘) 4 5 transport = paramiko.Transport((‘10.0.0.10‘,22)) 6 transport.connect(username=‘root‘,pkey=private_key) 7 8 sftp = paramiko.SFTPClient.from_transport(transport) 9 # 将文件上传至服务器 10 sftp.put(‘socketserver并发.py‘,‘/tmp/test2.py‘) 11 # 将文件下载到本地 12 sftp.get(‘Python-3.6.2.tar‘,‘Python.tar‘) 13 14 transport.close()