expect一:sshインタラクティブログイン認証パスワード


expectを使用して自動ログインを実現するスクリプトは、sshログイン認証パスワード入力の問題を解決します.
例:
スクリプトコードは以下の通りです.
  #!/usr/bin/expect   
  set timeout 30  
  spawn /usr/bin/ssh [email protected]
  expect "password:"  #             “password:”     
  send "123/r"       #    
  #interact             
  expect "*]#"
  send "exit\r"         #  
  expect eof

  ############################################## 
実行:
./test.shそれでは実行
基本フレーム1.[#!/usr/bin/expect]の行は、オペレーティングシステムのスクリプト内のコードがそのshellを使用して実行されることを示します.ここのexpectは実はlinuxの下のbash、windowsの下のcmdと同じものです. 2. [set timeout 30]基本的に英語を知っている人は、タイムアウト時間を設定していることを知っています.今、彼のタイミング単位は秒3であることを覚えておいてください.〔spawn ssh -l username 192.168.1.1〕spawnはexpect環境に入ってから実行できるexpect内部コマンドであり、expectをインストールしていないか、デフォルトのSHELLで直接実行していないとspawnコマンドは見つかりません.だから「which spawn」などのコマンドでspawnコマンドを探さないでください.例えばwindowsのdirは内部コマンドで、このコマンドはshellが持参して、dir.comやdir.exeの実行可能なファイルを見つけることができません.主な機能はssh実行プロセスにシェルを加えて、インタラクティブなコマンドを伝達することです.4.〔expect「password:」]ここのexpectもexpectの内部コマンドで、ちょっと気絶しますね.expectのshellコマンドは内部コマンドと同じですが、機能ではなく、慣れればいいです.このコマンドの意味は、前回の出力結果に「password:」という文字列が含まれているかどうかを判断し、あればすぐに返し、そうでなければしばらく待ってから返すことを意味し、ここでの待ち時間は前に設定した30秒5である.send「ispass/r」ここではインタラクティブな動作を実行し,手動でパスワードを入力する動作と等価である.ヒント:コマンド文字列の末尾に「/r」を付けるのを忘れないでください.異常待ちの状態が発生したらチェックしてください. 6. [interact]実行が完了したらインタラクティブな状態を保ち、制御権をコンソールに渡すと、このとき手作業で操作できます.このログインが完了しないと、リモート端末に残るのではなく、終了します.過去にログインして実行するだけなら