2010-11-26 3 views
0

В следующем сценарии ожидания я заметил, что скрипт отправит пароль даже после запроса пароля. Как это можно предотвратить? Могу ли я использовать заявление ожидания или что-то еще?Использование wait в скрипте

#!/usr/bin/expect -f 
#set timeout 25 
spawn rsync [email protected]:'/usr/backups /usr/backup-scripts /root/test/' /root/ 
expect "[email protected]'s password: $" 
send "\$xxxxxx\n" 
expect "\\$ $ 
+0

Проверьте есть ли RSYNC_PASSWORD в обстановке окружающей среды? Или это открытый ключ, используемый на целевом сервере? (в этом случае удалите ключ) – ajreal 2010-11-26 07:51:21

ответ

0

Для выполнения этой задачи вам не нужно использовать expect. Согласно man page, Rsync поддерживает возможность чтения пароля непосредственно из файла:

rsync --password-file=file_that_password_is_in [email protected]:'/usr/backups /usr/backup-scripts /root/test/' /root/ 

или с помощью переменной среды:

export RSYNC_PASSWORD=secret 
rsync [email protected]:'/usr/backups /usr/backup-scripts /root/test/' /root/ 
+0

Я не рекомендую использовать переменные среды на общей машине; * каждый * пользователь на машине может читать * все * переменные среды для каждого процесса (для этого просто нужны дополнительные опции для `ps`). – 2010-11-26 09:42:05