Приветствую, хочу написать скрипт самообновления с git. Проблема в том, что команды, после которых все успешно работает, выполняются только если их вручную ввести, в скрипте они не исполняются правильно. Вот их последовательность (expect нужен для последствующем развитии скрипта, интерактивность с выводо результата с помощью ssh-add -l и т.д.):
#!/usr/bin/expect
exec bash evileval.sh &
exec ssh-add &
exec git pull origin
Пробовал между ними добавлять sleep, не спасает. В «evileval.sh» хранится только команда «eval `ssh-agent -s`», потому что добавив эту строчку в основной скрипт, команда eval будет конфликтовать с существующей в expect командой eval.
ssh-add нужен для того, чтобы добавить ключ из .ssh/id_rsa, что успешно выполняется, если просто ввести эти команды вручную без скрипта.
При отсутствии запущенных копии ssh-agent я получаю следующий вывод:
Agent pid 16374
Could not open a connection to your authentication agent.
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@localhost:~$
После это введя git pull origin все равно он требует пароль. При успешном выполнении команд планирую добавить скрипт в cron. Дистр Ubuntu 14.04, i686. Подскажите пожалуйста как заставить команды работать должным образом, спасибо.
bash, expect, git