Използване на очакване, хвърляне на хайвера с scp

В момента се опитвам да автоматизирам прехвърляне на файл с помощта на командата scp със скрипт на обвивката и очаквания пакет. Въз основа на това, което видях, изглежда, че трябва да имам #!/usr/bin/expect -f Но когато го направих, все още получавам грешките:

DirectoryChange.sh: line 33: spawn: command not found
couldn't read file "*Password:*": no such file or directory
DirectoryChange.sh: line 35: send: command not found
DirectoryChange.sh: line 36: interact: command not found

Кодът, който имам, работи по следния начин:

#!/usr/bin/expect -f

repository=$PWD"/subdirectory/"
set pass "***********"

cd $repository
spawn scp -r user@host:/copyDirectory/ .
expect "*Password:*"
send "${pass}\r";
interact

person AJZec1    schedule 30.05.2013    source източник


Отговори (2)


Изглежда, че извиквате своя очакван скрипт като sh DirectoryChange.sh. Очевидно sh не е правилният интерпретатор за очакване скрипт.

  • променете разширението на файла: ".sh" е за шел скриптове
  • уверете се, че има разрешения за изпълнение, след което го стартирайте с ./DirectoryChange.exp
  • repository=$PWD"/subdirectory/" не е как да присвоите променливи в очакване. премахнете този ред и редактирайте реда cd на cd subdirectory
  • не е нужно да взаимодействате със scp, така че променете последния ред на expect eof
person glenn jackman    schedule 30.05.2013

Лоша практика е да съхранявате пароли в скриптове или във всеки друг файл. Вместо това използвайте SSH ключове за удостоверяване.

Разгледайте този урок.

person Eric Citaire    schedule 02.06.2013