2017年05月09日
expect コマンド
- 2017-05-09 (Tue)
 - ソフトウェア ( Linux/coLinux )
 
「こういう文字列がターミナルに来たら,文字出力とかをしろ」というのをやってくれるコマンド.条件と動作を簡単な言語で書ける.
パスワード認証しかできない ssh サーバに繋いで自動で何かをさせるとかいうのに有用.とりあえず裏でパスワード入れてくれて何もなかったかのように振る舞うだけのもの:
ssh_connect() {
expect <(echo '
  set timeout -1
  proc password_input {} {
    global password
    send $password
    send "\n"
    expect "password:" password_input "Password:" password_input "Last login:" begin_interact
  }
  proc begin_interact {} {
    log_user 1
    interact
  }
  log_user 0
  eval spawn -noecho /usr/bin/ssh -t -o StrictHostKeyChecking=no user@ssh_host
  expect "Password:" password_input "password:" password_input "Last login:" begin_interact
')
}
閑話休題.
サーバによって "password: " だったり "Password:" だったりでハマった.どうも一部のマシンに入れないなぁと思っていたら一文字目の大文字小文字が違ったとは.
- Comments: 0
 - TrackBack (Close): -