一、omnitty概述
在生產環境中,可能會有多台linux主機。運維人員可能會對多台主機進行同樣的操作,例:同時在多台主機上添加一個user或查看所有主機的硬件信息,如果沒有批量操作工具,設備少於20台還勉強可以手動操作,當設備很多(100+)還手動操作的話······
Omnitty是基於ssh的批量登陸工具,可批量登陸多台基於ssh的主機(linux等),並且使多台主機同時執行一樣的命令。在多台主機重復勞動很適合。
官方地址:http://omnitty.sourceforge.net/
在官方地址下載libROTE Library Home Page和omnitty,其中libROTE Library Home Page是omnitty的安裝需要的動態鏈接庫文件(librote.so.0)。
本人下載到的版本:
rote-0.2.8.tar.gz
omnitty-0.3.0.tar.gz
編譯安裝正常。
二、安裝omnitty
1、 tar -zxvf rote-0.2.8.tar.gz
cd rote-0.2.8/
./configure
make
make install
2、tar -zxvf omnitty-0.3.0.tar.gz
cd ../omnitty-0.3.0/
./configure
make
make install
3、添加libROTE動態鏈接庫到/etc/ld.so.conf
安裝直接執行omnitty會報錯:
omnitty: error while loading shared libraries: librote.so.0: cannot open shared object file: No such file or directory
提示沒有找到librote.so.0
whereis librote.so.0
librote.so: /usr/local/lib/librote.so.0 /usr/local/lib/librote.so
librote.so.0庫已安裝,路徑在/usr/local/lib/
默認的/etc/ld.so.conf
cat /etc/ld.so.conf
/usr/X11R6/lib64/Xaw3d
/usr/X11R6/lib64
/usr/lib64/Xaw3d
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/lib/Xaw3d
/usr/x86_64-suse-linux/lib
/usr/local/lib
/opt/kde3/lib
/lib64
/lib
/usr/lib64
/usr/lib
/usr/local/lib64
/opt/kde3/lib64
include /etc/ld.so.conf.d/*.conf
在/etc/ld.so.conf文件末尾添加/usr/local/lib,保存並推出。
執行:ldconfig
提示:
etc/ld.so.conf記錄了編譯時使用的動態鏈接庫的路徑。默認情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件。如果安 裝了某些庫文件例librote.so.0,需要在etc/ld.so.conf添加庫文件的路徑,這樣 ldd 才能找到這個庫。
ldconfig位於/sbin下,是root執行的程序。它的作用就是將/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc /ld.so.cache 以供使用。因此當安裝完一些庫文件,(例如剛安裝好glib),或者修改ld.so.conf增加新的庫路徑后,需要運行一下/sbin /ldconfig使所有的庫文件都被緩存到ld.so.cache中,如果沒做,即使庫文件明明就在/usr/lib下的,也是不會被使用的,結果編譯 過程中抱錯,缺少xxx庫,去查看卻發現明明就存在。
注:如果報錯”Need ncurses to compile librote“,需要安裝ncurses開發包,
CentOS:
# yum install ncurses-devel
ubuntu:
$ apt-get install libncurses5-dev
將rote的so文件加入系統查找路徑里(不然omnitty運行時會提示找不到so)
# whereis librote.so.0
librote.so: /usr/local/lib/librote.so.0 /usr/local/lib/librote.so
# vim /etc/ld.so.conf.d/omnitty-x86_64.conf
添加如下內容:
/usr/local/lib
# ldconfig
三、omnitty使用
注意:omnitty是基於ssh的批量登陸操作程序,所以在執行操作時必須要注意ssh的用戶權限,以免造成不可估量的損失。
Omnitty默認使用執行此程序的user來進行ssh登陸操作
1、創建主機列表
在裝有omnitty的主機上創建一個需要批量操作的主機列表,例:
vi host
192.168.40.128
192.168.40.129
······
此列表文件每台主機的ip要以回車分隔,執行omnitty的user要有對文件的權限。
2、執行omnitty
linux-b779:~ # omnitty
F1:操作菜單
F2/3:向上/向下選擇主機
F4:標記/取消標記主機
F5:添加主機
F6:刪除主機
F7:廣播
F1菜單詳細指令:
r:對主機重命名(只是為了標記清楚,並不是更改hostname)
t:標記所有主機(即選中所有主機)
q:退出程序
添加主機:按F5,程序左下角會提示“add”,在此后面填寫主機列表,
格式:@/root/host
用主機列表添加主機的方法,ssh登陸的用戶是默認執行omnitty的user,不能寫成user@hostlist.txt,這樣是不成功的。
如果想以固定賬戶登陸,就不能使用主機列表的方式,而是寫成類似於ssh登陸的語法:user@x.x.x.x,但是這樣就失去了部分omnitty的意義,因為你得手動填寫一系列的主機列表,不夠智能。
輸入主機列表后,按F1—t選擇全部主機(選擇的主機名為綠色),再按F7廣播操作命令,即操作對選中的所有主機生效。執行廣播命令要慎重!!!
在實際操作中可按F2/F3來選擇相應的主機界面,按F4標記或取消標記一台主機,用F6來刪除一台主機,根據實際情況具體應用。
#######################簡單的批量操作使用######################
【如果主機比較多,或者懶得一次次輸入的時候,可以選擇下面的方式】
把主機地址寫到一個文件中,如在/root下創建一個文件server,添加如下內容:
鍵入F5之后,使用@/root/server回車,即可加入列表中的所有服務器。
注:不能寫成user@/root/server,這樣是不成功的。
F2/F3==>上下切換待操作的服務器
F5加入server中多個服務器后,往往需要使用F2/F3切換服務器,以輸入密碼。
【經測試,在添加完server列表主機回車提示輸密碼之后,可以F1—t—F7進入廣播模式,即可以同時操作列表中所有主機時,一次性輸入密碼即可,條件是所有主機密碼相同】
F4==>當前服務器打入/取消tag
F7==>進入!!!MULTICAST MODE!!!多台輸入模式,此時隨意在某一台上敲命令都可以,列表中的主機執行動作將會一模一樣。可以使用F2/F3切換驗證。
#######################如果SSH端口不是默認端口######################
http://blogimg.chinaunix.net/blog/upfile2/090703165246.gz
下載此軟件包,重命名#mv 090703165246.gz omnitty-0.3.0-patched.tar.gz
下面的安裝過程與上面的一樣!
在編寫主機列表時:#vim /root/host
192.168.1.60
192.168.1.61 –p 222
#omnitty添加主機時命令相同
#omnitty ----F5下面輸入@/root/host 回車即可