
网络工程师的Python之路
文章平均质量分 93
Python及NetDevOps技术在国内计算机网络圈子里迅速走红,国内与NetDevOps相关的技术文章在网络上如雨后春笋般大量涌现,行业里也出现了很多要求掌握NetDevOps技术的网络工程师职位,并且需求越来越多,NetDevOps是“下一代网络工程师”必须掌握的技能已经成为既定且不可逆的事实
BinaryStarXin
专注于网络技术、各类计算机热门行业技术研究分享、嵌入式开发、人工智能、后端与前端等方面的技术知识文章分享,欢迎留言
展开
-
网络工程师的Python之路-网络运维自动化实战【2.8】
在用脚本 1 生成 reachable_ip.txt 文件后,我们可以再写一个脚本 2 来读取该文本文件中所有可达的交换机的管理 IP 地址,依次登录所有这些可达的交换机,输入命令“ show ip int brief | i up” 查看有哪些端口是 Up 的,再配合正则表达式( re模块),在回显内容中匹配我们所要的用户端物理端口号( Gix/x/x),统计它们的总数,即可得到当前一个交换机有多少个物理端口是 Up 的。如果不可达,则返回的是“ Request timed out”,如下所示。原创 2025-03-13 23:27:01 · 1013 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【2.7】
( 3)需要注意的是,在剩下的代码中,我们没有在脚本里预先写好具体的 QoS 配置命令,取而代之的是通过 cmd_file = sys.argv[2]配合 cmdlist = open(cmd_file, 'r')和 for line in cmdlist.readlines()来读取独立于脚本之外的配置命令文件, 可以随意在命令行里选择我们想要的配置命令文件, 也就是本实验中的 cmd_3750.txt 和 cmd_3850.txt。其余部分的代码都是在前面实验中讲过的,不再赘述。原创 2025-03-12 22:34:20 · 799 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【2.5】
这个现象就发生在笔者目前所任职的沙特阿卜杜拉国王科技大学,学校里的 TACACS 服务器( 思科 ACS) 已经服役 9 年, 当前的问题是每天早晨 8 点左右该 ACS 会“ 失效”,必须手动重启 ACS 所在的服务器才能解决问题,在 ACS 无法正常工作期间, 我们只能通过网络设备的本地账号和密码登录,鉴于此,我们已经部署了思科的ISE 来替代 ACS 做 TACACS 服务器,但由于学校网络过于庞大,迁徙过程漫长,就导致了部分设备已经迁徙,使用上了 ISE 配置的账号和密码;原创 2025-03-12 21:39:30 · 994 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【2.4】
( 5)在做完 Paramiko 关于 SSH 公匙相关的配置后,调用 Paramiko.SSHClient()的connect()函数进行 SSH 登录,该函数包含 3 个必选的参数 hostname、 username 和 password,分别对应我们创建的 ip、 username 和 password 3 个变量,也就是远程登录的设备的主机名/IP 地址、 SSH 用户名和密码。与 Netmiko 一样, Paramiko 也是第三方模块, 需要使用 pip 来下载安装,方法如下所示。原创 2025-03-12 20:38:51 · 921 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【2.3】
在 Python 2 中, Telnetlib 模块下所有函数的返回值均为字符串,比如前面给出的代码中的 tn.read_until("Username: "),这里的"Username: "即一个字符串。异常的种类很多,比如把零当作除数的“ 零除错误”( ZeroDivisonError)、变量还没创建就被调用的“命名错误”( NameError)、数据类型使用有误的“类型错误”( TypeError),以及尝试打开不存在的文件时会遇到的“ I/O 错误”( IOError)等都是很常见的异常。原创 2025-03-11 23:46:20 · 865 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【2.1】
函数是已经组织好的可以被重复使用的一组代码块,它的作用是用来提高代码的重复使用率。在 Python 中,有很多内建函数( Built-in Function),比如前面已经讲到的 type()、dir()、 print()、 int()、 str()、 list()、 open()等,这些函数在安装好 Python 后就能立即使用。除了上述内建函数,我们也可以通过创建自定义函数( User-Defined Function) 来完成一些需要重复使用的代码块,提高工作效率。原创 2025-03-10 23:40:13 · 778 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【2.0】
拿掉 print()函数的目的是能清楚地看到换行符\n,如果这时从左往右数,则会发现Cisco(5) + \n(1) + Juniper(7) + \n(1) + Arista(6) + \n(1) + H3C(3) + \n(1) + Huawei(6) + \n(1) = 32, 这就解释了为什么在文件指针移动到文件末尾后, tell()方法返回的文件指针的位置是 32。可以说readlines()是 read()和 readline()的结合体,首先它同 read()一样把文本文件的所有内容都读完。原创 2025-03-10 23:12:36 · 1134 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战【1.9】
每当写在 while 语句下的程序被执行一次,程序就会自动回到“顶上”(也就是 while 语句的开头部分),根据 while 后的判断语句的返回值来决定是否要再次执行该程序,如果判断语句的返回值为 True,则继续执行该程序,一旦判断语句的返回值为 False,则该 while 循环随即终止,如此反复。上面代码中,我们用 while 循环配合 len()函数来判断列表 vendors 的长度是否大于 0,如果判断结果为 True,则用 pop()方法从列表中删掉一个元素,并且随即打印列表里剩余的元素。原创 2024-05-04 23:16:23 · 805 阅读 · 1 评论 -
网络工程师的Python之路-网络运维自动化实战-1.7
这里我们创建一个内容为[1, 2, 3, 'a', 'b', 'c']的列表 a, 将它打印出来后,列表的元素的位置没有发生任何变化,因为列表是有序的。但是如果我们将刚才的字典 dict 打印出来,你会发现字典里键值对的顺序已经彻底被打乱了,没有规律可循,正因为字典是无序的,我们自然也不能像列表那样使用索引来查找字典中某个键对应的值。在字典里,查找某个值的格式为'字典名[键名]',举例如下。如果要在字典里新添加一组键值对,则格式为'字典名[新键名]' = '新值',举例如下。原创 2024-03-24 00:31:43 · 884 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.8
判断语句配合布尔值,通过判断一条或多条语句的条件是否成立( True 或者 False),从而决定下一步的动作,如果判断条件成立( True),则执行 if 或 elif 语句下的。布尔值是判断语句不可或缺的部分,在基础语法中讲到的比较运算符、逻辑运算符,以及字符串自带的 startswith()、 endswith()、 isdigit()、 isalpha()等方法,还有下面将会讲到的成员运算符等都会返回布尔值,下面就举例讲解它们各自在 Python 判断语句中的应用场景。index()的返回值为整。原创 2024-03-24 00:31:10 · 836 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.6
在网络运维中,有时会遇到需要用计数器做统计的时候,比如说某公司有 100 台思科2960 的交换机,由于长期缺乏系统性的运维管理,交换机的 IOS 版本并不统一,为了统计其中有多少台交换机的 IOS 版本是最新的,需要登录所有的交换机,每发现一台 IOS版本为最新的交换机就通过计数器加 1,直到结束。由于要完成这个脚本需要涉及Paramiko、 if、 for 循环、正则表达式等进阶性的 Python 知识点,所以这里仅演示计数器的用法。原创 2024-03-23 19:03:45 · 811 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.5
我们使用 input()函数提示用户输入想要查询的 IP 地址,然后将得到的值(字符串)赋值给变量 ip, 随后对其调用 split()函数,并将返回值(列表)赋给另一个变量 ip_list,接着通过 ip_list[2]做索引,得到该列表的第三个元素,也就是用户输入的 IP 地址的第三段,最后用 print 将查询的结果返回告知用户。如果不成立,则返回 False。字符串的内容包罗万象,字符串可以为空,可以为中文汉字或英文字母,可以为整数或小数,可以为任何标点符号,也可以为上述任意形式的组合。原创 2024-03-23 17:32:53 · 763 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.4
目前为止,我们还没有讲到列表( List),这里简单讲解一下:在 Python 中,列表是一种有序的集合,用中括号[]表示,该集合里的数据又被叫作元素,比如[1,3,5,7,9]就是一个最简单的列表,其中的整数 1、 3、 5、 7、 9 都属于该列表的元素。strip()的返回值是字符串,举例如下。有时在字符串末尾会有换行符\n(比如使用 open()函数的 readlines()方法来读取文本文件里的内容后所返回的列表里的元素,后文会讲到),我们也可以使用 strip()来移除这些换行符,举例如下。原创 2024-03-23 12:57:08 · 855 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.3
除此之外,在与团队合作的时候,在代码中使用注释也是极其重要的一项要求,因为你写的代码可能会被他人调用、维护,为了让他人更容易理解你写的代码的目的和用途,那么在代码中使用注释是非常必要的。最后,不是所有的英文单词都能用作变量名, Python 中有保留字( Reserved Word)的概念,保留字通常是 Python 中常用的关键词,比如用作创建函数的“ def”,用作 while循环和 for 循环的“ while”和“ for”,等等。举个例子,前面讲到的 type()就是一个函数,代码如下。原创 2024-03-23 12:39:22 · 1104 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.2
它的作用是指明执行脚本文件的解释程序。与 Windows 命令行终端一样, 在 CentOS 命令行终端也是通过输入 python xxx.py 来运行 Python 脚本的,不同的是,因为本书以 Python 3.8.2 为例,这里需要把 python 换成python3.8,写成 python3.8 xxx.py 来运行脚本,如下图所示。我们知道,在 CentOS 的命令行终端里输入命令 python3.8 即可进入 Python 3.8.2 的解释器,也就进入了 Python 的交互模式,如下所示。原创 2024-03-23 11:28:45 · 932 阅读 · 0 评论 -
网络工程师的Python之路-网络运维自动化实战-1.1
安装过程中有一个很重要的步骤,如下图中的“ Add Python 3.8 to PATH”, 这里默认是没有勾选的,请务必勾选, 它会自动帮你设置好环境变量,也就是说将来在你打开命令行运行 Python 脚本时,你可以在任意盘符和文件夹下直接输入命令 python xxx.py 来运行脚本,而无须输入 Python 执行程序所在的完整路径来运行脚本,例如 C:\Python38\pythonxxx.py,不要小看这一选项提供的自动环境变量设置,它能帮助 Python 初学者节省很多很多时间!原创 2024-03-23 10:58:14 · 1027 阅读 · 0 评论