gpt4 book ai didi

python-2.7 - 更改 IP 地址的最后八位字节

转载 作者:行者123 更新时间:2023-12-02 01:50:53 25 4
gpt4 key购买 nike

使用下面的代码,我从包含 IP 地址列表的文本文件中获取 IP 地址。然后通过 SSH 连接到 Cisco 路由器以进行对所有设备通用的更改。然而,这一次我必须进行本质上可变的更改。

示例:

我必须获取 IP 地址 (10.120.15.1) 和 SSH 到设备中并应用以下命令

“访问列表 150 允许 ip 10.120.15.0 0.0.0.255 主机 10.100.100.1”

IP 地址已经包含在变量“line”中,我必须拆分最后一个八位字节并将其从“1”更改为“0”,然后插入到访问列表中。

请分享您的意见。

import paramiko
import sys
import os
import time
import cmd

buff = ''
resp = ''

with open('Address.txt', 'r') as f:
for line in f:
line = line.strip()
dssh = paramiko.SSHClient()
dssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
dssh.connect(line, username='cisco', password='cisco')
chan = dssh.invoke_shell()
chan.send('conf t\n')
time.sleep(1)
resp = chan.recv(9999)
chan.send('access-list 150 permit ip X.X.X.X 0.0.0.255 host 10.100.100.1\n exit\n')
time.sleep(1)
resp = chan.recv(9999)
dssh.close()

最佳答案

您可以使用 netaddr Python 包。

例子:

>>> n = IPNetwork('10.120.15.1/24')
>>> list(n)[0:3]
[IPAddress('10.120.15.0'), IPAddress('10.120.15.1'), IPAddress('10.120.15.2')]
>>> IPNetwork('10.120.15.1/24').network
IPAddress('10.120.15.0')
>>> str(IPNetwork('10.120.15.1/24').network)
'10.120.15.0'

至于您的脚本,您应该能够在同一个 SSH session 中执行所有访问列表修改,而不是每个地址行一个 SSH session 。

我还怀疑您在 access-list 命令中反转了网络掩码 — 它可能应该是 255.255.255.0 而不是 0.0.0.255(参见 examples)。

此外,我看到您正在生成许多相同形式的访问规则。那将很难管理。相反,您应该编写一个引用网络对象组的访问规则。您应该只使用您的脚本来添加/删除组的成员。

关于python-2.7 - 更改 IP 地址的最后八位字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22803210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com