2010-02-11 1 views
2

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

ответ

1

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

+0

Пользователи с разными паролями используют этот скрипт. поэтому он не подходит для жесткого кодирования пароля. – Abhijeet

+0

Я не объяснял себя должным образом. Я имел в виду предоставить пользователю ввести пароль с помощью аргумента командной строки. Не переустанавливать пароль внутри приложения. – mgfernan

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 
1

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

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

    набор ПАРОЛЬ [LINDEX $ ARGV 3];

в

set PASSWORD [lindex $argv 2]; 

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

Смежные вопросы