专栏首页编程一篇文章让你快速学习Python编程自动化开发学习9-paramiko模块

一篇文章让你快速学习Python编程自动化开发学习9-paramiko模块

第三方库的安装

下面要讲的paramiko是一个第三方库。这是第一次使用到第三方库,要使用第三方库需要先进行安装。不过现在安装过程比较简单,一条命令便可以完成库的下载和安装。下面就用paramiko模块举例安装的方法。

使用系统命令行安装

安装第三方库,建议直接用pip安装。Windows和Linux都适用

pip命令不在环境变量中,所以无法直接运行。可以将pip加到环境变量中,或者cd到 PythonScripts 目录下,之后使用命令

给大家推荐一个群:Python学习:(五八八零九零九四二),每天分享Python直播学习,群里有各种教程和资料满足大家,欢迎你的加入。

$ pip install paramiko

等待安装完毕即可使用。

通过pacharm安装

如果使用pacharm,也可以用pacharm来安装。在File->Settings->Project: ->Project Interpreter 里,点右边的+号。

然后在搜索框搜索你要的第三方库,选中后点左下角的“Install Package”进行安装。

paramiko模块

paramiko模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。

SSHClient

可以实现连接远程服务器并执行基本命令

上面例子中的第二句

ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy())

,设置允许没有host_key的连接策略。如果找不到know_hosts文件,或者文件中没有这台主机,如果没有这句,就会报错。如果有这句,那么就执行作为参数的那个方法的策略。作为参数的

paramiko.MissingHostKeyPolicy()

还有另外3个方法。

MissingHostKeyPolicy: 这个是下面3个参数的父类,直接就一句pass,就是什么也不做。所以可以正常运行

AutoAddPolicy: 自动添加到know_hosts中,那么下次就不会找不到了。如果找不到know_host文件的话,就和上面一样了

RejectPolicy: 直接拒绝,会抛出一个错误。默认就是这个,所以不写这句会报错。

WarningPolicy: 发出警告,会先报个错,但是不中断,程序还会继续执行

know_hosts文件

在linux系统中,用户家目录下会有一个隐藏文件夹“.ssh”。如果你这台机器没有使用过ssh,可能还没有自动创建这个文件夹。可以在家目录使用命令

$ ls -a

查看到。

模块中是使用

filename = os.path.expanduser('~/.ssh/known_hosts')

来查找到文件,然后获取到其中的主机的。也就是查找用户家目录下.ssh文件夹的know_hosts文件。当然也可以用命令指定查找别处的文件,并且可以调用多次,会将所有的内容合并。比如windows系统中可能没有这个文件,或者不在用户家目录中。如果你有安装的第三方ssh应用,可能会在别的地方。

linux系统中,可以用命令

$ ssh-keygen -R

清理掉已经记录的主机。

连接用Transport封装

模块另外还提供一种连接方式,使用Transport封装。先获取主机名和端口号,然后连接(其实这部分底层就是socket)。直接将这个已经封装好的连接,赋值给SSHClinet的实例。

sftp传文件

通过paramiko模块还可以使用sftp进行上传和下载

ssh密钥验证

如果要自动登录,那么需要把用户名和密码事先存放在文件中。这样的做法很不安全,如果让别人读取到这个文件,就有了你所有的机器的访问权限。

这种情况下可以使用密钥认证,实现无密码登录。

这部分是RHCSA学过的内容

生成一对公钥-私钥对,私钥自己保存,公钥发送给需要登录的机器上。完成以上步骤,每次登录就不需要密码了。

ssh-keygen

在本地生成公钥-私钥对

ssh-copy-id [user@]host

将你的公钥发送到需要无密钥登录的主机。缺省user的话就是使用你当前这台机器使用的user

windowns中也可以使用,只需要使用工具先生成一对公钥和私钥。比如CRT

上面的是准备工作。完成后,在paramiko模块里也是以后,使用pkey来代替passwod进行登录。

如果是使用Transport封装,也是一样,把password参数换成pkey。看下面sftp的例子就可以了

sftp也可以使用密钥验证

到这里,应该就没太多问题了

本文来自企鹅号 - 我爱Python媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JDBC常见错误及解决方案

    最近很多同学在数据库编程这一块遇到了很多的问题,各种问题都有,但却苦于不知道怎么解决这些问题,以至于编程效率非常低。今天我就来总结一下在数据库编程时经常遇到的问...

    企鹅号小编
  • 开放的计算能力为数据库瘦身

    开放的计算能力为数据库瘦身 计算封闭性导致臃肿的数据库 我们在上一期谈到,数据库的臃肿,也就是过多的中间表以及相关存储过程,是由于其计算封闭性造成的。如果能够实...

    企鹅号小编
  • 数据库10 大常见安全问题盘点

    数据库已经成为黑客的主要攻击目标,因为它们存储着大量有价值和敏感的信息。 这些信息包括金融、知识产权以及企业数据等各方面的内容。网络罪犯开始从入侵在线业务服务器...

    企鹅号小编
  • 前后端分离ueditor富文本编辑器的使用-Java版本

    最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的u...

    用户1174387
  • 前后端分离ueditor富文本编辑器的使用-Java版本

    最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的u...

    用户1187932
  • Linux下的权限管理居然这么有意思

    Linux下一个文件一经创建,就具有三种访问方式 1.读,可以显示该文件的内容 2.写,可以编辑或删除它 3.执行,如果该文件是一个shell脚本或者程序

    Java识堂
  • 使用Python批量爬取并下载具有防盗链保护的文件

    第一步:确定要爬取的目标页面,以http://jwc.sdtbu.edu.cn/info/2002/5418.htm为例,使用浏览器打开,如下:

    Python小屋屋主
  • .htaccess文件用法收集整理

    Youngxj
  • .htaccess文件用法收集整理

    有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你...

    V站CEO-西顾
  • Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXI

    发布于 2020-01-08 14:13 更新于 2020-01...

    walterlv

扫码关注云+社区

领取腾讯云代金券