|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Oleg Leschov 2:5050/59.8 25 Feb 2004 23:43:24 To : All Subject : звонилка / hang-up как? --------------------------------------------------------------------------------
Требуется по простому не-софт модему на серийном порте звонить
провайдеру, ограничивая допустимые типы соединения по протоколу
сжатия и скорости, т.е. надо автоматически убивать соединения,
где скорость меньше некого числа (скажем, 40000), и протокол не V44.
chat так не умеет, поэтому я сейчас использую простой скрипт,
анализирующий то, что сказал chat -vs перед выходом, т.е. строку
CONNECT при успешном соединении. Если эта строка соответствует
ограничениям - управление передаётся pppd, иначе - надо сделать
hang-up и заново запустить chat.
Проблема в том, что я не знаю, как правильно "убить" неудачное
соединение. Сейчас анализатор запускается прямо из chat-скрипта,
который вызывается pppd для установки соединения. Поэтому в скрипте,
анализирующем строку CONNECT, я, если обнаружено неудачное соединение,
пишу в stdout "~+++~ATH0\r" (~-пауза) - по одному символу за раз,
делая flush после каждого. Используется Python, sys.stdout.write,.flush.
Почему-то это не работает. Соединение, конечно, обычно в конце концов
само обрывается, но иногда модем виснет, и его приходится ресеттить
minicom'ом. Иногда даже выключать/включать модем приходится, но это
редко...
Ещё изветно, что иногда та сторона выдаёт стандартное "ogin:-assword:",
если долго не видит pppd - может, с этим связано...
Модем - zyxel omni 56k.
Вопрос - что я не так делаю?
Может, есть готовое решение?
wvdial вроде-бы не умеет такого. Hа уровне модема я нашёл только
фиксацию baud rate, что не катит - мне надо соглашаться на
всё не меньше заданного. Да и фиксации протокола компрессии я не нашёл.
Можно ещё разрешить pppd установить соединение и потом его sighup'нуть,
но это долго и ненадёжно - иногда разрыв соединения производится
слишком долго (особенно при плохих коннектах) и провайдер за это время
вычитает деньги со счёта...
---
* Origin: <<>> (2:5050/59.8)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/60113645f9bff.html, оценка из 5, голосов 10
|