1. 程式人生 > >python之簡單主機批量管理工具

python之簡單主機批量管理工具

1 """核心程式碼""" 2 import settings 3 import paramiko 4 import threading 5 import os 6 7 8 class REMOTE_HOST(object): 9 #遠端操作主機 10 def __init__(self, host, port ,username, password, cmd): 11 self.host = host 12 self.port = port 13 self.username = username 14 self.password = password
15 self.cmd = cmd 16 17 def run(self): 18 """起執行緒連線遠端主機後呼叫""" 19 cmd_str = self.cmd.split()[0] 20 if hasattr(self, cmd_str): #反射 eg:呼叫put方法 21 getattr(self, cmd_str)() 22 else: 23 #setattr(x,'y',v)is equivalent to ``x.y=v'' 24
setattr(self, cmd_str, self.command) 25 getattr(self, cmd_str)() #呼叫command方法,執行批量命令處理 26 27 def command(self): 28 """批量命令處理""" 29 ssh = paramiko.SSHClient() #建立ssh物件 30 #允許連線不在know_hosts檔案中的主機 31 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
32 ssh.connect(hostname=self.host,port=self.port,username=self.username,password=self.password) 33 stdin,stdout,stderr = ssh.exec_command(self.cmd) 34 result = stdout.read() 35 print("%s".center(50, "-") % self.host) 36 print(result.decode()) 37 ssh.close() 38 39 def put(self): 40 """上傳檔案""" 41 filename = self.cmd.split()[1] #要上傳的檔案 42 transport = paramiko.Transport((self.host, self.port)) 43 transport.connect(username=self.username, password=self.password) 44 sftp = paramiko.SFTPClient.from_transport(transport) 45 sftp.put(filename, filename) 46 print("put sucesss") 47 48 transport.close() 49 50 51 def show_host_list(): 52 """通過選擇分組顯示主機名與IP""" 53 for index, key in enumerate(settings.msg_dic): 54 print(index + 1, key, len(settings.msg_dic[key])) 55 while True: 56 choose_host_list = input(">>>(eg:group1)").strip() 57 host_dic = settings.msg_dic.get(choose_host_list) 58 if host_dic: 59 #print(host_dic) 60 for key in host_dic: 61 print(key, host_dic[key]["IP"]) 62 return host_dic 63 else: 64 print("NO exit this group!") 65 66 67 def interactive(choose_host_list): 68 """根據選擇的分組主機起多個執行緒進行批量互動""" 69 thread_list = [] 70 while True: 71 cmd = input(">>>").strip() 72 if cmd: 73 for key in choose_host_list: 74 host, port, username, password = choose_host_list[key]["IP"], choose_host_list[key]["port"], \ 75 choose_host_list[key]["username"], choose_host_list[key]["password"] 76 func = REMOTE_HOST(host, port, username, password, cmd) # 例項化類 77 t = threading.Thread(target=func.run) # 起執行緒 78 t.start() 79 thread_list.append(t) 80 for t in thread_list: 81 t.join() # 主執行緒等待子執行緒執行完畢 82 else: 83 continue 84 85 86 def run(): 87 choose_host_list = show_host_list()

相關推薦

python簡單主機批量管理工具

1 """核心程式碼""" 2 import settings 3 import paramiko 4 import threading 5 import os 6 7 8 class REMOTE_HOST(object): 9 #遠端操作主機 10 def __ini

Python簡單主機批量管理工具

== interact 主程 hid abs port view opened choose Python簡單主機批量管理工具 一、程序介紹 需求: 簡單主機批量管理工具 需求: 1.主機分組 2.主機信息使用配置文件 3.可批量執行命令、發送文件,結果實時返回

python 簡單主機批量管理工具

oca conf clust 分組 param ko模塊 用戶名 批量管理工具 不同 需求: 主機分組 主機信息配置文件用configparser解析 可批量執行命令、發送文件,結果實時返回,執行格式如下 batch_run -h h1,h2,h3 -g web_

module04-2-簡單主機批量管理工具

ont pro 運行程序 用戶 __file__ font 執行命令 主機 代碼位置 需求 1. 運行程序列出主機組或者主機列表2. 選擇指定主機或主機組3. 選擇讓主機或者主機組執行命令或者向其傳輸文件(上傳/下載)4. 充分使用多線程或多進程5. 不同主機的用戶名密碼

ansible ansible批量管理工具的搭建與簡單的操作

ansible批量管理工具的搭建與簡單的操作   ansible的安裝 # [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.

