華為交換機配置導出備份python腳本

一、腳本編寫思路

(一)針對設備型號

主要針對華為(Huawei)和華三(H3C)交換機設備的配置備份

(二)導出前預處理

1.在配置導出前,自動打開crt軟件或者MobaXterm軟件,并自動登錄交換機,進行配置導出。
4.自動檢測被導出交換機是否搭建ftp配置,如果沒有配置ftp服務,自動完善ftp配置,并自動完善交換機設備和電腦ftp配置文件的傳輸設備。
2.需要密碼登錄的交換機,在桌面自動讀取一個表格文檔,名稱為:【交換機設備信息表】的表格文件。
3.根據讀取到的文檔,新建ssh會話,輸入文本的IP,管理員賬號和密碼,并自動登錄設備。

(三)配置文件導出格式


1.將所有配置導出文件保存到桌面并新建一個文件夾名稱為:時間戳+交換機,
2.每個導出交換機配置名稱保存為:設備命名+設備型號+時間戳。 ? ?
3.導出的同一設備配置文件格式必須同時包含TXT文本和cfg

二、函數依賴庫

為了運行Python腳本,需要確保已經安裝了幾個特定的Python庫。這些庫包括用于處理網絡連接、文件操作和數據處理的工具。以下是必須安裝的庫列表及其用途:

  1. paramiko: 用于處理SSH連接和會話,這對于與交換機進行通信非常重要。
  2. pandas: 用于讀取和處理Excel文件中的數據,這是從桌面讀取設備信息的關鍵部分。
  3. openpyxl: 這不是腳本中直接提到的,但它是pandas用于處理Excel文件的依賴庫,特別是.xlsx文件。
  4. socket: 這是標準庫中的一部分,用于獲取本機IP地址,通常不需要單獨安裝。
(一)安裝步驟

你可以通過Python的包管理器pip來安裝所需的庫。在你的命令行工具中運行以下命令來安裝這些庫:

pip install paramiko pandas openpyxl 

這條命令會安裝paramikopandas,同時確保openpyxl也被安裝,使得pandas可以處理Excel文件。

(二)確保環境配置正確

在運行腳本之前,還應確保你的Python環境配置正確,特別是Python版本。這個腳本應該在Python 3.x環境中運行無誤。你可以通過運行python --versionpython3 --version(取決于你的系統配置)來檢查你的Python版本。

(三)安裝示例

(四)確保環境配置正確

在運行腳本之前,還應確保你的Python環境配置正確,特別是Python版本。這個腳本應該在Python 3.x環境中運行無誤。你可以通過運行python --versionpython3 --version(取決于你的系統配置)來檢查你的Python版本。

如果你是在一個新的環境或虛擬環境中工作,確保所有庫都按需安裝。這樣可以避免影響系統中其他Python項目的依賴。

三、Python腳本

