Python网络设备连接和配置工具

当您的Python程序需要运行外部依赖密码的程序,或访问远程服务器时,请使用Paramiko。 Paramiko 是一个实现 SSHv2 协议的 Python 模块。 Paramiko 不是 Python 标准库的一部分,尽管它被广泛使用。 本指南向您展示如何在 Python 脚本中使用 Paramiko 通过密码和 SSH 密钥对服务器进行身份验证。

SSH密码连接服务器

他的部分向您展示了如何使用用户名和密码向远程服务器进行身份验证。 首先,创建一个名为first_experiment.py 的新文件并添加示例文件的内容。

password_login.py

import paramikocommand = "df"host = "YOUR_IP_ADDRESS"
username = "YOUR_LIMITED_USER_ACCOUNT"
password = "YOUR_PASSWORD"client = paramiko.client.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, username=username, password=password)
_stdin, _stdout,_stderr = client.exec_command("df")
print(_stdout.read().decode())
client.close()

该文件使用您提供的 IP 地址和凭据通过 SSH 连接到远程服务器。然后,它使用 df 命令生成服务器可用磁盘空间的报告。

使用以下命令执行该文件:

python password_login.py

您会看到类似的输出:

Filesystem       1K-blocks  Used Available Use% Mounted on
devtmpfs           1921544     0   1921544   0% /dev
tmpfs              1936296     0   1936296   0% /dev/shm
tmpfs              1936296   211308   1724988  11% /run
tmpfs              1936296     0   1936296   0% /sys/fs/cgroup
/dev/mapper/cl-root  46110724 20501872  25608852  45% /
/dev/sda1           999320   187324 743184  21% /boot

上面的文件提供了一个高级示例,您可以使用该示例将 Paramiko 合并到您的 Python 代码中。 虽然 Paramiko 所做的一切也可以使用 shell 命令完成,但 Paramiko 为您提供了 Python 的所有功能。 Python 使您能够访问结构化数据、循环、解析和其他超出 shell 脚本可用的强大功能。 例如,如果您正在编写一个程序来计算系统使用百分比,Python 更擅长从系统输出中提取和计算值。

SSH密钥连接服务器

Paramiko 的具体优势之一是正确处理 SSH 添加密钥。 上面的介绍性示例取决于您的受限用户帐户密码的使用。 然而,使用 SSH 密钥进行服务器身份验证更安全。 下面的示例文件提供了一个报告,该报告会提醒您未包含在预期用户列表中的用户进行的任何登录。 Python 脚本依赖 Paramiko(请注意 key_based_connect() 函数)使用 SSHv2 身份验证连接到代码的 server_list 列表中提供的任何服务器。

key_based_login.py

import paramikodef examine_last(server, connection):command = "sudo last"expected = ["user1", "reboot", "root", "sys-admin"]_stdin, stdout, _stderr = connection.exec_command("sudo last")lines = stdout.read().decode()connection.close()for line in lines.split("\n"):# Ignore the last line of the last report.if line.startswith("wtmp begins"):breakparts = line.split()if parts:account = parts[0]if not account in EXPECTED:print(f"Entry '{line}' is a surprise on {server}.")def key_based_connect(server):host = "192.0.2.0"special_account = "user1"pkey = paramiko.RSAKey.from_private_key_file("./id_rsa")client = paramiko.SSHClient()policy = paramiko.AutoAddPolicy()client.set_missing_host_key_policy(policy)client.connect(host, username=special_account, pkey=pkey)return clientdef main():server_list = ["worker1", "worker2", "worker3"]for server in server_list:connection = key_based_connect(server)examine_last(server, connection)main()

使用以下命令执行该文件:

如果 Python 脚本预期列表之外的用户访问您的其中一台服务器,Python 脚本将返回以下内容:

Entry user4   pts/0     192.0.2.0  Wed Sep 23 15:13 - 17:28  (02:14)' is a surprise on 192.0.2.0.

Paramiko SSH 连接到网络设备

使用 Python 和 paramiko 包建立到网络设备的 SSH 连接。 然后,我们将使用这个已建立的连接来发出简单的命令并从设备读回基本输出。

Jinja2 构建配置模板

使用 Python 和 jinja2(一种广泛使用的模板语言)填充 Python 脚本提供的数据。 使用 jinja2 模板中的循环、控制结构和继承,我们将构建高度可定制的配置模板

