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

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

Как создать сценарий, который отвечает на вывод консоли? Например, я пытаюсь настроить 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.
  • Одновременно проверьте наличие пустого выхода и успешный статус выхода
  • Захват определенного столбца из вывода команды
  • Создайте новую ссылку для доступа ко всем файлам и папкам
  • Вывод содержимого конвейера в файл и отображение количества строк в файле на stdout
  • -ksh: income_ext.ksh: не найден
  • Как эффективно использовать сценарии bash (разные затраты на восстановление и хорошие привычки)?
  • TOR скрытая служба не всегда доступна через cURL. Принимает несколько попыток
  • Считать файлы в каталоге по расширению
  • inotifywait - получить старое и новое имя файла при переименовании
  • Поддерживают ли оболочки рекурсию?
  • Сохранение параметров `find` в переменной
  • невозможно открыть файл в качестве первого аргумента
  • Interesting Posts

    Каков наилучший способ форматирования жесткого диска в Linux, чтобы не оставлять следов?

    Что такое «Печать в файл» и может ли он использоваться из командной строки?

    Как установить название терминала в linux mint 18

    cut / grep и df -h

    Пакет firefox недоступен

    Как ACL вычисляет эффективные разрешения для файла?

    Что случилось с этим выражением sed?

    OpenBSD: 32 бит или 64 бит

    Поиск библиотек, с которыми была связана библиотека,

    Сценарий для удаления файлов, не соответствующих определенным именам файлов

    Могу ли я получить противоположность `diff -q` – сопоставление идентичных файлов без печати их содержимого

    Замораживание системы при настройке alsa

    Как настроить linux для автоматического переключения между LAN и WLAN без использования сетевого менеджера

    Как обновить автономный веб-сайт с помощью wget для настройки расширений и конвертации ссылок?

    Как начать рабочий стол mate

    Linux и Unix - лучшая ОС в мире.