使用Resources類搭建Unity簡單的資源管理工具

idt 自動創建 update ems 單例類 col 音量 border awake Unity資源加載的方式有: 1.腳本拖拽(本地) 2.Resources加載(本地) ★ 3.AssetBundle加載(本地,遠程[www])★ 本篇將使用Resources類搭建一

python路_excel批量導入數據

chunk stat csrf body inpu res hunk log response 批量導入excel文件中的數據,我們需要借助xlrd模塊,示例如下:   視圖代碼: import xlrd def multi_view(self,request):

Python簡單驗證碼實現

num turn str randint print ice ret int 驗證碼 def v_code(): ret = ‘‘ for i in range(5): num = random.randint(0,9) alf =

SaltStack 文件批量管理(hosts文件)

saltstackSaltStack 之 文件批量管理(hosts文件) 前期工作: 1.創建Salt所需的文件夾 [root@SlatStack-Master ~]# mkdir /srv/{salt,pillar} [root@SlatStack-Master ~]# ll /srv/ total 8 d

Python實現簡單的名片管理系統

rem 代碼 card 刪除 import val 字典 fin pytho 首先新建項目,包含主程序cards_main和工具庫cards_tools: 如下:main函數主主要使用while和if實現4功能切換,切換的具體操作由cards_tools中的函數執行。不說了

Linux下批量管理工具pssh使用記錄

time etc hosts ptime 同時 參數 -i ble test pssh是一款開源的軟件,使用python實現,用於批量ssh操作大批量機器;pssh是一個可以在多臺服務器上執行命令的工具,同時支持拷貝文件,是同類工具中很出色的;比起for循環的做法,我更推薦

ansible批量管理工具

一,常見的管理工具   (1)ansible     so easy  500臺以下的伺服器   (2)saltstack   比較複雜   (3)puppet     超級複雜 2

Python簡單抓取豆瓣讀書資訊

最近出差學習,閒來擼一把 Python。看語法書這些,真是看完就忘,還不如來寫點小程式,有實踐性又有趣。 我的環境是Ubuntu 17,開始之前先裝幾個依賴包,用於解析 html 檔案。 sudo apt install python-lxml,python-requests

Pipenv:新一代Python專案環境與依賴管理工具

什麼是Pipenv Pipenv是Kenneth Reitz在2017年1月釋出的Python依賴管理工具,現在由PyPA維護。你可以把它看做是pip和virtualenv的組合體,而它基於的Pipfile則用來替代舊的依賴記錄方式(requirements.txt)。 在這篇文章裡,我將會

Tkinter小專案:用Python寫一個地址收藏管理工具,迅速提高你的工作效率

如何管理雜亂的電腦桌面和一大堆的瀏覽器收藏網址?我用python寫了一個工具,迅速提高工作效率。 工作了一段時間發現,電腦桌面上已經滿屏的常用軟體、常用專案資料夾的快捷方式,一大堆的常用文件,瀏覽器上收藏的工作網址更是有100+,通常想開啟一個文件、網址要尋找半

Python簡單爬取網頁內容

爬去網頁通用流程 這樣看著雖然很麻煩,但是爬取網頁都離不開這四個步驟,以後如果爬取更復雜的網頁內容,只需要在這個基礎上新增內容就ok了。 import requests class Qiushi: # 初始化函式 def __init__(self,name):

python實現簡單的登入管理

import json,timeusername=[]userpasswd=[]def login_success_file(name): try: f=open(r"F:/login_success_syslog.txt",'a+') json.dump(time.ctim

【Java 安全技術探索路系列:J2SE安全架構】六:安全管理工具

【Java 安全技術探索之路系列:J2SE安全架構】章節列表 作為J2SE複合包的一部分,Java2平臺提供了一組工具來管理安全策略、建立金鑰、管理金鑰和證書、簽署JAR檔案、驗證簽名以及支援金鑰管理相關的其他功能。 一 keystore 金鑰

javaWEB-----------簡單的相簿管理

相簿管理 這僅僅只是一個小小的相簿管理,主要實現的功能:能夠實現對圖片的上傳,統一瀏覽,單個下載,單個刪除,只能刪除自己上傳的檔案。 現在對每個功能進行單個的解釋: 圖片的上傳  圖片的上傳在之前的

每日學點python十一(XX管理系統)

任務描述:        1.實現登入、註冊、退出。        2.檔案操作,實現增刪改查。        3.必要的容錯處