Total Pageviews

Thursday, 14 March 2013

Omnitty SSH multiplexer。遠端連線多个Linux主機,同步作業

有時候裝好一整批的作業系統,需要有相同的設定,甚至有相同的軟體,若是簡單的兩三台機器算是還好,大不了就是慢慢的一台台做設定,然後再比對一下設定是否相同,但是若是一次超過了五台主機、甚至十台主機、甚至幾十台主機,那麼該如何更有效的一次設定多台主機呢?難道同樣的動作重複做幾十遍?這樣會昏倒吧~我的職責是系統工程師,並不是一個執行相同動作的作業員啊!
假若今天我同時裝好了50台主機好了,不論安裝方式是網路安裝或是硬碟拷貝,反正裝好後每台的ip與主機名稱都不相同,而root的密碼相同。

第一個問題,我該如何快速地建立好50組ssh的認證,讓我可以快速的登入每一台的root?這部分請參考【ssh-copy-id】的方式來快速達成,應該只要一個迴圈、很多yes(首次建立ssh連線需要)以及重複貼上很多次的root密碼就可以完成,更快的方法其實可以寫成一隻script就完成了!若是用windows client的連線軟體可就沒那麼方便囉~
第二個問題,我該如何快速的部屬50台的主機,包含安裝多個相同的軟體,以及設定好相關config?第二個問題我還是得先完成第一個問題的解答,之後再利用批次的模式加入我電腦(windows)主機的ssh認證資訊,再利用【Xshell】設定後再複製設定檔,然後慢慢的龜龜的改完每一筆設定的主機名稱和IP,完成之後同時連線50台主機,利用Xshell的【To All Sessions】的command模式,這樣就可以達成同時一對多的同步設定。

Xshell在使用command模式上是沒有問題的,不過對於一些特殊用法就無法支援,譬如我常常寫入一個檔案會利用cat >的方式,之後以Ctrl+D來結束,但是Xshell並無法同時對多台主機執行Ctrl+D;二來在vi的模式中也無法收到Esc的指令,等於我無法同時編輯多台主機的檔案,當然其實以上的障礙還是有其他方法可以解決,譬如同時一起scp遠端已經完成的設定檔,需要編輯設定檔的問題就解決了。


而今天分享的這款軟體【Omnitty】,也可以同時對多台主機下指令,達到同時設定多台主機的目的,而且他比Xshell更好,沒有編輯檔案的問題,若是妥善使用的確可以達到事半功倍的效果。

Omnitty SSH multiplexer
官方網站:http://omnitty.sourceforge.net/
下載網址:http://omnitty.sourceforge.net/download.html


主要是要安裝【libROTE】這個Library與【Omnitty】主程式,安裝方式不外乎就是./configure && make && make install這樣簡單,安裝的方式就不特別交代了!安裝後直接執行omnitty可能會遇到找不到library的問題〔omnitty: error while loading shared libraries: librote.so.0: cannot open shared object file: No such file〕,因為預設是安裝在/usr/local/lib內,此時可以在/etc/ld.so.conf.d/下寫入一個omnitty.conf的檔案,內容寫入/usr/local/lib即可,之後重新執行ldconfig,完成之後重新執行omnitty應該就可以正常運作了!

進入omnitty後的介面簡單分為三塊,左方為連線主機的選取區,右邊則為連線的操作區,而下方藍色一條為程式的快速鍵說明。新增一個連線請按F5,此時輸入主機名稱或是IP,我個人是習慣將ssh連線主機設定在config檔案(連線別名),連線時只需要輸入alias name即可,這樣一來連線時就沒有帳號以及ssh port的問題。


新增多台主機之後可以利用F2/F上下切換不同的主機。在這裡額外提醒一點,此時新增的主機omnitty並不會幫你自動儲存,也就是說每一次進入omnitty後需要自己額外的新開連線,就性質上比較偏向多工的ssh連線軟體,而非ssh連線的管理軟體。


回到我們該如何批次的設定50台主機,我們先將50台的主機名稱或是IP寫在一個檔案,一行一個主機,檔案必須在你當前執行omnitty的同一個目錄下,開啟omnitty之後點選F5新增主機,此時利用【@檔案】的方式就可以一次連線到50台的主機,若50台主機的認證都是完善的,理論上每一台應該都會通才是!


那麼到底該如何同時對多台主機執行指令呢?此時我們必須對每一台主機進行一個「tag」的動作,利用F2/F3選取主機之後再點選F4,此時主機將會多一個*號並且顯示成綠色,這些被標記主機就被設定為可以輸入相同的指令。


而一次要標記50台主機可以先進入F1的軟體選單,再按下t即可,我們要將50台要同時設定的主機都標記起來。


要開始批次安裝軟體及設定主機則按下F7,這時候會進入 !!! MULTICAST MODE !!! 的模式,此時隨意在某一台主機敲指令都可以,50台主機執行的動作將會一模一樣,所以50台主機的環境最好都一模一樣,避免會有意外的情形發生。


讓我在某一台主機執行一個小小的迴圈並且輸出結果。


再切換到其他主機去查看也是相同的結果,此方式不只利用在command,而vi的編輯也完全沒有問題,同時設定50台主機的問題就迎刃而解了,這樣的工具除了用在批次安裝設定主機之外,若管理的機器也有同質的動作需要執行,那麼這軟體也可以成為有力的助手。而就算不使用 !!! MULTICAST MODE !!! 的功能,當成一個簡易的介面管理主機其實也很方便啦!有興趣的人可以試試看唷.