- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚开始问问题,总是阅读答案以改进我的代码,但从未问过,所以这是我第一次来这里。
我试图制作一个简单的场景来实现一些网络自动化。
场景:我有 3 个虚拟机(第一个在阿根廷,第二个在巴西,第三个在迈阿密)需要通过 SSH 连接到这台机器,以对 IP2Location 模块中最近填充的 IP 地址执行 MTR 测试。问题是我需要通过 IP 的最近点执行此测试。示例:如果我有一个智利 IP 地址,我需要在阿根廷的 VM 上进行此测试,如果 IP 来自墨西哥,我需要通过我在迈阿密的 VM 等进行测试。为此,我使用 IP2Location(我只是修改了基本代码以手动填充 IP)放置 IP 后,IP2Location 打印国家全名。获得国家/地区全名后,我使用 (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)
您可以从此处下载 IP2location 数据库的 bin 文件 https://www.ip2location.com/developers/python
(我没有显示 IP,因为这些是公开的,每个人都可以进入)但这可以简单地在 GNS3 上模拟。
感谢和问候!!!
最佳答案
解决方法如下:
#Serv_deg_without_Demark_device by NMorra
from netmiko import ConnectHandler
from datetime import datetime
import IP2Location
start_time = datetime.now()
IP2LocObj = IP2Location.IP2Location() #Modulo IP-GEOLOCATION
IP2LocObj.open("/Volumes/DATA/nico/Desktop/ServDeg/IP2LOCATION-LITE-DB1.BIN");
#Bin Location
country = IP2LocObj.get_all(ipaddr) # ('mtr ' + str(var) + ' -c 10')
print("", ipaddr) #
country.country_long = str(country.country_long)[2:-1]
print(country.country_long)
print('Test in progress...')
if country.country_long == ('Argentina'):
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx',
username='xxx', password='xxx')
mtr = net_connect.send_command('mtr ' + str(ipaddr) + ' -c 10 -r')
net_connect.disconnect()
elif country.country_long == ('Chile'):
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx',
username='xxx', password='xxx')
mtr = net_connect.send_command('mtr ' + str(ipaddr) + ' -c 10 -r')
net_connect.disconnect()
elif country.country_long == ('Uruguay'):
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx',
username='xxx', password='xxx')
mtr = net_connect.send_command('mtr ' + str(ipaddr) + ' -c 10 -r')
net_connect.disconnect()
elif country.country_long == ('Brazil'):
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx',
username='xxx', password='xxx')
mtr = net_connect.send_command('mtr ' + str(ipaddr) + ' -c 10 -r')
net_connect.disconnect()
else:
net_connect = ConnectHandler(device_type='linux', ip='xxx.xxx.xxx.xxx',
username='xxx', password='xxx')
mtr = net_connect.send_command('mtr ' + str(ipaddr) + ' -c 10 -r')
net_connect.disconnect()
print('')
print('>'*10, 'MTR', '<'*10)
print(mtr)
end_time = datetime.now()
time = end_time-start_time
print('_'*5)
print('Time: ', time)
关于linux - IP2Location + Netmiko 到 SSH 到 VM 到 MTR 并打印结果(If、elif、else 语句问题)PYTHON3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355629/
我想压缩一些看起来像这样的湿代码: if slips[i] 0: ac.setBackgroundOpacity(wheel['slip'], 1) 请注意,least_bound_inde
我有 5 组请求的类别定义为 python 字典,例如: category1 = {'type1', 'type2', 'type3'} category2 = {'type4', 'type5'}
这个问题在这里已经有了答案: Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of
我在网站上使用 Django,需要构建一个上下文处理器来提供引荐来源网址(名为 referer 的变量)信息。 我有一个简单的 if、elif、elif、else 语句: [ . . . ] host
这是我的个人项目,现在我的程序是大量 if 语句,这些语句基于我制作的字典,其中包含每一季的剧集编号(不同的季节有不同的剧集数)和标题。我得到了想要的结果,但是我一直在尝试寻找一种更高级的方法,例如使
在类方法中,我有一组针对单个关键字参数的可能选项,每个选项都有不同的算法来计算某些内容。为了检查哪个选项已添加到关键字中,我创建了一系列 if、elif、else 也找到了提供的关键字选项。 clas
所以我试图在 bash 脚本中执行 if else if else 语句。截至目前,当我运行此脚本时,我收到以下错误消息“./groupJobs.sh: line 76: syntax error n
我有一个 in if-elif-elif-else 语句,其中 99% 的时间执行 else 语句: if something == 'this': doThis() elif somethi
如果这是一个非常简单的问题,请原谅我。我已经在这几个小时了。我正在尝试每行读取一个 csv 文件。但是在最后一行,我不希望它附加任何“,”,这就是为什么我在 if-elif 语句中将问题分开。 我不确
税收计算器 def computeTax(maritalStatus,userIncome): if maritalStatus == "Single": print("User is s
我正在编写一个函数来清理字典数据,其中包含一个显示日期和该日期降雨量的键值对。数据清洗的条件是去除满足以下条件的和键值对: 类型不是整数或 float 。即使值是一个可以转换为整数的字符串(例如"5"
我正在编写一个函数来清理字典数据,其中包含一个显示日期和该日期降雨量的键值对。数据清洗的条件是去除满足以下条件的和键值对: 类型不是整数或 float 。即使值是一个可以转换为整数的字符串(例如"5"
这里有一些代码由于不正确的语句而不起作用 #Calculator print("This is a program that can be used as a calculator") print("
我想知道是否有更好的写法。下面所述的当前代码有效。我只是想知道是否有更好的方法。 这是为了验证。因此,if 语句检查所有必填字段,如果它们可以接受,则它会进入执行代码。问题开始是因为 的输入字段 se
我正在尝试使用 if elif 测试一个条件,但我没有得到想要的结果。请帮助我确定我做错了什么? #include using namespace std; #define a(t1)(t1+50)
#!/bin/bash if [ "$1" = "boot" ] then if [ -f /var/log/boot.log ] then echo /var/
./chkf: line 30: syntax error near unexpected token `elif' '/chkf: line 30: `elif [ -f "$object" ] ;
我想提取 Pandas 数据框中格式不一致的数据字段的位置。 (我不维护数据,因此无法更改此字段的格式。) 运行以下玩具版本 string2 = 'Denver.John' if string2.fi
亲们, 您将如何用字典重写“checkme”函数中的 if/elif? def dosomething(queue): ... def checkme(queue): """ Consum
我是 Python 的新手,我用它来做一个丑陋的小 put-this-tabular-data-into-a-db 转换。该程序查看数据,在 MySQL 中创建一个表,然后将数据读入表中。在本节中,将
我是一名优秀的程序员,十分优秀!