import paramiko  # 導入paramiko庫用于SSH連接
import pandas as pd  # 導入pandas庫處理Excel文件
import os  # 導入os庫進行文件系統操作
from datetime import datetime  # 導入datetime庫獲取時間戳
import time  # 導入time庫用于暫停操作
import socket  # 導入socket庫用于獲取本機IP地址# 讀取設備信息表
def read_device_info():file_path = os.path.join(os.path.expanduser('~'), 'Desktop', '交換機設備信息表.xlsx')  # 構造文件路徑return pd.read_excel(file_path)  # 使用pandas讀取Excel文件并返回# 獲取本機IP地址
def get_local_ip():s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 創建UDP sockettry:s.connect(('10.255.255.255', 1))  # 嘗試連接到一個不存在的地址以獲取本機IPIP = s.getsockname()[0]  # 獲取成功后的本機IP地址except Exception:IP = '127.0.0.1'  # 如果獲取失敗,使用本地回環地址finally:s.close()  # 關閉socketreturn IP# 創建文件夾用于存放配置
def create_folder():timestamp = datetime.now().strftime("%Y%m%d%H%M%S")  # 獲取當前時間戳folder_name = f"{timestamp}_交換機"  # 定義文件夾名folder_path = os.path.join(os.path.expanduser('~'), 'Desktop', folder_name)  # 定義完整路徑os.makedirs(folder_path, exist_ok=True)  # 創建文件夾,如果存在則忽略return folder_path# 設置FTP服務
def setup_ftp(ssh, local_ip):commands = ['display ftp-server configuration\n',  # 查看FTP服務器配置'ftp server enable\n',  # 啟用FTP服務的命令f'ftp server acl permit source ip {local_ip}\n'  # 設置FTP服務的訪問控制,允許本機IP訪問]ssh.send(commands[0])  # 發送第一個命令time.sleep(2)  # 等待命令執行output = ssh.recv(65535).decode('utf-8')  # 讀取輸出if 'FTP server is not configured' in output:  # 如果FTP服務未配置for command in commands[1:]:  # 遍歷并執行剩余命令ssh.send(command)time.sleep(1)# 導出配置文件
def export_config(ip, username, password, device_info, folder_path):client = paramiko.SSHClient()  # 創建SSH客戶端client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 自動接受新的SSH密鑰client.connect(ip, username=username, password=password)  # 連接到設備local_ip = get_local_ip()  # 獲取本機IP地址with client.invoke_shell() as ssh:  # 開啟一個新的SSH會話setup_ftp(ssh, local_ip)  # 調用函數檢查并配置FTPcommands = ['display current-configuration\n', 'save\n']  # 定義配置備份命令for command in commands:  # 循環發送命令ssh.send(command)time.sleep(5)  # 等待命令執行output = ssh.recv(65535).decode('utf-8')  # 讀取配置輸出timestamp = datetime.now().strftime("%Y%m%d%H%M%S")  # 重新獲取時間戳filename_base = f"{device_info['設備命名']}_{device_info['設備型號']}_{timestamp}"  # 構造文件名with open(os.path.join(folder_path, f"{filename_base}.txt"), 'w') as file_txt:  # 保存為txt文件file_txt.write(output)with open(os.path.join(folder_path, f"{filename_base}.cfg"), 'w') as file_cfg:  # 保存為cfg文件file_cfg.write(output)client.close()  # 關閉SSH客戶端# 主函數
def main():folder_path = create_folder()  # 創建文件夾device_info = read_device_info()  # 讀取設備信息for index, row in device_info.iterrows():  # 遍歷設備信息export_config(row['IP'], row['管理員賬號'], row['密碼'], row, folder_path)  # 導出配置if __name__ == "__main__":main()  # 運行主函數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11035.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

掌握MySQL執行計劃分析【Explain】

前言 MySQL是一個強大的關系型數據庫管理系統,其高效執行SQL查詢的能力是其核心價值之一。然而,當查詢變得復雜或者數據量急劇增長時,SQL查詢的性能問題往往成為我們不得不面對的挑戰。為了深入了解查詢的執行過程并找到性能瓶頸&#xff0c…

Modbus通訊協議初學

目錄 Modbus通訊協議初學什么是Modbus?Modbus用來做什么?4個種類的寄存器協議速記功能碼Modbus 報文幀示例解讀 Modbus通訊協議初學 什么是Modbus? 顧名思義,它是一個bus,即總線協議。比如串口協議、IIC協議、SPI都是通訊協議。你接觸到這種協議,相信你所處的行業是工業方…

如何自定義Linux命令

說明:本文介紹如何將自己常用的命令設置為自定義的命令,以下操作在阿里云服務器CentOS上進行。 修改配置文件 修改配置文件前,先敲下面的命令查看當前系統配置的shell版本 echo $SHELL或者 echo $0區別在于,$SHELL查看的是系統…

落雪音樂 超好用的桌面端音樂播放器

之前一直都是充某Q音樂的會員,突然不想氪金了,終于找到一個開源的音樂播放器,在此先給落雪無痕大佬跪了 太愛了 簡直白嫖怪的福音 話不多說,直接上操作:解壓密碼:www.1234f.com下載地址:極速云…

圖片批量管理邁入智能新時代:一鍵輸入關鍵詞,自動生成并保存驚艷圖片,輕松開啟創意之旅!

在數字化時代,圖片已成為我們表達創意、記錄生活、傳遞信息的重要工具。然而,隨著圖片數量的不斷增加,如何高效、便捷地管理這些圖片,卻成為了一個令人頭疼的問題。 第一步,進入首助編輯高手主頁面,在上方…

簡單的Python示例母親節的祝福

在Python中,我們通常不會直接編寫HTML源碼,但我們可以編寫一個Python腳本來生成或發送包含母親節祝福的HTML內容。以下是一個簡單的Python示例,它使用字符串拼接來創建一個簡單的HTML頁面,其中包含母親節的祝福。 # 定義一個包含…

【AMBA Bus ACE 總線 9.1 -- Non-cache Master 寫操作 詳細介紹】

請閱讀【AMBA Bus ACE 總線與Cache 專欄 】 歡迎學習:【嵌入式開發學習必備專欄】 文章目錄 Non-cache MasterACE 和系統級緩存一致性ACE 非緩存主控(Non-cacheable Master)Non-cache Master ARM的ACE(AXI Coherency Extension)是一種用于增強系統級緩存一致性的接口規范…

視頻封面一鍵提取:從指定時長中輕松獲取您想要的幀圖片

在數字媒體時代,視頻已成為人們獲取信息、娛樂和溝通的主要形式之一。而一個好的視頻封面,往往能夠吸引觀眾的眼球,增加視頻的點擊率和觀看量。然而,對于很多視頻創作者和編輯者來說,如何從視頻中快速、準確地提取出合…

Git知識點總結

目錄 1、版本控制 1.1什么是版本控制 1.2常見的版本控制工具 1.3版本控制分類 2、集中版本控制 SVN 3、分布式版本控制 Git 2、Git與SVN的主要區別 3、軟件下載 安裝:無腦下一步即可!安裝完畢就可以使用了! 4、啟動Git 4.1常用的Li…

Shell編程之循環語句之for

一.for循環語句 讀取不同的變量值,用來逐個執行同一組命令 for 變量名 in 取值列表 do命令序列 done 示例: 1.計算從1到100所有整數的和 2.提示用戶輸入一個小于100的整數,并計算從1到該數之間所有整數的和 3.求從1到100所有整數的偶數和…

【牛客】SQL206 獲取每個部門中當前員工薪水最高的相關信息

1、描述 有一個員工表dept_emp簡況如下: 有一個薪水表salaries簡況如下: 獲取每個部門中當前員工薪水最高的相關信息,給出dept_no, emp_no以及其對應的salary,按照部門編號dept_no升序排列,以上例子輸出如下: 2、題目…

SBM模型、超效率SBM模型代碼及案例數據(補充操作視頻)

01、數據簡介 SBM(Slack-Based Measure)模型是一種數據包絡分析(Data Envelopment Analysis, DEA)的方法,用于評估決策單元(Decision Making Units, DMUs)的效率。而超效率SBM模型是對SBM模型的…

輪轉數組 與 消失的數字

輪轉數組 思路一 創建一個新內存空間,將需輪轉的數依次放入,之后在把其它數放入 代碼: void rotate(int* nums, int numsSize, int k) {k k % numsSize;// 確定有效的旋轉次數if(k 0)return;int* newnums (int*)malloc(sizeof(int) * nu…

HarmonyOS應用開發者高級認證 試題+答案

判斷題 云函數打包完成后,需要到AppGallery Connect創建對應函數的觸發器才可以在端側中調用(錯誤) 每一個自定義組件都有自己的生命周期(正確) 基于端云一體化開發,開發者需要精通前端、后端不同的開發語言…

h2 數據庫Statement was canceled or the session timed out 解決辦法

背景 某項目因需要存儲的數據較少,選擇了h2 數據庫。數據庫的某張表的數據需要全部加載到內存中使用。 最近,某個項目使用該應用時需求比較特殊,使得這張表的數據量增加到了一萬條。此時,查詢全量數據的 SQL 發生了異常&#xf…

遞歸求fabonacci數列 pta

斐波那契數列(Fibonacci sequence)是一個經典的數列,它由以下遞歸關系定義: [ F(n) F(n-1) F(n-2) ] 其中,( F(0) 0 ) 和 ( F(1) 1 )。 在編程中,遞歸是一種實現斐波那契數列的直觀方法。以下是使用遞…

git之tag操作

查看本地有哪些 tags # git tag -l v0.0.3 v0.0.5 v0.0.6查看遠程有哪些 tags # git ls-remote --tags From https://github.com/eyjian/gomooon.git 1fe7f5ecf369cba34f4328285ce1ec72d62c091e refs/tags/v0.0.3 9371db55046109d7fc9a9f75625d5ec31c326ad1 re…

[muduo網絡庫]——muduo庫Acceptor類(剖析muduo網絡庫核心部分、設計思想)

接著之前我們剖析的muduo庫三大核心組件Channel類,Poller/EpollPoller類,EventLoop類,我們接下來繼續看muduo庫中的其他類,這一篇,我們先來介紹Acceptor類。 Acceptor類 主要功能 Acceptor類用于創建套接字&#xf…

企業OA辦公系統開發筆記:1、搭建后端環境

文章目錄 企業辦公系統:搭建環境一、項目介紹1、介紹2、技術棧3、項目模塊4、數據庫 二、搭建環境1、搭建后端1.1、搭建父工程clfwzx-oa-parent1.2、搭建工具類父模塊common1.3、搭建工具類common的子模塊1.4、搭建實體類模塊model和項目模塊service-oa 2、配置依賴…

親測!史上最全數據庫基礎?!

為什么要學習數據庫 以前在程序中存儲數據是一個變量,對象;數據都存儲在內存中,程序運行結束后就銷毀。 后來學習IO之后,將數據存儲在文件中,做到持久存儲,但是使用不方便。 學習專業的數據存儲軟件——…