сценарии оболочки, которые отвечают на вывод консоли

Отказ от ответственности :: Я не активный скриптовый скрипт

Как создать сценарий, который отвечает на вывод консоли? Например, я пытаюсь настроить cron, который периодически изменяет svnsync на мой репозиторий на сервер резервного копирования каждую полночь. Проблема заключается в том, что для синхронизации требуется запрос авторизации.

svnsync sync не принимает никаких параметров для указания входа, поэтому простая команда cron отсутствует. Я считаю, что могу запустить скрипт, но я пытаюсь понять, как заставить его реагировать на вывод консоли.

Например:

ken@server:~$ svnsync sync https://svn3.backup.net/svn/mirror Authentication realm: <https://svn3.backup.net/svn/mirror:443> backup.net Subversion Backup Password for 'ken': ***<send return key>*** Username:***<specify backup.net username>*** Password for '<the name>':***<specify password for username>*** <It proceeds to check out> 

где ***< message >*** – это действие, на которое я хочу, чтобы скрипт отвечал.

4 Solutions collect form web for “сценарии оболочки, которые отвечают на вывод консоли”

Я был в сомнении, когда вы сказали: «svnsync sync не принимает никаких параметров для указания входа», поэтому я проверил документацию и угадал, что она делает :

 --source-password --source-username --sync-password --sync-username 

Этим вариантам должно быть достаточно, чтобы вы могли вернуться к простому сценарию cron.

Вернемся к случаю, когда вы действительно не можете указать такие параметры, все же легко написать сценарий оболочки, который отправляет данные в stdin программы. Например, может работать следующее (где program – это программа, которую вы хотите запустить, а text – это файл, в котором вы храните текст для отправки в программу):

 program < text 

Однако для аутентификации программы часто записываются в готовый с tty а не из stdin (по соображениям безопасности). Я не знаком с этим, но в этом случае вы все равно можете создать поддельный терминал. В этом случае expect ожидание.

expect может помочь.

Есть учебник O'Reilly .

Кроме того, это означает, что в некоторых сценариях пароли становятся ясными.
Не очень хорошая идея.

У svnsync нет параметров для ssh-ключей?

Два аналогичных решения:

  • expect (как дано другими ответами), что требует TCL.
  • pexpect , написанный на чистом Python.
  • Регулярное совпадение в ksh
  • Как выполнить один и тот же набор команд в нескольких подкаталогах в числовом порядке?
  • Сценарий для удаления текстовых файлов
  • Как я могу установить переменную среды постоянно через сценарий оболочки?
  • Многострочные комментарии сценария оболочки - как это работает?
  • Как предотвратить повторное уведомление по электронной почте с помощью bash
  • Как запускать несколько скриптов параллельно
  • grep переменной оболочки не находит ничего
  • Как дать многомерному массиву значение для каждой ячейки,
  • Разбор файла в linux: сохранение только временных меток
  • Bash: вычислить время, прошедшее между двумя временными метками
  • Linux и Unix - лучшая ОС в мире.