Netmiko 配置网络设备

构建在 paramiko 之上的 netmiko。 netmiko 包提供了与多个供应商的网络设备的 SSH 交互的抽象。 使用 netmiko,我们将与网络设备交互以检索状态信息并应用配置更改。

NETCONF 和 ncclient 的模型驱动可编程

使用模块指定网络基础设施的所需状态,然后将其应用于设备。 我们将使用 ncclient 包根据 YANG 模型更改网络设备。

NAPALM 自动化复杂的多供应商网络

着眼于 NAPALM,它允许开发人员使用统一的接口自动化复杂的多供应商网络

pyATS 和 Genie 自动化网络测试和部署

使用 pyATS 和 Genie 对各种设备进行从简单的连接测试到高级状态测试。

使用 RESTCONF 和请求配置设备

探索请求包以将不同的 RESTCONF JSON 负载发送到网络设备。

通过请求使用控制器和高级网络 API

使用 requests 包查询 REST API,以从多个网络设备检索信息并对多个网络设备应用更改。

自定义 Ansible 模块将 Python 脚本合并到现有工作流

自己编写这样的模块。 这将允许您从 Ansible 调用之前编写的 Python 脚本。

源代码

参阅一:亚图跨际
参阅二:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的召回算法

基于深度学习的召回算法在推荐系统中取得了显著的成功,它利用深度神经网络来学习用户和物品之间的复杂关系,能够更好地捕捉数据中的隐藏模式。以下是一个基于深度学习的召回算法的基本步骤: 数据准备: 收集用户行为数据&#xff…

深入理解C语言中冒泡排序(优化)

目录 引言: 冒泡排序概述: 优化前: 优化后(注意看注释): 解析优化后: 原理(先去了解qsort): 引言: 排序算法是计算机科学中的基础问题之一。在本篇博客中&#xff0c…

[MySQL] MySQL 高级(进阶) SQL 语句

一、高效查询方式 1.1 指定指字段进行查看 事先准备好两张表 select 字段1,字段2 from 表名; 1.2 对字段进行去重查看 SELECT DISTINCT "字段" FROM "表名"; 1.3 where条件查询 SELECT "字段" FROM 表名" WHERE "条件…

计算机组成原理-多处理器系统的基本概念(SISD SIMD MISD MIMD)

文章目录 总览先看这个再往下看 SISDSIMDMISDMIMD向量处理器共享内存多处理器和多核处理器 总览 先看这个 再往下看 SISD 并发就是;先执行一下该指令序列,再执行一下另外一个指令序列 并行就是:两个指令序列同时进行 在某个时间段内只能处理…

centos 编译安装 python 和 openssl

安装环境: centos 7.9 : python 3.10.5 和 openssl 3.0.12 centos 6.10 : python 3.10.5 和 openssl 1.1.1 两个环境都能安装成功,可以正常使用。 安装 openssl 下载地址 下载后解压,进入到解压目录 执行&#xf…

java设计模式学习之【状态模式】

文章目录 引言状态模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用状态示例代码地址 引言 设想你正在使用一个在线视频播放器观看电影。随着你的互动,播放器可能处于不同的状态:播放、暂停、缓冲或结束。每个状态下,播放…

ActiveMQ漏洞合集

