關於並行SSH運行命令和文件複製的一些總結

 由於工作中要操作幾十臺機器,因此研究了一下如何同時對一組機器進行操作

我個人平時喜歡用xshell,因爲可以開多個窗口同時發送命令,但是這也僅限於2-5臺的時候,再多就不行了。另外前人留下了一些腳本,如果直接運行,需要敲很多次密碼。爲了減輕負擔:

1,由於現在的工作方式是先登錄跳板機,再登陸生產機,而跳板機的系統配置我沒有權限修改的,所以在個人目錄創建配置文件,.ssh/config 加入StrictHostKeyChecking no,這樣就會自動把新機器加入到known_hosts.

2,利用ssh-agent和ssh-add。先eval `ssh-agent`,然後ssh-add,網上說eval `ssh-agent`可以加到.bashrc中,但是這麼做以前的腳本就有問題,原因不明。最後在xshell中加logon scripts,在登陸成功的時候讓它自動輸入這兩條命令

把公鑰複製到生產機也可以免除輸入密碼,不過我覺得能在管理機上解決的問題,最好不要通過去改生產機解決。

3,並行ssh的工具很多,google了一下,試驗了幾種,最後選定了pssh,這是一個工具集:pssh可以並行運行命令,pscp可以把本地文件複製到多個目標機,pslurp可以把多個目標機上的相同文件複製到本地各自的文件夾。其他的還有prsync等,暫時用不到。

其他的工具:

clusterssh,可以開多個SSH窗口,適合交互式場景

tentakel和dsh,只有發送命令,tentakel有一種類似shell的交互界面

4,先ssh再sudo的問題,一般sudo是要人交互輸入密碼的,這些並行工具運行sudo時會報錯。sudo -S可以從標準輸入讀密碼,所以可以把密碼寫一個環境變量比如 read -s pass,echo $pass | sudo -S 即可,這還取決於ssh的僞終端的配置。還有一些工具軟件可以解決這個問題,比如sshsudo+sshpass,可以並行。

5,pssh安裝,需要先安裝python的setuptools,跳板機上有gcc和python,但是系統路徑和系統配置我都沒有權限,所以統統裝到自己的個人目錄,我一般在編譯的時候指定--prefix=$HOME,對python來說,還要在.bashrc中添加export PYTHONPATH=~/lib/python2.4/site-packages:$PYTHONPATH

bash本身有brace expansion,集團內廣泛使用的類似server[1..9].taobao.com的擴展方法可以通過這一特性實現。例如

pssh -H '`echo server{1,2}a{1..9}.tanx.cm{3,4,6}`'  pwd

通過以上手段,現在已經可以不輸入密碼運行以前的腳本

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章