Что означает скрипт chat...
Скрипт chat - последовательность пар "ожидаемая строка" "посылаемая строка". В частности обратите внимание, что мы ВСЕГДА ожидаем что-нибудь перед тем, как пошлем что-либо.
Если мы должны послать что-то БЕЗ того, чтобы сначала получить что-нибудь, мы должны использовать пустую строку ожидания (обозначаемую "") и аналогично для ожидания чего-либо без того, чтобы посылания чего-нибудь! Также, если строка состоит из нескольких слов, (например, NO CARRIER), вы должны взять строку в кавычки, чтобы chat вопринял ее как одно целое.
Строка chat в нашем шаблоне:
______________________________________________________________________
exec /usr/sbin/chat -v ______________________________________________________________________
В вызове chat опция -v говорит, чтобы chat копировал ВЕСЬ ввод/вывод в систеный лог (обычно /var/log/messages). Как только вы убедитесь, что скрипт chat работает надежно, отредактируйте эту строку, чтобы удалить -v, чтобы не хранить ненужную информацию в вашем syslog.
______________________________________________________________________
TIMEOUT 3 ______________________________________________________________________
Это устанавливает паузу для получения ожидаемого ввода в 3 секунды. Вы можете увеличить это значение до 5 или 10 секунд, если вы используете медленный модем!
______________________________________________________________________
ABORT '\nBUSY\r' ______________________________________________________________________
Если получена строка BUSY, то операция аварийно прекращается.
______________________________________________________________________
ABORT '\nNO ANSWER\r' ______________________________________________________________________
Если получена строка NO ANSWER, то операция аварийно прекращается.
______________________________________________________________________
ABORT '\nRINGING\r\n\r\nRINGING\r' ______________________________________________________________________
Если (повторимся) получена строка RINGING, то операция аварийно прекращается.
Это потому, что кто-то сидит на вашей телефонной линии!
______________________________________________________________________
" \rAT ______________________________________________________________________
Не ожидаем ничего от модема, и послаем строку в него.
______________________________________________________________________
OK-+++\c-OK ATH0 ______________________________________________________________________
Это немного более сложно, поскольку использует некоторые из возможностей восстановления при ошибках chat.
What is says is...Ожидаем OK, если он не получен (потому что модем не в командном режиме), затем посылаем +++ (стандартная строка для Hayes-совместимых модемов, которая возвращает модем в командный режим) и ожидаем OK.
Затем посылаем ATH0 (строка для завершения связи модема). Это позволяет вашему скрипту справляться с вашим модемом, зависшим во время сеанса связи!
______________________________________________________________________
TIMEOUT 30 ______________________________________________________________________
Установим паузу по времени в 30 секунд для оставшихся команд скрипта. Если вы испытываете проблемы со скриптом chat, прерывающимся из-за пауз, увеличьте это значение до 45 секунд или больше.
______________________________________________________________________
OK ATDT$TELEPHONE ______________________________________________________________________
Ожидаем OK (ответ модема на команду ATH0) и набираем номер, на который мы хотим позвонить.
______________________________________________________________________
CONNECT '' ______________________________________________________________________
Дожидаемся строки CONNECT (которую наш модем посылает, когда удаленные модем отвечает) и не посылаем в ответ ничего.
______________________________________________________________________
ogin:--ogin: $ACCOUNT ______________________________________________________________________
Снова, здесь мы вставляем кое-какое исправление ошибок. Ожидаем подсказку входа в систему (... ogin:), но если мы не получаем ее по истечении паузы, то посылаем возврат каретки и затем ищем подсказку входа в систему снова. Когда подсказка получена, посылаем username (сохраненное в переменной shell $ACCOUNT).
______________________________________________________________________
assword: $PASSWORD ______________________________________________________________________
Ожидаем запроса пароля и посылаем наш пароль (аналогично сохраненный в переменной shell).
Этот скрипт chat имеет приемлемую возможность исправления ошибок. chat имеет значительно большее количество возможностей, чем показано здесь. Для подробной информации проконсультируйтесь с man chat (man 8 chat).