2012-10-20 33 views
1

我想從許多服務器收集信息,無論它們的grub.conf是否包含「elevator」參數。從多個服務器獲取信息的腳本

現在,無密碼密鑰認證是我目前無法做到的。我可以在腳本中指定密碼。

有人能幫我實現嗎?

這是我做過什麼:

#!/bin/bash 

GRUB="/etc/grub.conf" 
_pair="$(</home/wadhwaso/login.txt)" 
Server_info="/tmp/server_info" 
for e in $_pair 
do 
      # extract user and ips for each $e in $_pair 
     IFS='@' 
     set -- $e 
     _user="$1" 
     _ip="$2" 

     sleep 2 
     echo "Connecting to server '${_ip}' via SSH..." 
     ssh ${_user}@${_ip} "sudo grep -q "elevator=noop" "$GRUB" >/dev/null" 
     if [ $? -eq 0 ]; then 
     echo "Present on ${_ip}" | tee -a "${Server_info}" 
     else 
     echo "not present on ${_ip}" | tee -a "${Server_info}" 
     fi 
done 

我不想每次給的密碼,並且密碼的認證不存在在我的環境,將是不可能的,我必須要通過腳本本身的密碼真的不會打擾我,我可以做到這一點。我知道這可以通過期望來完成,但是每次我嘗試使用它時都會弄亂一切。

我嘗試使用期望的方式,它被告知在第一個答案,但我失敗了。

+1

使用公鑰和私鑰驗證?然後使用while循環從文件中讀取服務器列表。 – Jasonw

+0

我希望我可以做關鍵驗證傑森,但那不會發生.. 和我試圖讓我的腳本讀取文件的服務器名稱,但我不知道爲什麼它不這樣做 – Stunn3r

回答

0

的「期望」工具聽起來適合你需要的東西:http://expect.sourceforge.net/

安裝預計(在Ubuntu上,例如),這樣做:

sudo apt-get install expect 

這裏是你展示如何使用一個代碼段希望作爲一個bash腳本的一部分:

#!/bin/bash 

IP="111.111.11.1" 
login="root" 
password="some_password" 
dest_dir="/etc/" 

expect_sh=$(expect -c " 
    spawn ssh [email protected]$IP 
    expect \"password:\" 
    send \"$password\r\" 
    expect \"#\" 
    send \"cd $dest_dir\r\" 
    expect \"#\" 
    send \"chmod +x $server_side_script" 
    expect \"#\" 
    send \"./$server_side_script\r\" 
    expect \"#\" 
    send \"cd /lib\r\" 
    send \"cat $file_count\r\" 
    expect \"#\" 
    send \"exit\r\" 
") 

echo "$expect_sh" 

或者,你可以把邏輯在一個單獨的期待腳本整潔的語法和源從你的bash紙條T:

#!/usr/bin/expect 

set login "root" 
set addr "111.111.1.1" 
set pw "root" 

spawn ssh [email protected]$addr 
expect "[email protected]$addr\'s password:" 
send "$pw\r" 
expect "#" 
send "cd /etc\r" 
# Then other things you need to do 

至於「第三件事」與RSA密鑰指紋:如果連接到你有沒有見過一個主機SSH會警告你(因爲人在這方面的中間人攻擊的可能性) ,理論上你應該驗證指紋是否與你預期的一致,以驗證主機是主機所聲稱的。

希望這有助於=)

+0

我試着用期望像你說的但我做錯了什麼。我編輯了我的腳本,你可以在我的腳本中整合期望嗎? p.s.我正在使用RHEL 5.7 tikanga – Stunn3r