Как использовать сценарий оболочки для предоставления пароля, когда интерфейс запрашивает его - PullRequest
2 голосов
/ 11 февраля 2010

У меня есть скрипт ( 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.exp) из первого (run_dobrt.sh).

Сценарий 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 Как избавиться от этой ошибки и выполнить эту задачу? Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 12 февраля 2010

Я вижу две проблемы:

  1. В последней строке вашего сценария оболочки удалите кавычки `` вокруг команды, они приведут к выполнению вывода ожидаемого сценария в качестве команды оболочки.
  2. В сценарии ожидаемого изменения

    установить ПАРОЛЬ [lindex $ argv 3];

до

set PASSWORD [lindex $argv 2]; 

вы пропускаете аргумент.

1 голос
/ 11 февраля 2010

Что такое добрт? такое самодельная программа? Если это так, я думаю, вам придется перекодировать его, чтобы проанализировать дополнительный аргумент, который принимает пароль. Затем вы сможете передать этот пароль в dobrt так же, как вы делаете это, например, «-p file.txt» в командной строке (через скрипт).

0 голосов
/ 12 февраля 2010

Если пароль является единственным вводимым запросом 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
...