3

私はそれに期待してbashスクリプトを書いています。

#!/bin/bash
IP1="a.b.c.d"
IP2="e.f.g.h"
HOST="xyz.com"
KEY="/path/to/key/file"
PORT="sshport"
/usr/bin/expect << EOD
    spawn ssh -p $PORT -i $KEY $HOST
    expect "*#"
    send "sh somescript\r"
    expect "Prompt from script:"
    send "$IP1\r"
    expect "Second Prompt from script"
    send "$IP2\r"
    interact

EOD

IP2 を送信した後にユーザーがスクリプトと対話できるように制御を取り戻すことを期待していますが、スクリプトは終了し、リモートホストからセッションからログアウトします。任意のポインタをお願いします?

ありがとうアミット

4

1 に答える 1

3

「expect」コマンドを設定するのではなく、「expect」のstdinに送信するだけです。

「-c」を使用して以下のようなexpectコマンドを指定するか、「-f」を使用してコマンドファイルを指定できます。

/usr/bin/expect -c "
  spawn ssh -p $PORT -i $KEY $HOST
  expect \"*#\"
  send \"sh somescript\r\"
  expect \"Prompt from script:\"
  send \"$IP1\r\"
  expect \"Second Prompt from script\"
  send \"$IP2\r\"
  interact
"
于 2012-10-18T20:42:38.890 に答える