JumpServer批量添加資產

環境說明:我的環境是H3C網絡設備環境

一、在linux系統環境下通過Python腳本獲取交換機信息,IP地址和設備名稱一一對應,腳本如下:

cat get_device-sysname.py
import re
from netmiko import ConnectHandler
from concurrent.futures import ThreadPoolExecutor, as_completed# 定義設備信息和登錄憑據
device_type = 'hp_comware'
username = 'yan' #以實際為準
password = 'Ywb@1' #以實際為準# 從文件中讀取交換機IP地址
with open('ping_successes_20250507_110259.txt') as f:ips = f.read().strip().splitlines()# 定義要提取系統名稱的正則表達式
regex_sysname = r"sysname\s+(.*)"# 定義處理單個設備的函數
def process_device(ip):try:print(f"Connecting to device {ip}")# 定義設備參數device = {'device_type': device_type,'host': ip,'username': username,'password': password,'secret': password,  # 密碼也用作enable密碼'global_delay_factor': 2,  # 增加延遲因子,確保命令執行完整}# 連接設備net_connect = ConnectHandler(**device)# 發送'dis cur'命令并獲取輸出output_dis_cur = net_connect.send_command('dis cur')# 提取sysnamesysname = re.search(regex_sysname, output_dis_cur, re.IGNORECASE).group(1).strip()# 斷開連接net_connect.disconnect()# 返回結果return f"{ip},{sysname}"except Exception as e:return f"{ip},ERROR: {str(e)}"# 使用ThreadPoolExecutor并發處理
with ThreadPoolExecutor(max_workers=20) as executor:future_to_ip = {executor.submit(process_device, ip): ip for ip in ips}with open('sysname_results.txt', 'w') as output_file:for future in as_completed(future_to_ip):result = future.result()output_file.write(result + '\n')print(f"Processed result: {result}")print("All tasks are completed.")

文檔說明

ping_successes_20250507_110259.txt-------交換機IP地址內容文檔

sysname_results.txt---------------------------------運行腳本后生成設備IP地址和設備名稱一一對應信息

生成信息格式如下

10.50.229.3 ,1#Office_Buding_1F-east-Acc2-Sec

二、但是還缺少相關信息,要添加一臺設備到JumpServer上,完整信息如下

10.50.229.3,1#Office_Buding_1F-east-Acc2-Sec,16,yab,Yqa2ws,Security-Office building

16-------------------是設備平臺的地址,我這里是H3C

平臺ID查看方式:

  • 登錄 JumpServer 管理后臺(Web界面)

  • 左側導航欄點擊 資產管理 > 平臺列表

  • 點進進入相關平臺,就可以顯示平臺的ID信息

yab,Yqa2ws-------這是登錄設備的賬號和密碼,最好上面腳本的保持一致

Security-Office building------這里是設備所有的節點信息。

我的設備平臺、賬號密碼、設備所歸屬的節點都是一直的,所有我是通過sed工具,統一進行信息的添加的

三、

設備信息都準確后進行設備統一添加

1、獲取你JumpServer的API信息

curl -X POST http://localhost/api/v1/authentication/auth/ \? ?#localhost改為你JumpServer的IP地址
? ? ?-H 'Content-Type: application/json' \
? ? ?-d '{"username": "admin", "password": "admin"}'? ? #改為實際賬號密碼

?

