之前文章中,介绍了 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
是一样的,只不过程序帮我们读取了配置而不用再在脚本中输入。
1 2 3 4
| 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
模式。
1 2 3 4 5 6 7 8 9 10 11 12
| 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
1 2 3 4
| 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
类来实现的,通过查看该类来浏览所有方法。
1 2 3 4 5
| from netmiko.base_connection import BaseConnection for i in dir(BaseConnection): if not i.startswith('_'): print(i)
|
结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| 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
|