一、背景與目標
在企業(yè)或個人 DevOps 場景中,我們常常需要:
-
同時向多臺服務(wù)器下發(fā)命令(如同步腳本、重啟服務(wù))
-
實時查看每臺服務(wù)器的執(zhí)行結(jié)果
-
支持主機分組(按環(huán)境或角色劃分)
-
不借助 Ansible 等大型工具,保持輕量靈活
本項目使用純 Python 實現(xiàn)一個“迷你 SSH 命令控制臺”,并具備以下能力:
-
支持多臺主機批量命令下發(fā)
-
支持主機配置、分組、備注
-
支持并發(fā)執(zhí)行命令與結(jié)果匯總
-
支持失敗重連、錯誤提示、執(zhí)行日志保存
二、項目結(jié)構(gòu)設(shè)計
三、主機配置文件(config.yaml)
四、SSH 客戶端封裝(ssh_client.py)
五、批量執(zhí)行管理器(manager.py)
六、控制臺交互入口(main.py)
七、運行示例
八、擴展方向建議
方向 | 描述 |
---|---|
主機連接超時管理 | 添加每臺主機的連接超時時間限制,避免阻塞 |
執(zhí)行成功統(tǒng)計 | 成功 / 失敗主機數(shù)量展示 |
支持密鑰登錄 | 可選擇使用 ssh key 而非密碼連接 |
命令別名支持 | 定義一批常用命令別名,如 restart_nginx |
執(zhí)行日志按日期歸檔 | 每天生成獨立的日志文件 |
支持 YAML 外部任務(wù)定義 | 提前配置要運行的命令腳本集合 |
九、項目總結(jié)與價值
本項目實現(xiàn)了一個具備以下特性的“遠程服務(wù)器批量控制平臺”:
-
? YAML 配置簡潔可維護,支持分組管理
-
? 使用標準庫 + Paramiko,無需額外平臺依賴
-
? 線程并發(fā)處理任務(wù),性能良好
-
? 結(jié)構(gòu)清晰,便于未來擴展為 GUI、Web 平臺
可用于:
-
小型企業(yè)內(nèi)部服務(wù)器維護
-
云主機 SSH 命令分發(fā)
-
運維日常操作自動化
閱讀全文