天天看點

python腳本實作叢集檢測和管理

 場景是這樣的:一個生産機房,會有很多的測試機器和生産機器(也就是30台左右吧),由于管理較為混亂導緻了哪台機器有人用、哪台機器沒人用都不清楚,進而産生了一個想法--利用一台機器來管理所有的機器,記錄裝置責任人、裝置使用狀态等等資訊....那麼,為什麼選擇python,python足夠簡單并且擁有豐富的第三方庫的支援。

  由于剛參加工作不久,對這些東西也都沒有接觸過,輪崗到某個部門需要做出點東西來(項目是什麼還沒情況,就要做出東西來,沒辦法硬着頭皮想點子吧)。。。

  本想做一個簡單點的自動化測試的工具,但這項目的測試方法和測試用例暫時不能使用這種通用的測試手段(輸入和輸出都确定不了),進而作罷...

  

python腳本實作叢集檢測和管理

  那麼做點什麼東西,經常發現同僚們問208誰用的?201誰用的?那IP是我的!!!你是不是把我得網線給拔掉了?242那機器到底是哪台?

  突然間,春天來了,是不是可以做一個系統用來檢測IP和記錄裝置的使用人,甚至可以按需要在某台裝置上運作一個腳本或指令?把這個矮矬窮的想法和leader溝通過後,确認可以做,那麼就開始吧!!!

  該系統的大概思想:

  1.  要獲得所有伺服器的各種資訊,需要在任意一台伺服器上部署一個agent作為資訊擷取的節點,定時向管理伺服器節點發送伺服器資訊資料。

  2.  server作為綜合管理節點,接收并儲存agent送出的資訊。

  3.  為了友善使用,采用web頁面的形式做展示。

python腳本實作叢集檢測和管理

  1. 開發語言:python

    之是以選擇python,簡單,第三方庫豐富,不用造輪子

  2. 資料庫:mysql

    簡單、易用

  3. webpy:web架構

    入門簡單、部署友善

  4. bootstrap:前端架構

    不要關心太多前端問題

  5. paramiko:python庫,遵循SSH2協定,支援以加密和認證的方式,進行遠端伺服器的連接配接

    通過SSH方式連接配接agent伺服器:遠端運作指令、傳輸檔案

  6. scapy: python庫,可用來發送、嗅探、解析和僞造網絡資料包,這裡用來掃描IP

  7. MySQLdb: 連接配接mysql

  8. shell 和 python腳本接口: 為其他人提供shell腳本的接口

  1. 前端對我來說是新東西,從來沒弄過,頁面的動畫效果,腳本運作時的過渡都是需要考慮的,開始考慮利用倒計時,但是這個時間是不可控的,後來采用ajax來處理這個問題

  2. agent要自動部署到每台機器,并可以通過server來控制重新整理時間

  3. 建立一個可擴充的表是非常重要的,而且一些重要的資訊需要寫入磁盤,在資料庫失效的情況下,可以從磁盤擷取資料

  4. 資料庫的連接配接,如果長時間沒有操作的話會逾時,要考慮到

  ... ...

    1. website.py為webpy的主程式,設定了url映射

    2. model.py為webpy的url映射類,處理請求和傳回

    3. static中存放靜态資源

    4. scripts用來存放處理的腳本,這裡起的名字有些問題 

    

python腳本實作叢集檢測和管理

    使用MyQSLdb連接配接mysql,在這裡我沒有使用webpy提供的資料庫接口,而是自己封裝了一套  

    paramiko實作ssh連接配接、與資料傳輸、執行指令和腳本

python腳本實作叢集檢測和管理

 View Code

    使用scapy進行IP掃描

python腳本實作叢集檢測和管理
python腳本實作叢集檢測和管理

本文轉自cococo點點部落格園部落格,原文連結:http://www.cnblogs.com/coder2012/p/4034614.html,如需轉載請自行聯系原作者