网络自动化运维 Help

1-3 开始与网工结合

通过ipaddress库判断IP地址是否正确,属于ipv4还是ipv6等信息。

集成开发工具Pycharm

IDE: (integrated develop environment)集成开发工具,不止集成了解释器,语法提示,还集成了数据库客户端,代码版本等多个工具。 略,见老师操作。

根据这几个方面熟悉:

  • 解释器,初学建议选择 已存在的解释器。

  • 运行脚本,其实还是 python xxx.py。

  • 熟悉设置。调整编辑器字体大小,更换主题,安装插件。安装chinese translate、active-power-mode、theme、bongo cat、snake game等插件个性化你的编辑器。

内置库(第一方库)

Python解释器安装目录/Lib 下,例如os、time、datetime、tkinter、urllib库,功能简单基础且常用。

实验判断ip合法性

如果用1-1节自己写的话,比较麻烦,且不会判断ipv6,而使用python官方写好的ipaddress库,调用方法即可。

  1. 安装ipaddress库 ipaddress库 pypi主页
    ipaddress库 github主页

  2. 尝试基本用法

    import ipaddress # 成功返回IP本身 print(ipaddress.ip_address('1.1.1')) # 失败报错和提示错误原因 try: ipaddress.ip_address('1.1.1') except Exception as e: print(e)
  3. 更多用法参考教材p13。(课外)其它类似功能的库参考p14尝试。

1 3 pycharm

第三方库

pip(Package Installer for Python): Python第三方包管理器,大家可以封装功能上传自己的代码,也可以下载别人写好的开源代码加速自己的开发, 在pypi.org上浏览,平台上几十万的第三方库可以大大提高开发效率和降低难度。

参照课本p15,以tabulate库为例子,tabulate库是一个命令行表格格式化输出的库。

  • 安装包及其依赖

    pip install tabulate

    第三方库实际安装到了 解释器根目录 /Lib/site-packages 目录下,可以看到包代码文件夹和包元信息文件夹。

  • 安装指定版本pip install request==4.3.0

  • 卸载pip uninstall request

  • 查看已安装pip list

pycharm有图形化界面,但并不好用,建议在Windows Powershell中操作。

国内镜像源:默认从国外网址pypi.org下载,如果下载速度缓慢,报 Timeout 错误,那么可以通过-i参数添加国内镜像源地址,常用的国内镜像源有阿里源、豆瓣源、清华源、腾讯源等。
pip install request -i https://pypi.tuna.tsinghua.edu.cn/simple

其它实验

题目:已知教室的网络网段为 172.31.5.0/24 ,遍历ip,用os库执行ping命令,得到最后结果。

import ipaddress import os def ping_ip_os_system(ip_address): """ 使用 os.system 执行 ping 命令来检测 IP 地址的连通性。 Args: ip_address: 要 ping 的 IP 地址字符串。 Returns: True: ping 通 False: ping 不通 """ # Windows 下使用 'ping -n 1 <ip>' 命令,-n 1 表示只发送一个回显请求 command = f"ping -n 1 {ip_address}" # os.system() 执行命令并返回退出状态码。0 表示成功,非零表示失败。 return_code = os.system(command.encode('utf-8')) if return_code == 0: return True else: return False def enumerate_and_ping_ips_os_system(network_cidr): """ 遍历给定网段内的所有IP地址,并使用 os.system 和 ping 命令检测每个地址的连通性,输出结果。 Args: network_cidr: 网段的 CIDR 表示法字符串 (例如 '172.22.5.0/24')。 """ try: ip_network = ipaddress.ip_network(network_cidr) print(f"网段: {network_cidr}") print("-" * 30) for ip in ip_network: ip_str = str(ip) if ping_ip_os_system(ip_str): print(f"{ip_str} -- 通 (os.system)") else: print(f"{ip_str} -- 不通 (os.system)") except ValueError as e: print(f"无效的网段地址: {e}") if __name__ == "__main__": network_cidr = '172.22.5.0/24' # 您提供的网段 enumerate_and_ping_ips_os_system(network_cidr)

实验2

课本p15页tabulate库

26 五月 2025