最近在寫一支 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
我就不多說了
我就不多說了
我就不多說了