Site icon Mr. 沙先生

ssh 用 sshpass 取代 expect 自動輸入密碼

最近在寫一支 script 要掃全部機器,可是舊機器沒有 key,變成要用密碼 login,一開始用 expect 做簡單的互動式是沒問題,不過隨著問題變得複雜 expect 的問題也慢慢浮現 …

 

在這個狀況 expect 需要替我把 ssh 後 return 的值拋出來,內建 expect 可以用 puts 做,但是當 return 拋出來有特殊符號如 $,那麼 return 的值就會被當變數 .. 然後拋出來就不完整 …

 

後來找到 sshpass 這個工具,可以輕鬆的把密碼餵給 ssh。

 

要在 MacOS 安裝的話,用 homebrew 最快:

$ brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

 

Ubuntu apt 也有內建:

$ sudo apt-get install sshpass

 

Source code 自己編 ..

下載下來後:

$ ./configure
$ sudo make install

 

 

怎麼用 sshpass

用法簡單到哭 …

$ sshpass -p $PASSWORD ssh user@server

 

我就不多說了

我就不多說了

我就不多說了

 

Exit mobile version