首页 > 代码库 > python学习-day9
python学习-day9
一、paramiko模块
paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
paramiko主要是通过ssh协议对远程主机进行管理:包括执行远程主机CLI、上传和下载文件等。
二、基于ssh远程连接服务器
1. 基于用户名密码连接
1 import paramiko 2 # 创建SSH对象 3 ssh = paramiko.SSHClient() 4 # 允许连接不在know_hosts文件中的主机 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 6 # 连接服务器 7 ssh.connect(hostname=‘192.168.202.128‘, port=22, username=‘root‘, password=‘123456‘) 8 # 执行命令 9 stdin, stdout, stderr = ssh.exec_command(‘df‘)10 # 获取命令结果11 res,err = stdout.read(),stderr.read()12 result = res if res else err13 print(result.decode())14 # 关闭连接15 ssh.close()
上传下载文件
1 import paramiko2 transport = paramiko.Transport((‘192.168.170.133‘,22))3 transport.connect(username = ‘chengliqian‘,password = ‘123456‘)4 sftp = paramiko.SFTPClient.from_transport(transport)5 sftp.put(‘test.txt‘,‘/tmp/test1.txt‘)6 #sftp.get(‘/root/opt/teset/test.txt‘,‘‘)7 transport.close()
2. 基于公钥密钥连接
SSH密钥认证实现
- 生成密钥(客户端操作)
1 [root@wwww ~]# ssh-keygen -t rsa -b 4096 2 #-t 指定生成密钥的算法 -b指定密钥的位数 3 Generating public/private rsa key pair. 4 Enter file in which to save the key (/root/.ssh/id_rsa): 5 #询问生成的密钥放在的位置,默认放在家目录下的.ssh目录 6 Enter passphrase (empty for no passphrase): 7 #询问是否对私钥再进行加密 8 Enter same passphrase again: 9 Your identification has been saved in /root/.ssh/id_rsa.10 Your public key has been saved in /root/.ssh/id_rsa.pub.11 The key fingerprint is:12 e7:60:45:fe:d8:09:24:c1:1e:ef:35:cc:c1:c3:24:e4 root@wwww.axhu.com13 #生成的指纹信息
- 传送密钥至远程服务器
1 [root@wwww ~]# scp ~/.ssh/id_rsa.pub root@192.168.157.132:~/ 2 The authenticity of host ‘192.168.157.132 (192.168.157.132)‘ can‘t be established. 3 RSA key fingerprint is 6e:0f:f8:f8:c7:c2:11:e6:4d:99:aa:16:6a:81:4a:02. 4 Are you sure you want to continue connecting (yes/no)? yes 5 Warning: Permanently added ‘192.168.157.132‘ (RSA) to the list of known hosts. 6 root@192.168.157.132‘s password: 7 id_rsa.pub 100% 740 0.7KB/s 00:00 8 然后远程连接到远程主机进行设置: 9 [root@wwww ~]# ssh root@192.168.157.13210 root@192.168.157.132‘s password:11 Last login: Sat Jan 18 21:16:49 2014 from 192.168.157.12812 [root@bogon ~]# mkdir .ssh13 #这个目录默认不存在,但是这太机子若连接过其他服务器就会自动生成.ssh目录用来保存known_hosts文件14 [root@bogon ~]# chmod 700 .ssh15 #这个权限很重要,设置不对的话是没法通过验证16 [root@bogon ~]# cat id_rsa.pub >> ~/.ssh/authorized_keys17 #这里最好每次都是以>>追加的形式输出,不然会覆盖其他主机的公钥18 [root@bogon ~]# chmod 600 ~/.ssh/authorized_keys19 #修改权限放在其他用户修改查看
基于密钥远程登录
1 import paramiko 2 3 private_key = paramiko.RSAKey.from_private_key_file(‘id_rsa‘) 4 # 创建SSH对象 5 ssh = paramiko.SSHClient() 6 # 允许连接不在know_hosts文件中的主机 7 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 8 # 连接服务器 9 ssh.connect(hostname=‘192.168.202.128‘, port=22, username=‘root‘, pkey=private_key)10 11 # 执行命令12 stdin, stdout, stderr = ssh.exec_command(‘df‘)13 result = stdout.read()14 print(result.decode())15 stdin, stdout2, stderr = ssh.exec_command(‘ifconfig‘)16 # 获取命令结果17 result2 = stdout2.read()18 print(result2.decode())19 20 # 关闭连接21 ssh.close()
三、线程
Python的标准库提供了两个模块:_thread
和threading
,_thread
是低级模块,threading
是高级模块,对_thread
进行了封装。绝大多数情况下,我们只需要使用threading
这个高级模块。
python学习-day9
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。