Скрипт chat - последовательность пар "ожидаемая строка" "посылаемая строка". В частности обратите внимание, что мы ВСЕГДА ожидаем что-нибудь перед тем, как пошлем что-либо.
Если мы должны послать что-то БЕЗ того, чтобы сначала получить что-нибудь, мы должны использовать пустую строку ожидания (обозначаемую "") и аналогично для ожидания чего-либо без того, чтобы посылания чего-нибудь! Также, если строка состоит из нескольких слов, (например, NO CARRIER), вы должны взять строку в кавычки, чтобы chat вопринял ее как одно целое.
В вызове chat опция -v говорит, чтобы chat копировал ВЕСЬ ввод/вывод в систеный лог (обычно /var/log/messages). Как только вы убедитесь, что скрипт chat работает надежно, отредактируйте эту строку, чтобы удалить -v, чтобы не хранить ненужную информацию в вашем syslog.
Это устанавливает паузу для получения ожидаемого ввода в 3 секунды. Вы можете увеличить это значение до 5 или 10 секунд, если вы используете медленный модем!
Это немного более сложно, поскольку использует некоторые из возможностей восстановления при ошибках chat.
What is says is...Ожидаем OK, если он не получен (потому что модем не в командном режиме), затем посылаем +++ (стандартная строка для Hayes-совместимых модемов, которая возвращает модем в командный режим) и ожидаем OK.
Затем посылаем ATH0 (строка для завершения связи модема). Это позволяет вашему скрипту справляться с вашим модемом, зависшим во время сеанса связи!
Установим паузу по времени в 30 секунд для оставшихся команд скрипта. Если вы испытываете проблемы со скриптом chat, прерывающимся из-за пауз, увеличьте это значение до 45 секунд или больше.
Снова, здесь мы вставляем кое-какое исправление ошибок. Ожидаем подсказку входа в систему (... ogin:), но если мы не получаем ее по истечении паузы, то посылаем возврат каретки и затем ищем подсказку входа в систему снова. Когда подсказка получена, посылаем username (сохраненное в переменной shell $ACCOUNT).
Ожидаем запроса пароля и посылаем наш пароль (аналогично сохраненный в переменной shell).
Этот скрипт chat имеет приемлемую возможность исправления ошибок. chat имеет значительно большее количество возможностей, чем показано здесь. Для подробной информации проконсультируйтесь с man chat (man 8 chat).