介绍
这期内容当中小编将会给大家带来有关如何在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第三方库