cat add_device-to-JumpServer.py
import requests
import json# JumpServer 配置
jumpserver_url = 'http://10.32.254.233'  # JumpServer的URL
api_token = 'PXz1DVBMxeBsFMeyUsTbkAZ2yWE9aACKFEqg'  # API Token
headers = {'Content-Type': 'application/json','Authorization': f'Bearer {api_token}'
}# 設備文件路徑
device_file = 'sysname_results.txt'# 獲取節點ID
def get_node_uuid(node_name):url = f'{jumpserver_url}/api/v1/assets/nodes/'response = requests.get(url, headers=headers)if response.status_code == 200:nodes = response.json()for node in nodes:if node['name'] == node_name:return node['id']  # 返回節點的UUIDreturn None# 添加設備到JumpServer
def add_device_to_jumpserver(ip, hostname, platform, username, password, node_name):node_id = get_node_uuid(node_name)if not node_id:print(f"節點 {node_name} 不存在")returnurl = f'{jumpserver_url}/api/v1/assets/hosts/'# 請求參數,包含設備的基本信息payload = {"name": hostname,"address": ip,"platform": platform,  # 平臺ID,H3C為16"admin_user": {"username": username,"password": password},"nodes": [node_id],  # 使用節點的UUID"is_active": True}# 發送請求添加主機response = requests.post(url, headers=headers, data=json.dumps(payload))if response.status_code == 201:print(f'設備 {hostname} 添加成功')else:print(f'設備 {hostname} 添加失敗: {response.text}')# 讀取文件并逐行添加設備
with open(device_file, 'r') as file:for line in file:# 解析6個字段ip, hostname, platform, username, password, node_name = line.strip().split(',')add_device_to_jumpserver(ip, hostname, platform, username, password, node_name)

運行完后等1分鐘就可以在WEB端看到設備已經添加

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

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

相關文章

理解字、半字與字節 | 從 CPU 架構到編程實踐的數據類型解析

注:本文為 “字、半字、字節” 相關文章合輯。 略作重排,未全校。 如有內容異常,請看原文。 理解計算機體系結構中的字、半字與字節 在計算機科學中,理解“字 (Word)”、“半字 (Half-Word)”和“字節 (Byte)”等基本數據單元的…

數據庫實驗10 函數存儲

數據庫實驗10 一、實驗目的 掌握函數和存儲過程的定義方法,包括標量函數、表值函數、存儲過程的語法結構。理解函數和存儲過程的作用及原理,區分標量函數與表值函數的應用場景,掌握存儲過程的參數傳遞、邏輯控制和錯誤處理機制。能夠熟練運…

2025 RSAC|大語言模型應用風險與廠商攻防新策略

