自動化運維-Python paramiko 實現無客戶端系統巡檢
功能:批次系統命令巡檢
物件:作業系統 HP-UN Linux
方法:Python paramiko
實現關鍵指令碼:
第一 登入系統資訊:
#建立使用者登陸資訊,並且生產一個JSON 檔案
def write_os_info():
path = os.path.dirname(__file__) + '/os_logon.json'
os_info = {'主機名':{'ip':'具體IP', 'pro':'登入系統的協議', 'port':'透過上面協議的埠號', 'user':'登入系統的使用者', 'passwd':'登入系統的密碼'}}
with open(path, "w+", encoding="utf-8") as wf:
# dumps 將資料轉換成字串
json.dump(os_info, wf)
print("寫入檔案完成...")
說明:我採用了明文進行,資訊目錄,也可以透過下面方面,透過金鑰實現,感興趣的可以嘗試一下,有點事可以保護系統的使用者名稱和密碼;
#private_key = paramiko.RSAKey.from_private_key_file('id_rsa')
第二 讀取使用者登入資訊,透過上一步生產的JSON 檔案,進行逐個系統資訊讀取
# 讀取使用者登陸資訊
def get_os_result():
global g_tmp_ip
global g_tmp_port
global g_tmp_pro
global g_tmp_user
global g_tmp_passwd
path = os.path.dirname(__file__) + '/os_logon.json'
with open(path, "r+", encoding="utf-8") as rf:
os_info = json.load(rf)
#print(os_info)
print("讀取檔案完成...")
#print(os_info.items())
for keyValue in (os_info.keys()):
#print(os_info[keyValue])
nextValue = os_info[keyValue]
g_tmp_ip = nextValue['ip'].strip()
g_tmp_port = int(nextValue['port'].strip())
g_tmp_pro = nextValue['pro'].strip()
g_tmp_user = nextValue['user'].strip()
g_tmp_passwd = nextValue['passwd'].strip()
print("########HOSTNAME:",keyValue,",IP:",g_tmp_ip,",PROTOCOL:",g_tmp_pro,",LOGON USER:",g_tmp_user,"########")
#透過獲取JSON 檔案中使用者登陸系統
get_os_info.get_os_dir(g_tmp_ip,g_tmp_pro, g_tmp_port, g_tmp_user, g_tmp_passwd)
time.sleep(3) #sleep 3 s 為了巡檢的內容慢慢的輸出
第三 獲取系統的目錄使用情況,首先透過系統型別分類,然後再進行不同系統的目錄巡檢:
#透過IP 協議 埠號 使用者名稱 密碼 登陸系統
def get_os_dir(ip,pro,port,user,passwd):
if pro == 'SSH':
# 建立SSH物件
ssh = paramiko.SSHClient()
# 允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連線伺服器
ssh.connect(ip, port, user, passwd)
#ssh.connect(hostname='', port=22, username='oracle', password='')
stdin, stdout, stderr = ssh.exec_command('/bin/uname')
result = stdout.read()
platformV = result.decode().strip()
plat_name = 'Linux'
#print(platformV)
if platformV == plat_name:
# 執行命令
stdin, stdout1, stderr = ssh.exec_command('df -h')
result1 = stdout1.read()
print(result1.decode())
# 獲取命令結果
elif platformV == "HP-UX":
# 執行命令
stdin, stdout2, stderr = ssh.exec_command('bdf')
result2 = stdout2.read()
print(result2.decode())
# 獲取命令結果
else:
print('對不起,該系統我們當前不支援')
# 關閉連線
ssh.close()
elif pro == 'TELNET':
print('hh')
else:
print('error')
第四 效果:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26342786/viewspace-2757257/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 運維管理系統PIGOSS BSM 如何實現IT巡檢運維Go
- 基於信創運維平臺,實現國產化網路自動巡檢運維
- 搬運:python基於pywinauto實現PC端自動化 python操作微信自動化Python
- 客戶管理系統如何使流程自動化
- 運維自動化之賬單系統運維
- 透過自動化運維實現無人值守的故障自愈運維
- Python自動化運維之psutil系統效能資訊模組Python運維
- 從零開始實現資料庫自動化巡檢(一)資料庫
- CRM客戶管理系統實現航運企業數字化管理
- CrazyWing:Python自動化運維開發實戰 十七、PythonPython運維
- 如何自動檢索客戶資訊斷融,CRM系統?
- 運維轉型之路 —手工運維到無人值守的自動化運維,從根本實現降本增效運維
- IT運維之自動化運維運維
- 什麼是自動化運維?為什麼選擇Python做自動化運維?運維Python
- 自動化測試學習:使用python庫Paramiko實現遠端伺服器上傳和下載Python伺服器
- 阿里雲釋出ECS自動化運維套件,幫助企業實現自動化運維轉型阿里運維套件
- 雲端計算開發教程:Python自動化運維開發實戰Python變數Python運維變數
- 雲端計算Python自動化運維開發實戰 三、python檔案型別Python運維型別
- 透過運維編排實現自動化智慧運維與故障自愈運維
- CRM系統是如何助力企業實現客戶維護?
- 是否只有實現了容器化、自動編排等等才算是實現了運維自動化?運維
- Oracle 自動化運維-Python連線OracleOracle運維Python
- Python自動化運維之IPy模組Python運維
- Python+Django+Ansible Playbook自動化運維PythonDjango運維
- 雲端計算開發技術Python自動化運維開發實戰二Python運維
- 【開源】自動化巡檢系統,基於 Testng + Playwright + SpringBoot + Vue + Ant-DesignSpring BootVue
- python 實現 TCP、UDP 客戶端最簡流程PythonTCPUDP客戶端
- Oracle運維指令碼-巡檢(RAC版)Oracle運維指令碼
- Python+Django+ansible playbook自動化運維專案實戰PythonDjango運維
- 「乾貨」介面自動化實踐:高效智慧介面場景自動巡檢方案
- 雲端計算培訓學院,雲端計算Python自動化運維開發實戰Python運維
- 雲端計算開發教程:Python自動化運維開發實戰流程控制Python運維
- 系統巡檢Python生成word報告🧫Python
- 如何篩選CRM客戶系統無效客戶
- 客戶端骨架屏實現客戶端
- 自動化運維工具ansible的實踐運維
- PXE實現系統自動化安裝
- 運維工作新時代:自主編碼實現運維自動化的轉型之旅運維