【问题标题】:Change last octet of IP address更改 IP 地址的最后一个八位字节
【发布时间】:2014-05-13 05:59:39
【问题描述】:

使用下面的代码,我从包含 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()

【问题讨论】:

  • 有一个ipaddress 模块,但它是在Python 3.3 中引入的。

标签: python-2.7 ip-address


【解决方案1】:

您可以使用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 会话中执行所有访问列表修改,而不是每个地址行一个 SSH 会话。

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

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

【讨论】:

  • 感谢您的回复。我相信您错误地理解了我的查询。我在这里的任务是将 IP 地址的最后一个八位字节从“1”更改为“0”并将其插入访问列表。例如:IP 地址为 10.120.15.1;将IP地址更改为10.120.15.0,然后将转换后的IP地址插入访问列表中代替X.X.X.X;访问列表 150 允许 ip X.X.X.X 0.0.0.255 主机 10.100.100.1;最终输出为 = access-list 150 permit ip 10.120.15.0 0.0.0.255 host 10.100.100.1.
  • 上面的例子就是这样做的。您只需将其作为str(IPNetwork(line.strip() + '/24').network) 合并到您的脚本中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
相关资源
最近更新 更多