网络自动化运维教程 课件 项目3、4 使用paramiko实现网络设备自动化巡检、使用netmiko发现网络拓_第1页
网络自动化运维教程 课件 项目3、4 使用paramiko实现网络设备自动化巡检、使用netmiko发现网络拓_第2页
网络自动化运维教程 课件 项目3、4 使用paramiko实现网络设备自动化巡检、使用netmiko发现网络拓_第3页
网络自动化运维教程 课件 项目3、4 使用paramiko实现网络设备自动化巡检、使用netmiko发现网络拓_第4页
网络自动化运维教程 课件 项目3、4 使用paramiko实现网络设备自动化巡检、使用netmiko发现网络拓_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目3使用paramiko实现网络设备自动化巡检项目3使用paramiko实现网络设备自动化巡检3.1Paramiko模块介绍3.2Paramiko模块的类3.3任务实施3.1PythonParamiko模块SSH是一个是一种用于在不安全网络上进行安全远程登录和实现其他安全网络服务的协议,OpenSSH是其中一个开源实现。Paramiko是Python实现SSHv2协议的模块,它支持口令认证和公钥认证两种方式。可以实现安全的远程命令执行、文件传输等功能。Paramiko可以使用SSHv2远程连接到Linux服务器或网络设备,查看上面的日志状态,批量配置远程服务器或设备,文件上传,文件下载等1Paramiko模块-介绍3.1PythonParamiko模块Paramiko模块中有很多组件,可以归纳为:常用协议类和密钥相关类。常用协议类主要有以下组件:最常用的两个类为SSHClient类和SFTPClient类,分别提供SSH和SFTP功能。2Paramiko模块–组件Channel类:该类用于创建在SSHTransport上的安全通道。Message类:SSHMessage是字节流。该类对字符串、整数等进行编码。Packetizer类:数据包处理类。Transport类:该类用于在现有套接字或类套接字对象上创建一个Transport会话对象。SFTPClient类:该类通过一个打开的SSHTransport会话创建SFTP会话通道并执行远程文件操作。SSHClient类:该类是与SSH服务器会话的高级表示,集成了Transport,Channel和SFTPClient类。3.1PythonParamiko模块密钥相关类主要有以下组件:OpenSSH是SSH协议的免费开源实现。OpenSSH提供了服务端后台程序和客户端工具。所有的Linux操作系统均集成了OpenSSH。OpenSSH把用户访问过每个计算机的公钥都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免用户受到中间人攻击等。3Paramiko模块–组件SSHAgent类:该类用于SSH代理。Hostkeys类:该类与OpenSSHknown_hosts文件相关,用于创建一个hostkeys对象。Keyhandling类:该类用于创建对应密钥类型的实例,如RSA密钥,DSS(DSA)密钥。3.1PythonParamiko模块在Windows主机,打开Win10的命令行CMD,执行:pipinstallparamiko命令。建议使用国内pip源安装。测试paramiko,可以看出paramiko的版本为2.7.24Paramiko模块安装C:\Users\Administrator>pipinstallparamiko-i/pypi/simple/--trusted-hostC:\Users\Administrator>pythonPython3.9.6(tags/v3.9.6:db3ff76,Jun282021,15:26:21)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>>>>importparamiko>>>paramiko.__version__'2.7.2'>>>>>>exit()C:\Users\Administrator>项目3使用paramiko实现网络设备自动化巡检3.1Paramiko模块介绍3.2Paramiko模块的类3.3Paramiko案例3.2

Paramiko模块的类SSHClient的作用类似于Linux的SSH命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient类,通常用于执行远程命令。SSHClient常用方法如下:1SSHClient类及其方法connect():实现远程服务器的连接与认证,对于该方法只有hostname是必传参数。常用参数:Hostname:

连接的目标主机;

port:SSH_PORT指定端口

username:验证的用户名;

password:验证的用户密码

pkey:私钥方式用于身份验证;key_filename:一个文件名或文件列表,指定私钥文件

timeout:可选的tcp连接超时时间;compress:是否打开压缩

allow_agent:是否允许连接到ssh代理,默认为True允许

look_for_keys:是否在~/.ssh中搜索私钥文件,默认为True允许3.2

Paramiko模块的类2SSHClient类及其方法set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。load_system_host_keys():从系统文件加载主机密钥,如果没有参数,那么就尝试从用户本地的“knownhosts”文件中读取密钥信息。目前支持三种策略:AutoAddPolicy:自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认WarningPolicy用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接RejectPolicy自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项3.2

Paramiko模块的类3SSHClient类及其方法exec_command():在远程服务器执行Linux命令的方法。invoke_shell():基于SSH会话连接,启动一个交互式shell会话。open_sftp():在当前ssh会话的基础上创建一个sftp会话。该方法会返回一个SFTPClient对象。利用SSHClient对象的open_sftp()方法,可以直接返回一个基于当前连接的sftp对象,可以进行文件的上传等操作。如

sftp=client.open_sftp()

sftp.put('test.txt','text.txt')3.2

Paramiko模块的类SFTPCLient类作为一个sftp的客户端对象,根据SSH传输协议的sftp会话,实现远程文件操作,如上传、下载、权限、状态。常用的方法:4SFTPClient类及其方法from_transport():从开启的Transport通道创建一个SFTP客户端通道。常用到的参数:

T:一个认证过的开启的Transport会话;window_size:可选参数,SFTP会话窗口大小max_packet_size:可选参数,SFTP会话最大数据包大小3.2

Paramiko模块的类5SFTPClient类及其方法get():将远程文件(remotepath)从SFTP服务器复制到本地主机的指定路径中(localpath),操作引发的任何异常都将被传递。put():将本地文件(localpath)从本地主机复制到SFTP服务器的指定路径中(remotepath),操作引发的任何异常都将被传递。mkdir()在服务器上创建目录remove()在服务器上删除目录rename()在服务器上重命名目录stat()查看服务器文件状态listdir()列出服务器目录下的文件3.2

