スポンサーリンク
スポンサーリンク

Pythonを使ってcisco log取得(SSH接続)

【前提】

・pythonが実行できる環境を用意です。

・必要なライブラリは準備する。

以下、ファイルを

・xxx.py(以下にサンプルを記載)

・host_list.xxxtxt(以下にサンプルを記載)

・command_list.txt(以下にサンプルを記載)

構成図

Pythonコード

# 必要なライブラリ

from netmiko import ConnectHandler
import datetime
import chardet

#ファイルエンコードのチェック

def detect_encoding(filename):
    with open(filename, “rb”) as f:
      result = chardet.detect(f.read())
    return result[“encoding”]

# command_listオープン

def read_command_list(filename):
    with open(filename, “r”) as f:
        return [line.strip() for line in f]

# ログインとcommand_list処理

def login_and_execute_commands(host_name, ip_address, username, password, command_list):
    device = {
        ‘device_type’: ‘cisco_ios’,
        ‘ip’: ip_address,
        ‘username’: username,
        ‘password’: password,
    }

SSH接続処理

    connection = ConnectHandler(**device)
    outputs = []
    for command in command_list:
        output = connection.send_command(command)
        outputs.append(output)
    timestamp = datetime.datetime.now().strftime(‘%Y%m%d_%H%M%S’)
    logfile = f”{host_name}_{ip_address}_{timestamp}.txt”
    with open(logfile, ‘w’) as f:
        for output in outputs:
            f.write(output + “\n\n”)  # Write each command output separated by two newlines

#メイン処理

def main():
    filename = “C:\\host_list.txt”
    file_encoding = detect_encoding(filename)
    command_list_file = “C:\\command_list.txt”
    command_list = read_command_list(command_list_file)
    with open(filename, “r”, encoding=file_encoding) as txtfile:
        for line in txtfile:
            row = line.strip().split(“,”)  # Split the line by comma
            if len(row) != 4:
                print(f”Invalid row in the TXT file: {row}”)
                continue
            host_name, ip_address, username, password = row
            login_and_execute_commands(host_name, ip_address, username, password, command_list)

if __name__ == “__main__”:
    main()

ホスト名リスト

ファイル名:host_list.txt
R1,192.168.1.1,admin,abc
R2,192.168.1.2,admin,abc

(ホスト名、IPアドレス、SSHログインユーザID、SSHログインパスワード)

コマンドリスト

command_list.txt
ter len 0
show run
show ver
show int fa0
show int fa1
show int fa0

(シスコ機器showコマンド例)

pythonALL
スポンサーリンク
スポンサーリンク