目录 介绍CVE-2015-5254:Apache ActiveMQ任意代码执行漏洞漏洞介绍 & 环境准备漏洞发现Nuclei❌Vulmap✅漏洞验证漏洞利用 CVE-2016-3088:Apache ActiveMQ Fileserver远程代码执行漏洞漏洞发现Nuclei✅Vulmap✅MSF✅第三方工具1(漏洞探测…

腾讯云轻量应用服务器购买流程、搭建网站全流程超详细

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器,CPU内存带宽配置高并且价格特别便宜,大带宽,但是限制月流量。轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年,540元三年、2核4G5M带宽218元一年,756元3年、…

数据结构与算法:基于比较的排序算法:选择、冒泡、插入、归并的动图演示和java代码,排序时间复杂度、空间复杂度、稳定性总结表格

选择排序 选择排序是先在0~N-1上选择一个最小值排到最前面&#xff0c;然后再在1到N-1上选一个次小的&#xff0c;以此类推。 public static selectionSort(int[] arr){if(arrnull||arr.length<2){return;} //每次从i n-1 选一个最小的放前面for(int i0;i<arr.length-…

基于飞浆OCR的文本框box及坐标中心点检测JSON格式保存文本

OCR的文本框box及JSON数据保存 需求说明 一、借助飞浆框出OCR识别的文本框 二、以圆圈形式标出每个框的中心点位置 三、以JSON及文本格式保存OCR识别的文本 四、以文本格式保存必要的文本信息 解决方法 一、文本的坐标来自飞浆的COR识别 二、借助paddleocr的draw_ocr画出…

Mybatis 动态 SQL - choose, when, otherwise

有时候我们并不希望所有的条件都生效&#xff0c;而是只想在多个选项中选择一个。类似于Java中的switch语句&#xff0c;MyBatis提供了 ​<choose>​元素。 让我们使用上面的例子&#xff0c;但现在如果提供了标题&#xff0c;则只搜索标题&#xff1b;如果提供了作者&a…

基于 AForge.Net 框架的扑克牌计算机视觉识别

© Conmajia 2012, Nazmi Altun 2011 Init. 24 May 2012 SN: 125.1 本文为翻译文章&#xff0c;已获原作者 Nazmi Altun 授权。 下载资源&#xff1a; 源代码&#xff08;148.6 KB&#xff09;、Demo&#xff08;3.1 MB&#xff09; 简介 &#xff08;图片上的字&#xf…

【Spring实战】09 MyBatis Generator

文章目录 1. 依赖2. 配置文件3. 生成代码4. 详细介绍 generatorConfig.xml5. 代码详细总结 Spring MyBatis Generator 是 MyBatis 官方提供的一个强大的工具&#xff0c;它能够基于数据库表结构自动生成 MyBatis 持久层的代码&#xff0c;包括实体类、Mapper 接口和 XML 映射文…

WPF项目创建HTTP WEB服务,不使用IIS业务 WPF桌面程序WebApi WPF 集成WebApi C# 创建HTTP Web API服务

在C# WPF应用程序中直接创建HTTP服务或WebAPI服务有以下优点&#xff1a; 自托管服务&#xff1a; 简化部署&#xff1a;无需依赖外部服务器或IIS&#xff08;Internet Information Services&#xff09;&#xff0c;可以直接在应用程序内部启动和运行Web服务。 集成紧密&…

工具系列:TimeGPT_(8)使用不规则时间戳进行时间序列预测

文章目录 介绍不规则时间戳的单变量时间预测不规则时间戳的外生变量时间预测 介绍 在处理时间序列数据时&#xff0c;时间戳的频率是一个关键因素&#xff0c;可以对预测结果产生重大影响。像每日、每周或每月这样的常规频率很容易处理。然而&#xff0c;像工作日这样的不规则…

【ARMv8M Cortex-M33 系列 2 -- Cortex-M33 JLink 连接 及 JFlash 烧写介绍】

文章目录 Jlink 工具JLink 命令行示例JFlash 烧写问题Jlink 工具 J-Link 是 SEGGER 提供的一款流行的 JTAG 调试器,它支持多个平台和处理器。JLink.exe 是 J-Link 调试器的命令行接口,它允许用户通过命令行执行一系列操作,例如编程、擦除、调试等。 工具链接: https://ww…

可运营的Leadshop开源商城小程序源码 +H5公众号+带视频教程

源码简介 Leadshop是一款出色的开源电商系统&#xff0c;具备轻量级、高性能的特点&#xff0c;并提供持续更新和迭代服务。该系统采用前后端分离架构&#xff08;uniappyii2.0&#xff09;&#xff0c;以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、V…

使用Visual Studio 2022 winform项目打包成安装程序.exe

winform项目打包 1.安装扩展插件 Microsoft Visual Studio Installer Projects 20222.在解决方案上新建一个setup project 项目3.新建成功如下图&#xff0c;之后添加你的winform程序生成之后的debug下的文件4.在Application Folder上点击右键->Add->项目输出->主输出…

Echarts中饼图-实现放大显示数据

示例 代码演示 option {tooltip: {trigger: item},legend: {top: 5%,left: center},series: [{name: Access From,type: pie,radius: [40%, 70%],avoidLabelOverlap: false,label: {show: false,position: center},emphasis: {scale: true,//是否开启高亮后扇区的放大效果。s…

2024年HTML+CSS+JS 网页版烟花代码

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 直接跳到末尾 获取完整源码 在线体验地址&…