Paramiko模块的类Keyhandling类用于创建对应密钥类型的实例,如RSA密钥,DSS(DSA)密钥。这个类包含了密钥的读取,写入等相关方法。常用方法:6Keyhandling类及其方法RSAKey.from_private_key_file(filename):从文件读取RSA私钥来创建密钥对象DSSKey.from_private_key_file(filename):从文件读取DSS私钥来创建密钥对象项目3使用paramiko实现网络设备自动化巡检3.1Paramiko模块介绍3.2Paramiko模块的类3.3Paramiko任务实施3.3使用Paramiko登录设备公司A的网络已经在正常运行。现在考虑对运行中的网络设备进行日常巡检,除了日常的设备环境检查外,还要检查设备基本信息和设备运行状态等。本任务将收集网络设备的版本信息、补丁信息、时钟信息、板卡运行状态、CPU使用率和内存使用率以及日志信息,便于分析网络运行状态。如图2-1所示,本任务只考虑深圳总部园区网络和服务器区网络,各设备的IP地址连接参见表2-3。按照公司的整体网络规划,运维工程师将对深圳总部园区网络和服务器区网络使用paramiko模块实现网络自动化巡检,需要完成的任务如下。

(1)配置并验证SSH服务端。

(2)使用paramiko登录设备。

(3)自动执行网络巡检的各项命令。项目4使用netmiko发现网络拓扑项目4使用netmiko发现网络拓扑4.1Netmiko模块介绍4.2Netmiko的方法4.3任务实施4.1Netmiko模块Paramiko实现了SSH2的功能,但它并不是专门为网设备开的模块。在用Paramiko和网络设备交互时并不很简单和通用。Netmiko基于Paramiko开发专门处理网络设备的SSH模块。这个模块目前能支持很多厂商设备SSH连接。1Netmiko模块-介绍4.1Netmiko模块Netmiko支持各种设备。这些设备分为三类,具体参阅链接:https://ktbyers.github.io/netmiko/PLATFORMS.html2Netmiko模块-介绍定期测试:在每次NetMiko发布之前,都会尝试对这组设备运行完整的测试套件。定期测试支持平台,如AristavEOS、CiscoASA、CiscoIOS、CiscoSG300、Linux(更多参阅链接网站);有限测试:有限的测试意味着配置和显示操作系统测试在某个时间点通过了该平台上的测试,因此,可以认为netmiko可以在这些平台是可以工作的。有限测试支持平台如下:HPEComware7、Huawei、IPInfusionOcNOS、JuniperScreenOS等(更多参阅链接网站)实验性:没有警告过定期测试和有限测试,但通过检查PR,应当是可以支持的,但是关于是否完全通过单元测试或其可靠性如何,没有足够的数据。实验室支持平台如下:A10、Accedian、Aruba、CienaSAOS、CheckPointGAiA(更多参阅链接网站)4.1Netmiko模块Netmiko基于Paramiko开发专门处理网络设备的SSH模块,是网络运维工程师日常工作中最常用的模块之一。相对Paramiko,Netmiko将很多细节优化和简化,如不需要导入time模块做休眠,输入每条命令不需要在后面加换行符\n,不需要执行system-view,quit等命令。方便提取、打印回显内容,还可以配合Jinja2模块调用配置模板,以及配合TextFSM、pyATS、Genie等模块将回显内容以有序的JSON格式输出,方便过滤和提取出所需的数据等3Netmiko模块–更容易使用4.1Netmiko模块在Windows主机,打开Win10的命令行CMD,执行:pipinstallnetmiko命令。建议使用国内pip源安装。测试netmiko,可以看出netmiko的版本为3.4.0

4netmiko模块安装C:\Users\Administrator>pipinstallnetmiko-i/pypi/simple/--trusted-hostC:\Users\Administrator>pythonPython3.9.6(tags/v3.9.6:db3ff76,Jun282021,15:26:21)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>importnetmiko>>>netmiko.__version__'3.4.0'>>>exit()C:\Users\Administrator>项目4使用netmiko发现网络拓扑4.1Netmiko模块介绍4.2Netmiko的方法4.3Netmiko案例4.2Netmiko方法Netmiko的核心对象主要是ConnectHandler类。ConnetHandler()用来登录设备,包含几个必要的参数和可选参数,必要参数包括device_type,ip(或host),username和password,可选参数包括port,secret,use_keys,key_file,conn_timeout等。ConnetHandler()的参数有2中方式。一种是直接传入参数,一种是通过字典传入参数。注意,通过字典传入参数时要用2个星号。1Netmiko登录设备方法importnetmikonet_connect=netmiko.ConnectHandler(device_type="huawei",ip="00",username="python",password="Huawei12#$")importnetmikoSW1={"device_type":"huawei","ip":"00","username":"python","password":"Huawei12#$"}#注意:参数中上2个星号net_connect=netmiko.ConnectHandler(**SW1)4.2Netmiko方法Netmiko主要用到3个方法向设备做配置:send_command(),send_config_set()以及send_config_from_file();还有一个不太常用的send_command_timing():send_command()方法:2Netmiko配置设备方法send_command()只支持向设备发送一条命令,通常是`display`之类的查询、排错命令或者`save`这样保存配置的命令。发出命令后,这个函数默认情况下一直等待,直到接收到设备的完整回显内容为止。如果超时,则会返回一个**OSError**的异常。如果想要指定netmiko从回显内容中读到需要的内容,则需要用到expect_string参数(expect_string默认值为None),如果send_command()从回显内容中读到了expec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论