18.01.1999, | |
Удобный параметр call
| |
Естественно, круг тех, кому можно позвонить, не ограничивается одними лишь провайдерами. Я, например, иногда использую pppd для связи с удаленными офисами. Например, для связи с офисом в Химках я использую примерно такую команду: pppd cuaa1 57600 lock \ connect '/usr/bin/chat -V \ ABORT "ERROR" \ ABORT "NO DIALTONE" \ TIMEOUT 5 \ "" "AT" \ "OK"-"+++"-"" "AT" \ "OK" "ATZ" \ "OK" "ATS7=120" \ ABORT "BUSY" \ ABORT "NO CARRIER" \ ABORT "NO ANSWER" \ "OK" "ATDP5556789" \ TIMEOUT 125 \ "CONNECT" "\\c" \ TIMEOUT 30 \ "ogin:" "\\c" \ ' \ user ppnitek remotename khimki \ ipcp-accept-local ipcp-accept-remote \ debug Здесь мы видим два новых параметра ipcp-accept-local и ipcp-accept-remote. Дело в том, что я звоню через порт cuaa1, а для этого порта в /etc/ppp/options.cuaa1 для входящих звонков записаны адреса 192.168.1.1:192.168.1.200 и они не совпадают с теми, которые нам выдаст удаленная сторона в Химках, предположим, что они будут 192.168.10.200:192.168.10.1. Поэтому наша сторона будет считать, что данному соединению присвоены адреса 192.168.1.1:192.168.1.200, а удаленная - 192.168.10.200:192.168.10.1. В результате, хотя соединение состоится, мы не сможем ничего передать. Параметры ipcp-accept-local и ipcp-accept-remote заставляют pppd принять адреса, которые предлагает удаленная сторона. В Химках стоит mgetty и аутентифкация выполняется через PAP. Поскольку телефонный номер один, то нам не понадобится наш скрипт и весь диалог chat мы разместили в параметрах pppd. Конечно, можно вспотеть, каждый раз набирая эту строку, поэтому ее можно записать в какой-нибудь файл и вызывать его как шелл-скрипт, но pppd предлагает другой, более удобный способ. Для этого в каталоге /etc/ppp/peers/ создадим файл khimki и запишем в него следующее: cuaa1 57600 lock connect '/usr/bin/chat -V \ ABORT "ERROR" \ ABORT "NO DIALTONE" \ TIMEOUT 5 \ "" "AT" \ "OK"-"+++"-"" "AT" \ "OK" "ATZ" \ "OK" "ATS7=120" \ ABORT "BUSY" \ ABORT "NO CARRIER" \ ABORT "NO ANSWER" \ "OK" "ATDP5556789" \ TIMEOUT 125 \ "CONNECT" "\\c" \ TIMEOUT 30 \ "ogin:" "\\c" \ ' user ppnitek ipcp-accept-local ipcp-accept-remote debug
По сути, мы записали туда все наши параметры pppd.
Заметьте, что при этом мы pppd call khimki Параметр call указывает pppd прочитать параметры из заданного файла в каталоге /etc/ppp/peers, в данном случае, это файл khimki. У этого способа есть еще одно существенное преимущество перед обычным шелл-скриптом. Дело в том, что существуют несколько параметров pppd, менять которые из командной строки может только root. Например, если в /etc/ppp/options.cuaa1 есть параметр auth, то указать параметр noauth в командной строке может только root. Но как же быть, если обычному пользователю нужно установить соединение с хостом, который не хочет себя аутентифицировать ? Для этого нужно создать файл в каталоге /etc/ppp/peers с нужными нам параметрами, в том числе noauth, и вызывать pppd с параметром call.
Естественно, вместе с параметром call можно добавить
еще параметры.
Допустим, мне нужно, что бы pppd автоматически пытался
восстановить соединение в случае его обрыва, подождав одну секунду.
Для этого я добавлю параметры persist и
pppd call khimki persist holdoff 1
|