0

指定された変数 ($user) ではなく、ユーザー資格情報の入力を求められたときに、Expect が $expect_out(buffer) を送信しています。その後、タイムアウトします。以下はコードです:

...
    }
    "yes" {
        send_user "\nEnter your username for the WLC supporting the new APs:\n"
        sleep 6
    }
}
expect {
    -re "(.*)\n" {
        set user $expect_out(1,string)
    }
}
send_user "\nEnter your password for the WLC supporting the new APs:\n"
sleep 15
expect {
    -re "(.*)\n" {
        set pass $expect_out(1,string)
    }
}
sleep 1
send_user "\nSshing to the IP of the WLC supporting the new APs ($wlc_temp)\n"
spawn ssh $wlc_temp

expect {
    "User:" {
        send $user\n
        sleep 1
    }
}
expect {
    "assword:" {
        send $pass\n
        sleep 1
    }
}

以下は結果です。

(デバイスのホスト名) ユーザー: (デバイスのホスト名) ユーザー:

以下はデバッグです。

新しい AP をサポートする WLC の IP に Sshing () spawn ssh 親: 同期バイトを待機中 親: 子に先に進むように指示 親: 子から同期されていない spawn: {7153} を返す

期待: "" (spawn_id exp6) は glob パターン "User:" と一致しますか? 番号

期待: "\r\n" (spawn_id exp6) は glob パターン "User:" と一致しますか? いいえ (デバイスのホスト名) ユーザー:

期待: "\r\n(device hostname) User:" (spawn_id exp6) は glob パターン "User:" と一致しますか? はい expect: set expect_out(0,string) "User:" expect: set expect_out(spawn_id) "exp6" expect: set expect_out(buffer) "\r\n(device hostname) User:" send: send "\n" { exp6 } へ

予想: " " (spawn_id exp6) は glob パターン "assword:" と一致しますか? 番号

(デバイスのホスト名) ユーザー:

期待: "\r\n(device hostname) User:" (spawn_id exp6) は glob パターン "assword:" と一致しますか? 予期しない: タイムアウト

更新: ユーザー入力を要求するステートメントをスクリプトの先頭に再配置すると、回避策として機能しました。

4

1 に答える 1