【发布时间】:2023-11-16 20:57:01
【问题描述】:
我刚开始提出问题,总是阅读答案以改进我的代码,但从未问过,所以这是我第一次来这里。
我正在尝试制作一个实现一些网络自动化的简单场景。
场景: 我有 3 台虚拟机(第 1 台在阿根廷,第 2 台在巴西,第 3 台在迈阿密) 需要通过 SSH 连接到这台机器,对 IP2Location 模块中最近填写的 IP 地址执行 MTR 测试。 问题是我需要通过 IP 的最近点执行此测试。 示例:如果我有智利 IP 地址,我需要在阿根廷的 VM 上进行此测试,如果 IP 来自墨西哥,我需要通过我在迈阿密的 VM 等进行测试。 为此,我使用 IP2Location(我只是修改了基本代码以手动填充 IP) 放置 IP 后,IP2Location 会打印 Country 全名。 获得国家全名后,我使用 (if, elif, else) 语句连接到 Netmiko 拥有的不同 VM,执行测试并打印结果。
但是,这并没有像我预期的那样工作,它总是进入忽略 IF 和 ELIF 的“else”语句。
代码如下:
import IP2Location
from netmiko import ConnectHandler
from datetime import datetime
import subprocess
IP2LocObj = IP2Location.IP2Location();
IP2LocObj.open("/Volumes/DATA/nico/Desktop/ServDeg/IP2LOCATION-LITE-DB1.BIN"); #Path to the Database BIN
rec = IP2LocObj.get_all((str(input("IP: "))));
print(rec.country_long)
if rec.country_long is 'Brazil':
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx', username='xxx', password='xxx')
output = net_connect.send_command('mtr ' + IP2LocObj + ' -c 10')
print(output)
elif rec.country_long is 'Argentina':
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx', username='xxx', password='xxx')
output = net_connect.send_command('mtr ' + IP2LocObj + ' -c 10')
print(output)
elif rec.country_long is 'Chile':
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx', username='xxx', password='xxx')
output = net_connect.send_command('mtr ' + IP2LocObj + ' -c 10')
print(output)
elif rec.country_long is 'Uruguay':
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx', username='xxx', password='xxx')
output = net_connect.send_command('mtr ' + IP2LocObj + ' -c 10')
print(output)
else:
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx', username='xxx', password='xxx')
output = net_connect.send_command('mtr ' + IP2LocObj + ' -c 10')
print(output)
您可以从此处https://www.ip2location.com/developers/python 下载 IP2location DB 的 bin 文件
(我不显示 IP,因为这些是公共的,每个人都可以进入)但这可以在 GNS3 上简单地模拟。
感谢和问候!!!
【问题讨论】:
-
你在这段代码中看到了什么?打印(rec.country_long)
-
@MichaelC。谢谢,但我成功了!
-
@MichaelC。几个小时后,我将使用完整的代码更新这篇文章,完全可以正常工作!
标签: linux python-3.x virtual-machine paramiko ip2location