Россия, Казань, Казанский Национальный Исследовательский Технический Университет |
Поддержка удаленных клиентов
Программа uugetty
Формат командной строки для запуска программы uugetty следующий:
uugetty [-d defaults_file] [-a] [-h] [-r delay] [-t timeout] [-w waitfor] line [speed [type [lined]]]
В табл. 16.1 приведены параметры, которые можно задавать при запуске uugetty. Все эти параметры действительны, если программа uugetty описана в файле /etc/inittab, как это показано в листинге 16.1.
Параметры | Описание |
---|---|
-d defaults | Определяет местоположение файла по умолчанию |
-h | При запуске не вешать трубку |
-r delay | Ждать появления одного символа, после чего делать задержку, равную delay секунд |
-t timeout | Принудительное завершение работы uugetty через timeout секунд, если не введено имя пользователя при регистрации в системе |
-w waitfor | Принудительное ожидание программой uugetty определенной строки символов |
line | Определяет /dev/line для мониторинга |
speed | Определяет скорость для /etc/gettydefs |
type | Определяет описание терминала в файле termcap |
lined | Определяет режим использования линии |
Достаточным для работы uugetty является параметр line, указывающий программе устройство, которое необходимо отслеживать. Так, например, в листинге 16.1 программа uugetty отслеживает устройство /dev/ttyS0 или последовательный порт СОМ1 на ПК. Причем скорость обмена данными с модемом на этом порту равна 38400 бит/с, и соединение с удаленной рабочей станцией будет осуществляться с эмуляцией терминала VT100. Протокол эмуляции терминала необходим в том случае, если программа uugetty настроена для очистки экрана терминала или для посылки пользователю приглашения системы (более подробно об этом читайте далее).
В каждой строке файла конфигурации определяется одна переменная, которая выражает какое-либо действие программы uugetty. Формат стандартной строки следующий:
NAME=value
Здесь NAME — переменная, выражающая действие, а value — значение переменной. В табл. 16.2 представлены все действия, которые могут быть описаны в конфигурационном файле.
Создавая файлы конфигурации для каждой модемной линии, можно управлять поведением программы uugetty. Причем работа программы будет зависеть от типа модема или соединения с удаленным клиентом, которое организуется с помощью определенного устройства. Пример файла конфигурации приведен в листинге 16.2.
1 CLEAR = YES 2 HANGUP=YES 3 INIT="" ATS0=1\r OK 4 ALTLOCK=modem 5 ALTLINE=modem 6 TIMEOUT=60Листинг 16.2. Пример файла конфигурации /etc/conf.uugetty
В строке 1 листинга 16.2 указано, что при установлении соединения программа uugetty попытается очистить экран удаленного терминала. В строке 2 показано, что при запуске uugetty предпримет попытку повесить трубку (т.е. сбросить телефонную линию, так как в предыдущем сеансе линия принудительно не сбрасывалась). Строка 3 представляет собой обычную строку инициализации модема. В данном случае модем переводится в режим ответа на первый поступивший звонок ( ATS0=1 ), и от него ожидается отклик в виде слова " ОК ". В строках 4 и 5 определяется альтернативное устройство, которое будет использоваться в сеансе. В большинстве версий ОС Linux используется символическая связь /dev/modem, которая указывает на реальное устройство tty. Однако такие обозначения могут ввести вас в заблуждение, если одни из программ перехватывают управление каналами tty, а другие используют символическую связь /dev/modem. С помощью этих строк в листинге программа uugetty будет проверять и каналы, и символические связи. В последней строке указывается, что программа uugetty после ответа на входящий звонок будет ожидать 60 секунд пока пользователь будет выполнять процедуру входа в систему. По истечении этого времени программа завершается.
Вероятно, вы обратили внимание на специальные коды в листинге 16.2 и в табл. 16.2. Эти коды используются программой uugetty в файлах конфигурации. Их также можно задавать и в командной строке для определения действий или переменных. Все возможные коды представлены в табл. 16.3.
Код | Описание |
\\ | Символ обратный слеш |
\b | Забой |
\c | Не начинать с новой строки |
\f | Пропустить пустую строку |
\n | Новая строка |
\r | Возврат каретки |
\s | Пробел |
\t | Табуляция |
\nnn | ASCII-символ с шестнадцатиричным значением nnn |
@B | Скорость передачи |
@D | Текущая дата |
@L | Линия |
@S | Системное имя |
@T | Текущее время |
@U | Количество подключенных пользователей |
@V | Версия |
@@ | Одиночный символ @ |
Все эти коды могут пригодиться при настройке приглашения, выдаваемого программой uugetty. По умолчанию при установлении соединения с удаленным устройством программа uugetty выдает стандартное приглашение, которое находится в файле /etc/issue. В этом файле вы можете с помощью специальных кодов, приведенных выше, сформировать свое сообщение, которое будет выдаваться программой uugetty при установлении соединения.
Сценарии РРР
Зарегистрировавшись на почтовом сервере, удаленный пользователь должен установить РРР-соединение, чтобы обменяться электронной почтой по модемной линии. Как уже отмечалось в "Протокол РРР" , ОС Linux может выполнять функции сервера РРР. Эта возможность обеспечивается программой pppd. После того как сценарий chat на рабочей станции клиента выполнит процедуру регистрации пользователя на почтовом сервере, он должен запустить на нем программу pppd, которая отвечает за установление РРР-соединения. Как правило, программа pppd запускается с несколькими параметрами командной строки. Если ваши клиенты, имеют смутное представление о компьютерах, запуск pppd становится довольно сложной задачей. Так, например, было бы опрометчиво ожидать от пользователя, что при установлении соединения он задаст командную строку вида:
pppd silent modem crtscts proxyarp 192.168.1.100: 192.168.1.2
К счастью, существует более легкий путь задания параметров, необходимых для работы pppd. Программа pppd может считывать параметры из специальных файлов конфигурации. При запуске она считывает файлы конфигурации и обрабатывает все имеющиеся там параметры точно так же, как будто они были заданы в командной строке. По умолчанию имеется один файл конфигурации pppd — /etc/ppp/options. Пример этого файла приведен в листинге 16.3.
1 lock 2 silent 3 modem 4 crtscts 5 proxyarp 6 192.168.1.100:192.168.1.2Листинг 16.3. Пример файла /etc/ppp/options
После того как необходимые параметры сохранены в файле конфигурации, все, что нужно выполнить пользователю, — запустить в командной строке программу pppd без параметров. Как видите, в строке 6 листинга 16.3 назначается статический IP-адрес для устройства удаленного доступа. Если в вашей системе имеется несколько устройств удаленного доступа, то этот способ для вас неприемлем. Дело в том, что тогда всем удаленным устройствам будет назначен один IP-адрес, и они не смогут работать корректно. Чтобы избежать этого, удалите строку, в которой назначается IP-адрес из файла /etc/ppp/options, и для каждой линии tty с номером xx, которая поддерживает работу с одним модемом, создайте отдельные файлы конфигурации /etc/ppp/options.ttyxx. Затем в каждом из них задайте различные статические IP-адреса.
И еще о некоторых особенностях программы pppd. В строке 5 листинга 16.3 задан параметр proxyarp, с помощью которого удаленные устройства могут устанавливать IP-соединение с любыми устройствами в сети, соединенными с почтовым сервером на базе ОС Linux. Это может пригодиться, если возникает необходимость организовать удаленный доступ не только к почтовому серверу, но и к другим устройствам в сети. Если же вы предпочитаете, чтобы удаленные клиенты работали только с почтовым сервером, удалите из конфигурационного файла строку с параметром proxyarp.