如何在python中使用paramiko第三方库

  介绍

这期内容当中小编将会给大家带来有关如何在python中使用paramiko第三方库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

python是什么意思

python是一种跨平台的,具有解释性,编译性,互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。


paramiko的三种常用方式如下:

<李>

使用密码进行登录

<李>

使用密钥免密码登录

<李>

SFTP传输文件

其中最割裂的就是SFTP传输文件,很多文章登陆使用SSHClient类,传输文件使用运输类,我也是这样用了很长时间。

如果你也是这么用的,你没有啥想法吗?用python就是节约心智,怎么一个变形还能出来两种东西呢,没有办法统一吗?

网上的统一就是实例化运输类然后实例化SSHClient类,再把实例化的运输类添加到实例化SSHClient类。总是有一种别扭的感觉。

重点:查看源码可以发现,SSHClient类直接提供了SFTP传输文件的实例化方法,直接用就行了,世界顿时清爽了很多

使用密码进行登录

import  paramiko      时间=hostname  & # 39; localhost # 39;   port =22   时间=username  & # 39;亚伦# 39;   #,看密码就知道我是用的redhat linux系系统   时间=password  & # 39; redhat # 39;      #,实例化SSHClient类   时间=ssh  paramiko.SSHClient ()   #,远程主机没有本地密钥时的处理规则,主要有三个   #,AutoAddPolicy:直接建立连接,不进行是/否的确认   #,WarningPolicy:直接建立连接,但是会提示是新连接   #,RejectPolicy:拒绝未知的连接,依赖系统密钥的信息。默认选项。   ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy ())   #,连接到服务器   ssh.connect(主机名,端口,用户名,密码)      #,执行命令,获取标准输入,标准输出,标准错误输出,均为流式输入输出   #,函数原型为,exec_command(自我,,命令,bufsize=1,超时=没有,get_pty=False,,环境=没有,,)   #,理论上可以通过标准输入,也就是下面的额stdin变量完成连续输入   #,同时参数中有布尔型参数,get_pty 可以指定是否获取,tty 通道,这样阻塞输入,比如sudo输入密码什么的都能做。貌似就可以做成你想要的任何东西。   #,但是以上两点没有验证,貌似比较麻烦,我太懒了-_- | | |   #   #,另外,exec_command方法每次都是新开一个通道执行命令,执行完成后状态消失.SSHClient类还提供一个invoke_shell方法,这个方法可以连续输入命令。   #,这两个的区别主要是,invoke_shell使用SSH 壳牌通道,而exec_command使用SSH  exec通道。   #,壳牌通道就是常用的终端软件登陆的通道,登陆变量都会进行加载比如,~/bashrc 等   #,而,exec通道,则不进行加载登陆文件,相当于linux桌面系统上右键开终端一样。   #,如果你还是不懂,没关系,invoke_shell  nb就完事了   将stdin、stdout,祝福;stderr =, ssh.exec_command (& # 39; df # 39;)   #,打印输出   打印(stdout.read () .decode ())   #,不要忘记关闭连接   ssh.close ()

使用密钥免密码登录

这里使用密钥文件,但是为了一般情况,我给密钥文件设置了密码,如果你只是想免密码,不设置密码即可。

在客户机上生成密钥对,将公钥传递给服务器

ssh-keygen  -t  rsa  #,这里设置密码为redhat_rsa,这里是给密钥设置密码,如果想免密,不设置密码即可   ssh-copy-id 小姐~/. ssh/id_rsa.pub  aaron@localhost import  paramiko      时间=hostname  & # 39; localhost # 39;   port =22   时间=username  & # 39;亚伦# 39;   #,这里是密钥文件的密码   时间=password  & # 39; redhat_rsa& # 39;   #,密钥文件的位置,可以是列表,paramiko会把列表里文件顺序尝试,登陆上位置   时间=private_key_path  & # 39;/home/亚伦/. ssh/id_rsa # 39;      时间=ssh  paramiko.SSHClient ()   ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy ())   #,这里网上很多先设置pkey传入,但是直接传文件路径也可以,还简单。   #,我使用的和网上不同,另一个版本请自行搜索,资料n多   #,如果没有密钥,则不需添加密码   #,look_for_keys默认为真,就是会找你,.ssh 目录下有没有合适的密钥文件   #,也就是说如果密钥文件存在,但是你传,key_filename 时传错了,不影响,paramiko已经替你想好了,这才是正经,python 应有的待遇,舒服!   ssh.connect(主机名,端口,用户名=用户名,密码=密码,key_filename=private_key_path, look_for_keys=False)      将stdin、stdout,祝福;stderr =, ssh.exec_command (& # 39; ip 一个# 39;)   打印(stdout.read () .decode ())   ssh.close ()

如何在python中使用paramiko第三方库