RSA大會全球影響力及2025年LLM熱議概覽 作為全球規模最大、影響力最深遠的網絡安全盛會之一,RSA大會每年匯聚數萬名業界人士共商安全趨勢。在2025 RSAC上,生成式人工智能(Generative AI)尤其是大型語言模型(LLM&#x…

網頁版部署MySQL + Qwen3-0.5B + Flask + Dify 工作流部署指南

1. 安裝MySQL和PyMySQL 安裝MySQL # 在Ubuntu/Debian上安裝 sudo apt update sudo apt install mysql-server sudo mysql_secure_installation# 啟動MySQL服務 sudo systemctl start mysql sudo systemctl enable mysql 安裝PyMySQL pip install pymysql 使用 apt 安裝 My…

Transformer數學推導——Q55 證明跨層殘差跳躍(Cross-Layer Skip Connections)的信息融合效率

該問題歸類到Transformer架構問題集——殘差與歸一化——殘差連接。請參考LLM數學推導——Transformer架構問題集。 1. 引言 在深度學習的發展歷程中,網絡結構的不斷創新推動著模型性能的持續提升。跨層殘差跳躍(Cross-Layer Skip Connections&#xf…

41.尋找缺失的第一個正數:原地哈希算法詳解

文章目錄 引言問題描述方法思路:原地哈希算法算法步驟 完整代碼實現關鍵代碼解析復雜度分析示例說明總結 引言 在算法面試和數據處理中,尋找缺失的第一個正數是一個經典問題。題目要求給定一個未排序的整數數組,找到其中缺失的最小正整數&am…

matlab 中function的用法

matlab 中function的用法 前言介紹1. 基本語法示例(1)可以直接輸出(2)調用函數 2.輸入參數和輸出參數示例多輸入參數和輸出參數定義一個函數,計算兩個數的和與差:調用該函數: 3. 默認參數示例 4…

HarmonyOS開發之基于子窗口實現應用內懸浮窗

鴻蒙開發:基于子窗口實現應用內懸浮窗(含完整代碼示例) 在現代移動應用中,懸浮窗/懸浮球是一種非常實用的交互方式,常用于展示快捷入口、實時通知、視頻播放等場景。例如: 聊天應用中的小助手按鈕視頻應用的畫中畫功能游戲或工具類…

可以下載blender/fbx格式模型網站

glbxz.com glbxz.com可以下載blender/fbx格式模型。當然里面有免費的

250505_HTML

HTML 1. HTML5語法與基礎標簽1.1 HTML5特性1.1.1 空白折疊現象1.1.2 轉義字符 1.2 HTML注釋1.3 基礎標簽1.3.1 div標簽1.3.2 標題標簽1.3.3 段落標簽1.3.4 title1.3.5 meta 1.4 html骨架1.4.1 DTD1.4.2 html標簽1.4.3 head與body標簽 1.5 div標簽詳解1.5.1 常見class類名 1.6 列…

數據封裝的過程

數據的封裝過程 傳輸層 UDP 直接將數據封裝為UDP數據報?,添加UDP頭部(8B)。 要點: UDP首部簡單,無連接不可靠、無重傳、無擁塞控制,適用于實時性要求較高的通訊;不需要源端口或不想計算檢…

面向AGI的語言認知操作系統形式化模型

鄒曉輝融智學語言數據庫體系的數學表達 ——面向AGI的語言認知操作系統形式化模型 1. 基礎定義與符號系統 設語言宇宙 L 為所有語言要素的集合,其結構可分解為: LY(言)U(語)A(用) 其中: YPGS (音/形/義三元組) U?…

基于 Spring Boot 瑞吉外賣系統開發(十)

基于 Spring Boot 瑞吉外賣系統開發(十) 修改菜品 修改菜品是在原有的菜品信息的上對菜品信息進行更新,對此修改菜品信息之前需要將原有的菜品信息在修改界面進行展示,然后再對菜品信息進行修改。 修改菜品分為回顯菜品信息和更…

Three.js和WebGL區別、應用建議

Three.js 和 WebGL 是用于在瀏覽器中創建 3D 圖形的兩種技術,它們之間有明顯的區別和適用場景。 對于一般數據展示和模型展示而言,應用更多的是three.js,畢竟相對學習成本來說webGL跟高,需要投入更多的精力和基礎功能的開發和驗證上。而three.js封裝了webGL的功能,開發相對…

【Vue】移動端開發(Uni-app、Taro)

個人主頁:Guiat 歸屬專欄:Vue 文章目錄 1. Uni-app 與 Taro 簡介1.1 什么是 Uni-app?1.2 什么是 Taro?1.3 Uni-app vs Taro(對比圖) 2. 項目初始化與目錄結構2.1 初始化 Uni-app 項目2.2 初始化 Taro 項目&…

自定義SpringBoot Starter-筆記

SpringBoot Starter的介紹參考: Spring Boot Starter簡介-筆記-CSDN博客。這里介紹如何自定義一個springBoot Starter。 1. 項目結構 創建一個 Maven 項目,結構如下: custom-spring-boot-starter-demo/ ├── custom-hello-jdk/ # jdk模…

linux >!

Linux 中 >! 符號的含義與用法 ?基本定義?在 Linux Shell 中,>! 是由 > 和 ! 組合的特殊符號,主要用于 ?強制覆蓋文件?。其行為與常規的 > 類似,但額外添加了忽略潛在限制的功能。 ?典型場景?繞過 noclobber 限制?: 若 Shell 啟用了 noclobber 選項(默…

共鑄價值:RWA 聯合曲線價值模型,撬動現實資產生態

摘要 本文提出了一種針對真實資產(RWA)產業的聯合曲線激勵模型,將勞動與數據貢獻映射為曲線價值,并基于固定檔位與指數衰減獎勵發放總計 2.1億積分。該模型結合了去中心化定價與平滑遞減機制,不僅為早期貢獻者提供更高…

java安全入門

文章目錄 java基礎知識this變量方法可變參數構造方法繼承的關鍵字protected super阻止繼承方法重載向上轉型和向下轉型多態抽象接口static靜態字段default方法 包final內部類 java序列化與反序列化反射urldns鏈動態代理類加載器(ClassLoader)雙親委派模型…

前端基礎之《Vue(14)—組件通信(1)》

一、什么是組件通信 1、通信是組件或模塊之間的數據交互。 2、組件多重通信就形成了數據流,數據流管理的優劣決定了產品能否上線,返工是否頻繁的問題。 3、Vue中有哪些常見的通信方案? 組件樹的概念: 在Vue中,組件…