文章目录
Netmiko 的常用方法
之前文章中,介绍了 Netmiko 中
send_command
和
send_config_set
两个方法以及区别。
本篇内容来介绍一下 Netmiko 的常用方法以及应用场景。
命令执行相关
def send_command_timing():
基于时间延迟来执行命令。
如果通过这个方法登录到设备执行命令,不管命令有没有执行完成,Netmiko 都会在指定的时间内结束 SSH 连接,一般不推荐使用。
这里可以对比一下send_command
,这个方法会检测设备的提示符,例如>
、]
、#
等,它会一直等待接收数据,直到检测到提示符后再进行退出(也有一个默认的超时时间)。
我们可以通过delay_factor
和max_loops
来控制等待时间。
- send_command_timing:默认超时时间约为 15 秒,即登录设备 15 秒后关闭 SSH 连接
- send_command:默认超时时间约为 100 秒,即 100 秒未检测到提示符就关闭 SSH 连接
def send_config_from_file():
读取一个配置文件,然后将配置文件发送到设备上。
这个方法的本质是和send_config_set
是一样的,只不过程序帮我们读取了配置而不用再在脚本中输入。
# 具体的实现方式
def send_config_from_file(self, config_file=None, **kwargs):
with io.open(config_file, "rt", encoding="utf-8") as cfg_file:
return self.send_config_set(cfg_file, **kwargs)
操作模式相关
Netmiko 中,模式相关的方法后端都是通过根据不同的设备发送相应的命令来实现;检查模式时是通过正则表达式匹配来实现。
enable
进入 enable
模式。
# 具体实现方式,思科设备为例
def enable(
self,
cmd="enable",
pattern="ssword",
enable_pattern=None,
re_flags=re.IGNORECASE,
):
"""Enter enable mode."""
return super().enable(
cmd=cmd, pattern=pattern, enable_pattern=enable_pattern, re_flags=re_flags
)
config_mode
进入 config
模式。
check_config_mode
检查是否处于config
模式,返回结果为 True / False
check_enable_mode
检查是否处于enable
模式,返回结果为 True / False
# 具体实现方式
def check_enable_mode(self, check_string="#"):
"""Check if in enable mode. Return boolean."""
return super().check_enable_mode(check_string=check_string)
其他
def is_alive():
通过向 SSH 隧道发送空字符串,来判定是否连接仍然正常,返回结果为 True / False 。
附录:Netmiko 中所有可以调用的方法
Netmiko 中所有的网络设备的类都是基于BaseConnection
类来实现的,通过查看该类来浏览所有方法。
# _ 开头的为私有方法,以下只查看外部可以直接使用的方法
from netmiko.base_connection import BaseConnection
for i in dir(BaseConnection):
if not i.startswith('_'):
print(i)
结果如下:
check_config_mode
check_enable_mode
cleanup
clear_buffer
close_session_log
commit
config_mode
disable_paging
disconnect
enable
establish_connection
exit_config_mode
exit_enable_mode
find_prompt
is_alive
normalize_cmd
normalize_linefeeds
open_session_log
paramiko_cleanup
read_channel
read_until_pattern
read_until_prompt
read_until_prompt_or_pattern
save_config
select_delay_factor
send_command
send_command_expect
send_command_timing
send_config_from_file
send_config_set
serial_login
session_preparation
set_base_prompt
set_terminal_width
special_login_handler
strip_ansi_escape_codes
strip_backspaces
strip_command
strip_prompt
telnet_login
write_channel