python学习-day9

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 err
13 print(result.decode())
14 # 关闭连接
15 ssh.close()

 上传下载文件

1 import  paramiko
2 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 [[email protected] ~]# 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 [email protected]
13 #生成的指纹信息
  • 传送密钥至远程服务器
 1 [[email protected] ~]# scp ~/.ssh/id_rsa.pub [email protected]:~/
 2 The authenticity of host 192.168.157.132 (192.168.157.132) cant 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 [email protected]s password:
 7 id_rsa.pub                                                                                   100%  740     0.7KB/s   00:00
 8 然后远程连接到远程主机进行设置:
 9 [[email protected] ~]# ssh [email protected]
10 [email protected]s password:
11 Last login: Sat Jan 18 21:16:49 2014 from 192.168.157.128
12 [[email protected] ~]# mkdir .ssh
13 #这个目录默认不存在,但是这太机子若连接过其他服务器就会自动生成.ssh目录用来保存known_hosts文件
14 [[email protected] ~]# chmod 700 .ssh
15 #这个权限很重要,设置不对的话是没法通过验证
16 [[email protected] ~]# cat id_rsa.pub >> ~/.ssh/authorized_keys
17 #这里最好每次都是以>>追加的形式输出,不然会覆盖其他主机的公钥
18 [[email protected] ~]# chmod 600 ~/.ssh/authorized_keys
19 #修改权限放在其他用户修改查看

 基于密钥远程登录

 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的标准库提供了两个模块:_threadthreading_thread是低级模块,threading是高级模块,对_thread进行了封装。绝大多数情况下,我们只需要使用threading这个高级模块。

以上是关于python学习-day9的主要内容,如果未能解决你的问题,请参考以下文章

python学习day9

Python学习day9--linux基础

python day9 学习整理

python基础学习日志day9--线程队列queue

Python学习之路--Day9-2

python学习-day9