Назад | Перейти на главную страницу

Псевдотерминал SSH

Я пытаюсь получить дамп 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 (или сценарий оболочки) без пароля