一、環境准備:
1. python 版本,Microsoft Store 直接安裝的:
D:\Documents\python lab\python\python_switch>python Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.
2. paramiko 是一個實現SSH遠程設備的模塊,由於是第三方模塊,需要先安裝:
pip install paramiko
二、創建遠程的 IP 地址列表和配置命令的 txt 文件:
兩個文件與腳本放在同一目錄下
1. 新建名稱為:ip_list.txt 的 txt 文件用來存放需要 SSH 的交換機IP地址
192.168.22.64 192.168.22.1
2. 新建名稱為:cmd_list.txt 的 txt 文件用來存放需要配置的命令
system-view
undo FTP server
vlan 28
三、批量SSH遠程到交換機進行配置的腳本:
""" 作者:五個一齋 功能:批量SSH配置網絡設備 版本:1.0 日期:2021年03月17日 """ # _*_ encoding:gbk _*_ # _*_ coding:UTF-8 _*_ import paramiko import time import getpass # 為了異常處理來應對網絡設備不可達引起的socket.error,必須引入socket這個Python內建模塊 import socket import io username = input('Username:') password = getpass.getpass('Password:') ip_file = 'ip_list.txt' cmd_file = 'cmd_list.txt' log = io.open('log.txt', 'a', encoding='utf-8') # 創建兩個空列表用於統計有哪些設備因為密碼錯誤無法登錄、設備本身問不可達無法登錄 switch_with_authentication_issue = [] switch_not_reachable = [] iplist = open(ip_file, 'r') for line in iplist.readlines(): try: ip = line.strip() ssh_client = paramiko.SSHClient() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_client.connect(hostname=ip, username=username, password=password) print("恭喜你成功登錄 ", ip) command = ssh_client.invoke_shell() cmdlist = open(cmd_file, 'r') cmdlist.seek(0) for line in cmdlist.readlines(): command.send(line) time.sleep(1) cmdlist.close() output = command.recv(65535) print(bytes.decode(output)) bs = bytes.decode(output) log.write(bs) except paramiko.ssh_exception.AuthenticationException: print("密碼錯誤 " + ip + ".") switch_with_authentication_issue.append(ip) except socket.error: print(ip + " 無法連接") switch_not_reachable.append(ip) iplist.close() ssh_client.close() print('\n因認證問題無法登錄:') log.write("\n\n\n\n密碼錯誤的交換機:\n") for i in switch_with_authentication_issue: print(i) log.write(i + "\n") print('\n無法連接以下交換機:') log.write("\n\n\n無法連接的交換機:\n") for i in switch_not_reachable: print(i) log.write(i + "\n") input("按回車關閉窗口!~")
測試效果:
D:\Documents\python lab\python3\python_switch>"C:/Program Files/Python38/python.exe" "d:/Documents/python lab/python3/python_switch/swconifg_v1.py"
Username:admin
Password:
恭喜你成功登錄 192.168.22.64
Info: The max number of VTY users is 10, and the number
of current VTY users on line is 2.
The current login time is 2021-03-17 18:24:46+08:00.
<switch>system-view
Enter system view, return user view with Ctrl+Z.
[switch]undo FTP server
Info: Succeeded in closing the FTP server.
[switch]vlan 28
192.168.22.1 無法連接
因認證問題無法登錄:
無法連接以下交換機:
192.168.22.1
按回車關閉窗口!~
同時會在腳本文件目錄下生成一個log.txt文件,記錄命令運行的情況。
