8

私は以下のようにシェルスクリプトを作成しました:

#!/bin/bash

echo "Select the Gateway Server:"
echo "   1. Gateway 1"
echo "   2. Gateway 2"
echo "   3. Gateway 3"

read gatewayHost

case $gatewayHost in
    1) gateway="abc.com" ;;
    2) gateway="pqr.com" ;;
    3) gateway="xyz.com" ;;
    *) echo "Invalid choice" ;;
esac

/mypath/abc

上記のスクリプトでは、ユーザー入力の選択からゲートウェイをフェッチし、以下に示すスクリプトを期待するabc.shスクリプトに渡そうとしています。

#!/usr/bin/expect

set timeout 3
spawn ssh "james@$gateway"
expect "password:"
send "TSfdsHhtfs\r";
interact

しかし、シェルスクリプトからゲートウェイ変数を渡してスクリプトを期待することはできません。誰かがこれを達成する方法を教えてもらえますか?レガシーの理由でのみシェルスクリプトを使用する必要があることに注意してください(tclスクリプトを使用できないか、expectスクリプト自体ですべてを実行することはできません)

4

1 に答える 1

14

シェルスクリプトから:

/mypath/abc $gateway

あなたの期待スクリプトから:

#!/usr/bin/expect

set gateway [lindex $argv 0]; # Grab the first command line parameter

set timeout 3
spawn ssh "james@$gateway"
expect "password:"
send "TSfdsHhtfs\r";
interact
于 2013-03-15T00:45:02.193 に答える