2013-07-09 6 views
0

Я просто хочу написать сценарий оболочки для автоматической подачи приглашений имени пользователя и пароля при выполнении моих команд, Я пробовал этот, но он не работал. Пожалуйста, помогите мне в любом случае.Как написать автоматический интерактивный сценарий оболочки?

#!/bin/bash 
#!/usr/bin/expect 

ls -ltr 

spawn sudo git pull 

expect "[sudo] password for sandeep:" 

send "sandeep123\n" 

expect "Username :" 

send "sandeep\n" 

expect "Password :" 

send "sandeep121\n" 

Я получаю следующий вывод:

[email protected]:~$ ./checkout.sh 
total 64 
./checkout.sh: line 8: spawn: command not found 
couldn't read file "Username:": no such file or directory 
./checkout.sh: line 16: send: command not found 
couldn't read file "Password:": no such file or directory 
./checkout.sh: line 20: send: command not found 

ответ

2

Синтаксис ожидать является

expect -c 'spawn sudo git pull; expect assword; send "password\n"; interact' 

Где spawn sudo git pull; ваша команда, expect assword; ждет assword появляться и когда он expect посылает password.

1

У вас есть два #! но ваш скрипт может запускаться только одной из этих программ одновременно. Поскольку большинство ваших команд - команды Expect, удалите строку #!/bin/bash, чтобы сценарий запускался Expect. Однако строка ls -ltr не является командой Expect и вызывает ошибку, но вы можете обойти это, преобразовывая ее в puts [exec ls -ltr]. Более подробно см. the Expect manual page