В моем сценарии оболочки я пытаюсь удалить запрос пароля для scp
команда (как указано в https://stackoverflow.com/questions/459182/using-expect-to-pass-a-password-to-ssh/459225#459225) и вот что у меня есть: -
#!/usr/bin/expect
spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH
expect "password:"
send $sshPassword"\n";
interact
При запуске скрипта возникают ошибки
spawn: command not found
send: command not found
interact: command not found
Я тоже получал ошибку expect: command not found
Кроме того, тогда я понял путь к expect
не было правильным и expect
вообще не устанавливался. Так я и сделал yum install expect
, исправили путь и ошибка исчезла. Но все еще не удалось удалить остальные 3 ошибки.
Вы неправильно вызываете сценарий.
Если вы скажете:
bash scriptname
затем #! строка игнорируется, и bash принимает файл, как если бы это были инструкции bash. Но это не сценарий bash, это сценарий ожидания.
#! Строка интерпретируется ядром только тогда, когда ей дан скрипт как отдельная команда.
Либо дайте скрипту разрешение на выполнение, чтобы вы могли просто вызвать ./scriptname
, или используйте expect
команда для запуска скрипта.
убедитесь, что у вас есть инструмент "ожидать", если нет, сделайте это
# apt-get install expect
создайте файл сценария со следующим содержимым. (# vi / root / scriptfile)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
выполнить файл сценария с помощью инструмента "ожидать"
# expect /root/scriptfile