Netmiko 会话时间 Python

Netmiko session time Python

有没有办法使用 Netmiko 登录到 Cisco 设备并保持登录状态?我有一个 Python 脚本应该每 5 秒连接到 Cisco 设备,但最好登录一次并保持登录状态,然后通过脚本发送命令从 Cisco 设备中提取数据。

提前致谢

您知道 keepalive 参数吗? 您还应该注意设备中的超时并允许噪声容限。

对于遇到这个问题的每个人来说,问题是在 python 脚本完成后它会自动断开与 Cisco 设备的连接,即使您没有为 Netmiko 输入断开连接命令也是如此。

因此,解决此问题的方法是始终保持连接:

在创建循环之前连接到您的每个网络设备:

asafw1 = {
    "host": "10.0.1.1",
    "device_type": "cisco_ios",
    "username": "user",
    "password": "password",
}
asafw2 = {
    "host": "10.2.1.1",
    "device_type": "cisco_ios",
    "username": "user",
    "password": "password",
}

conn1 = ConnectHandler(**asafw1)
conn2 = ConnectHandler(**asafw2)

然后定义函数并将 conn 参数传递给该函数:

def update_user_info_function(conn):

### Connection to ASA via Netmiko module and Connection Handler function ###
asa_output = conn.send_command("show version")
print(asa_output)

现在调用函数并使用上面配置的 conn1 和 conn2 作为参数:

while True:
    update_user_info_function(conn1)
    update_user_info_function(conn2)
    ### Wait 1 seconds before you go through the loop again ###
    time.sleep(1)

因此,您的网络脚本将始终 运行,并且您将始终连接到您的设备。如果您有 radius 服务器并且您的所有设备都指向该服务器,这将非常有用,这样您将只连接到您的设备一次,保持连接并从该单元提取数据。因此,您不会每次都连接到该设备来提取数据,这意味着您不会使用CPU那么多,并且不会在 radius 服务器上生成很多行日志。

这个解决方案对我们很有帮助,因为我们正试图从 Cisco 设备获取 VPN 数据并将该数据发送到 mysql。使用它,我们可以每秒从 Cisco 设备中提取数据,并将该数据发送到 mysql 并将其存储在那里以供 Web 视图使用。

您也可以使用下面的“时间表”库。它还具有 hour/day/minute/week 设置。

#schedule.every(60).minutes.do(def_name)
#schedule.every().hour.do(def_name)
#schedule.every().day.at("08:00").do(def_name)
#schedule.every().monday.do(def_name)
#schedule.every().wednesday.at("13:15").do(def_name)
schedule.every().minute.at(":05").do(def_name)

while True:
    schedule.run_pending()
    time.sleep(1)

def_name()