Я пытаюсь получить дамп SVN через SSH-соединение
ssh user@host "sudo -u $repo_owner svnadmin dump $repo_path"
В зависимости от того, использовал ли я уже sudo
за последние 15 минут я должен или не должен вводить свой пароль. Проблема в том, что когда мне нужно ввести свой пароль, он появится в терминале без маски. Поэтому попробовал что-то вроде
ssh -t #...
который открывает псевдотерминал. Теперь у меня проблема в том, что я не получаю запрос на ввод пароля. Сценарий просто останавливается и ждет ввода пользователя, не сообщая пользователю, что он должен ввести свой пароль.
Есть ли способ определить, ожидает ли программа, вызванная сценарием, ввода пользователя? И что еще более важно, могу ли я записать что-то в стандартный вывод или стандартный вывод ошибок, прежде чем другая программа захочет что-то прочитать из стандартного ввода. Я имею в виду какой-то метод перехвата, который вызывается до того, как будет выполнено фактическое чтение.
- t6d
использовать $repo_owner ALL = NOPASSWD: /the/path/to/svnadmin
в вашем файле sudoers, очевидно, вам нужно будет изменить путь и $ repo_owner, чтобы он был действительным.
ssh-agent - это ваш ответ, после правильной настройки вы не будете использовать пароли и вам не нужно будет повторно вводить парольную фразу более одного раза.
вы можете использовать авторизацию на основе ключа для ssh-соединения и разрешить user
запустить svnadmin (или сценарий оболочки) без пароля