1. 程式人生 > 其它 >【netmiko】python 使用 netmiko 連線 h3c 交換機網路裝置 - 2

【netmiko】python 使用 netmiko 連線 h3c 交換機網路裝置 - 2

技術標籤:NetDevOps網路netdevps網路自動化

python 使用 netmiko 連線 h3c 交換機網路裝置 - 1
python 使用 netmiko 連線 h3c 交換機網路裝置 - 2


文章目錄


Netmiko 的常用方法
上一篇文章中,介紹了 Netmiko 中 send_command
send_config_set 兩個方法以及區別。
本篇內容來介紹一下 Netmiko 的常用方法以及應用場景。

命令相關

send_command_timing

基於時間延遲來執行命令。
如果通過這個方法登入到裝置執行命令,不管命令有沒有執行完成,Netmiko 都會在指定的時間內結束 SSH 連線,一般不推薦使用。

這裡可以對比一下send_command,這個方法會檢測裝置的提示符,例如>]# 等,它會一直等待接收資料,直到檢測到提示符後再進行退出(也有一個預設的超時時間)。

我們可以通過delay_factormax_loops來控制等待時間。

  • send_command_timing:預設超時時間約為 15 秒,即登入裝置 15 秒後關閉 SSH 連線
  • send_command:預設超時時間約為 100 秒,即 100 秒未檢測到提示符就關閉 SSH 連線

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)

其他

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