2

実行時にパスワードを要求するスクリプト ( dobrt ) があります。dobrtを実行し、要求されたパスワード自動的に提供するスクリプトを作成するにはどうすればよいですか。

を実行する ./dobrt -p file.txtと、システムがパスワードを要求します。スクリプトによってパスワードが自動的に送信されるようにします。ここに出力があります

$ ./dobrt -p file.txt
Found 194 tests to execute
------------ 2010 February 11 11:27:33 ------------
Password: *************** 

これにはシェルスクリプトとexpecxtスクリプトを使用してみました。これが私がしたことです。

私は2つのスクリプトを持っています。最初のスクリプト (run_dobrt.sh) から 2 番目のスクリプト (run_dobrt.exp) を呼び出します。

スクリプト 1: run_dobrt.sh

#!/bin/ksh

TESTCASE_HOME="/home/abhijeet/code/testcases";
TESTCASE_LIST="file.txt";
PASSWORD="*****";

echo "Running Expect Script"
`./run_dobrt.exp $TESTCASE_HOME $TESTCASE_LIST $PASSWORD`

スクリプト 2: run_dobrt.exp

#!/usr/local/bin/expect -f
set TESTCASE_HOME [lindex $argv 0];
set TESTCASE_LIST [lindex $argv 1];
set PASSWORD [lindex $argv 3];

set timeout 200
spawn $TESTCASE_HOME/dobrt -p $TESTCASE_HOME/$TESTCASE_LIST
expect "*?assword:*" {send -- "$PASSWORD\r";}
expect eof

run_dobrt.sh を実行すると、次のエラーが表示 されますrun_dobrt.sh[20]: spawn: not found このエラーを取り除き、このタスクを完了するにはどうすればよいですか? 助けてください。

4

3 に答える 3

1

2つの問題があります。

  1. シェルスクリプトの最後の行で、コマンドの前後の引用符を削除します。これにより、expectスクリプトの出力がシェルコマンドとして実行されます。
  2. 期待スクリプトで、変更します

    パスワードを設定[lindex$argv 3];

set PASSWORD [lindex $argv 2]; 

引数をスキップしています。

于 2010-02-12T15:32:23.947 に答える
1

ドブレットとは?自作プログラムですか?この場合、パスワードを受け入れる追加の引数を解析するためにコードを書き直す必要があると思います。次に、コマンドラインで(スクリプトを介して)「-p file.txt」と同じように、このパスワードを dobrt に渡すことができます。

于 2010-02-11T07:27:27.233 に答える
0

パスワードが dobrt プロンプトの唯一の入力である場合は、これを試すことができます。

スクリプト 1: run_dobrt.sh

#!/bin/ksh 

TESTCASE_HOME="/home/abhijeet/code/testcases"; 
TESTCASE_LIST="file.txt"; 
PASSWORD="*****"; 

./run_dobrt.exp $TESTCASE_HOME $TESTCASE_LIST << EOF
$PASSWORD
EOF
于 2010-02-11T21:52:18.760 に答える