關於並行SSH執行命令和檔案複製的一些總結

2021-06-18 03:57:58 字數 1165 閱讀 6731

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

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 servera.tanx.cm`'  pwd

通過以上手段,現在已經可以不輸入密碼執行以前的指令碼

ssh批量拷貝檔案 執行命令

bin bash length cat ip.txt wc l for i 1 i length i doecho schedule i length mg ip awk nr i ip.txt user awk nr i ip.txt password1 awk nr i ip.txt passw...

ssh安裝配置和檔案壓縮傳輸命令

yum install ssh systemctl start sshd vi etc ssh sshd.config passwordauthentication no yes 開啟或關閉ssh的預設認證方式 permitrootlogin no yes 開啟或關閉root使用者的登陸許可權 al...

Python3 ssh執行命令與檔案上傳

1.scp pip install scp 2.paramiko pip install paramiko import paramiko ssh paramiko.sshclient 新建乙個連線物件 ssh.set missing host key policy paramiko.autoadd...