shell 指令碼實戰筆記(8)--ssh免密碼輸入執行命令

來源:互聯網
上載者:User

標籤:style   blog   http   java   使用   os   

前言:

  ssh命令, 沒有指定密碼的參數. 以至於在指令碼中使用ssh命令的時候, 必須手動輸入密碼, 才能繼續執行. 這樣使得指令碼的自動化執行變得很差, 尤其當ssh對應的機器數很多的時候, 會令人抓狂.本文講解了兩種方式, 一種藉助expect指令碼, 一種藉助sshpass來實現.

*) 藉助expect指令碼來實現
1. expect不是系統內建的工具, 需要安裝
yum install expect -y

2. expect指令碼的編寫規則

1. [#!/usr/bin/expect]告知系統指令碼裡的代碼使用那一個shell來執行。 注意:這一行需要在指令碼的第一行。 2. [set timeout <timeout>] 基本上認識英文的都知道這是設定逾時時間的,現在你只要記住他的計時單位是:秒. timeout -1 為永不逾時3. [spawn <command>] spawn是進入expect環境後才可以執行的expect內部命令, 主要給後續的命令加個殼, 用來傳遞互動指令.4. [expect "<match_string>"] 這裡的expect也是expect的一個內部命令,請不要驚訝.5. [send "<response_string>\r"] 這裡就是執行互動動作,與手工輸入內容的動作等效。 溫馨提示: 命令字串結尾別忘記加上“\r”,如果出現異常等待的狀態可以核查一下.6. [interact] 執行完成後保持互動狀態,把控制權交給控制台, 若要退出,使用expect eof代替7. $argv 參數數組expect指令碼可以接受從bash傳遞過來的參數.可以使用[lindex $argv n]獲得,n從0開始,分別表示第一個,第二個,第三個....參數

簡單例子:

#! /usr/bin/expectspawn sudo apt-get install vimexpect "password"send "<password>\r"expect eof

這樣就可以避免輸入sudo密碼了

3. 案例編寫

#! /bin/bashfunction auto_ssh() {  username_server="$1"  password="$2"  command="$3"  ssh_warpper="     spawn ssh -o StrictHostKeyChecking=no $username_server \"$command\"\n    expect {                                   \n      -nocase \"password:\" {send \"$password\r\"}            \n    }                                       \n    expect eof                                  \n  "  echo -e $ssh_warpper | /usr/bin/expect}auto_ssh [email protected] 123456 "ifconfig eth0"

評註:
  ssh -o StrictHostKeyChecking=no 對首次登入的機器不進行檢查, 避免了使用者手動輸入yes/no
  echo -e $ssh_warpper, -e參數對後續字串, 開啟轉義支援開關.

*) sshpass的使用

官網地址: http://sourceforge.net/projects/sshpass/
1. 安裝sshpass
wget http://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz
tar zxvf sshpass-1.05.tar.gz
cd sshpass-1.05
./configure
make && make install

2. sshpass命令的詳解

3. sshpass簡單樣本
sshpass -p <password> ssh <username>@<server_ip> "<command>"

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.