「Python 网络自动化」Netmiko ——Netmiko 常用方法

「Python 网络自动化」系列文章总目录


文章目录

    • 命令执行相关
      • def send_command_timing():
      • def send_config_from_file():
    • 操作模式相关
      • enable
      • config_mode
      • check_config_mode
      • check_enable_mode
    • 其他
      • def is_alive():
  • 附录:Netmiko 中所有可以调用的方法

Netmiko 的常用方法
之前文章中,介绍了 Netmiko 中 send_commandsend_config_set 两个方法以及区别。
本篇内容来介绍一下 Netmiko 的常用方法以及应用场景。

命令执行相关

def send_command_timing():

基于时间延迟来执行命令。
如果通过这个方法登录到设备执行命令,不管命令有没有执行完成,Netmiko 都会在指定的时间内结束 SSH 连接,一般不推荐使用。

这里可以对比一下send_command,这个方法会检测设备的提示符,例如>]# 等,它会一直等待接收数据,直到检测到提示符后再进行退出(也有一个默认的超时时间)。

我们可以通过delay_factormax_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

你可能感兴趣的:(NetDevOps,网络,netdevps,网络自动化)