Выход Grep Wvdial во время работы

Я хочу grep вывод из wvdial во время работы wvdial . На самом деле я хочу запустить задачу, когда модем подключен.

Я хочу сделать это следующим образом: grep string «IP-адрес», если он доступен, значит, подключен модем, а затем запустить другой сценарий оболочки для выполнения другой задачи.

Как это можно сделать возможным?

One Solution collect form web for “Выход Grep Wvdial во время работы”

Строго говоря, ответ:

Многие программы, когда они где-то загружаются, буферизуют их вывод – они пишут сразу несколько строк. Это повышает производительность, но, конечно же, ломает ваши попытки grep выхода. GNU Coreutils включает утилиту stdbuf которая часто позволяет вам это изменить. Вы хотите изменить stdout или stderr на буферизацию строки. Это может сработать – но, вероятно, это не лучшее решение.

Лучший способ:

Если вы посмотрите в /etc/ppp , вы увидите там несколько скриптов, включая /etc/ppp/ip-up . Когда появляется ссылка PPP, pppd запускает этот скрипт. По крайней мере, на Debian этот скрипт запускает все сценарии в /etc/ppp/ip-up.d/ .

Поэтому гораздо более простое решение – поместить ваш сценарий оболочки в /etc/ppp/ip-up.d/ или отредактировать (или создать, если он не существует) /etc/ppp/ip-up . Аналогично …ipv6-up , а также …-down варианты. Есть еще несколько; Подробнее см. в разделе «Скрипты» man-страницы pppd .

Имейте в виду, что вы можете просто использовать сценарий up, чтобы сигнализировать вашему скрипту (или другому), что ссылка готова – она ​​не должна сама выполнять эту работу. Например, вы можете сигнализировать с чем-то таким же простым, как kill -USR1 other-script-pid а затем использовать trap & sleep для ожидания этого сигнала. Или вы можете открыть именованный канал («fifo», например, mkfifo ) для чтения (который будет блокироваться до тех пор, пока не появится писатель), а затем сценарий up просто echo alive > /path/to/fifo . Или, может быть, откликнуть IP-адрес или другую полезную информацию. Или ваш скрипт может kill -STOP $$ , а затем ваш скрипт может kill -CONT script-pid . Есть несколько способов сделать это. (Вы даже можете изо всех сил использовать dbus.)

  • ключевое слово grom () в bash бросает неожиданный '(' токен
  • многоядерные команды командной строки
  • Найти имена репозиториев из гитолитного информационного вывода
  • Как заменить токены из одного файла данными из другого?
  • Параллельное выполнение сценария sh на нескольких серверах
  • Есть сценарий с perl shebang, нужно переключиться на bash в середине
  • Замена шаблона после n-го совпадения найдена в каждой строке?
  • выполнение скрипта после выхода из системы
  • Как я могу исправить скрипт завершения табуляции имени хоста SSH?
  • Как удалить конечные пробелы в конце строки в заданных файлах (более одного)?
  • Динамическая конфигурация пользователя для git с помощью сценария-оболочки?
  • Linux и Unix - лучшая ОС в мире.