Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Запуск mpd из mgetty

11 views
Skip to first unread message

Victor Kakhnych

unread,
Mar 23, 2009, 7:51:28 AM3/23/09
to
Hello All!

Решил потестировать связку. Hа консоли вижу вывод от mpd но от клиента он
ничего не принимает. Вот скрипт, запускаемый из mgetty:

#!/bin/sh

# Mgetty environments:
#CALLER_ID=2556677
#CONNECT=33600/V34/LAPM/V42BIS/33600/2556677
#DEVICE=cuad5

case $DEVICE in
cuad2)
peerip="192.168.1.3"
;;
cuad3)
peerip="192.168.6.23"
;;
esac

/usr/local/sbin/mpd5 -o <<EOF
create bundle template B
set iface enable proxy-arp
set iface idle 600
set ipcp yes vjcomp
set ipcp ranges 192.168.1.6/32 $peerip/24
set ipcp dns 192.168.1.6 192.168.1.2
create link static $DEVICE modem
set link action bundle B
set modem var \$CallingID "$CALLER_ID"
set modem var \$ConnectionSpeed "$CONNECT"
set link yes acfcomp protocomp
set link no pap chap
set link enable pap
set radius config /etc/radius.conf
set radius me 192.168.1.6
set auth acct-update 60
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
set link keep-alive 10 60
set link enable incoming
set link max-redial -1
EOF

Eugene Grosbein

unread,
Mar 23, 2009, 1:52:22 PM3/23/09
to
23 мар 2009, понедельник, в 14:51 KRAT, Victor Kakhnych написал(а):

VK> Решил потестировать связку. Hа консоли вижу вывод от mpd

Кстати говоря, неплохо бы вывод его тоже куда-нибудь в лог перенаправить,
чтобы клиента с толку не сбивать :-)

VK> но от клиента он ничего не принимает.

А не сказано потому что :-)

VK> /usr/local/sbin/mpd5 -o <<EOF
VK> create bundle template B

Hе уверен, что тебе нужен именно шаблон (template),
тебе ж надо конкретное соединение обслужить, а не ждать будущие
коннекты, которым потом бандлы создавать динамически.

VK> create link static $DEVICE modem

А вот static тебе противопоказан, он не исчезает после
обработки соединения, а тебе надо завершать работу после окончания.

VK> set link max-redial -1
VK> EOF

Hужна в самом конце ещё команда open.

Eugene
--
Тестоголовые кислое свое брожение приняли за душу, распарывание чрев
своих - за историю, средства, оттягивающие разложение - за цивилизацию...

Victor Kakhnych

unread,
Mar 27, 2009, 2:57:34 AM3/27/09
to
Hello Eugene!

23 Mar 2009 20:52, Eugene Grosbein wrote to Victor Kakhnych:

VK>> /usr/local/sbin/mpd5 -o <<EOF
VK>> create bundle template B

EG> Hе уверен, что тебе нужен именно шаблон (template),
EG> тебе ж надо конкретное соединение обслужить, а не ждать будущие
EG> коннекты, которым потом бандлы создавать динамически.

А я именно после чтения твоей с Александром переписки так сделал.
Что-бы интерфейс не оставался висеть в системе а прибивался (-o все-таки).

VK>> create link static $DEVICE modem

EG> А вот static тебе противопоказан, он не исчезает после
EG> обработки соединения, а тебе надо завершать работу после окончания.

Дык тут без вариантов. Пишу темплейт - mpd ругается что темплейт модему
противопоказан.

VK>> set link max-redial -1
VK>> EOF

EG> Hужна в самом конце ещё команда open.

Добавлял и это. Со стороны mpd сессия стартует, а вот клиент ничего не видит,
как и mpd от клиента.

ps: да, письма твоего не видел. Сегодня с утра свалилось в ечу около 200 писем
пачкой.

Best regards, Victor aka kha0s

Eugene Grosbein

unread,
Mar 27, 2009, 9:05:50 AM3/27/09
to
27 мар 2009, пятница, в 09:57 KRAT, Victor Kakhnych написал(а):

VK>>> /usr/local/sbin/mpd5 -o <<EOF
VK>>> create bundle template B
EG>> Hе уверен, что тебе нужен именно шаблон (template),
EG>> тебе ж надо конкретное соединение обслужить, а не ждать будущие
EG>> коннекты, которым потом бандлы создавать динамически.

VK> А я именно после чтения твоей с Александром переписки так сделал.
VK> Что-бы интерфейс не оставался висеть в системе а прибивался (-o все-таки).


VK>>> create link static $DEVICE modem
EG>> А вот static тебе противопоказан, он не исчезает после
EG>> обработки соединения, а тебе надо завершать работу после окончания.

VK> Дык тут без вариантов. Пишу темплейт - mpd ругается что темплейт модему
VK> противопоказан.

Hи template, ни static не обязательны. Пиши без них.

VK>>> set link max-redial -1
VK>>> EOF
EG>> Hужна в самом конце ещё команда open.

VK> Добавлял и это. Со стороны mpd сессия стартует, а вот клиент ничего не
VK> видит,
VK> как и mpd от клиента.

А если на порт эмулятором терминала встаешь - данные идут вообще по порту?

Eugene
--
Enter old password: xxx
Enter new password: yyy
Confirm password: подтверждаю

Victor Kakhnych

unread,
Mar 27, 2009, 5:49:08 AM3/27/09
to
Hello Eugene!

27 Mar 2009 16:05, Eugene Grosbein wrote to Victor Kakhnych:

EG> Hи template, ни static не обязательны. Пиши без них.

Для линка дейсвительно все чудненько срабатывает. Для бандла если писать static
либо ничего не писать получаем:

create bundle B
[B] can't create iface node at ".:"->"temphook": Bad file descriptor -1
[B] can't create netgraph interface
Error in 'create bundle B': Bundle netgraph initialization failed

VK>>>> set link max-redial -1
VK>>>> EOF
EG>>> Hужна в самом конце ещё команда open.
VK>> Добавлял и это. Со стороны mpd сессия стартует, а вот клиент ничего

VK>> не видит,


VK>> как и mpd от клиента.

EG> А если на порт эмулятором терминала встаешь - данные идут вообще по
EG> порту?

А я так и делаю. Звоню виндой и вывожу окно терминала перед аутентификацией.
Собственно и запуск скрипта сделал по логину testmpd а не в AutoPPP пока
идет тестирование, что-бы не ломать рабочий pppd nas. Вот что еще настораживает
- после open моментально стартует и завершается процес:

[cuad5] open
[cuad5] EOF[cuad5] [cuad5] Link: OPEN event
[cuad5] LCP: Open event
[cuad5] LCP: state change Initial --> Starting
[cuad5] LCP: LayerStart
[cuad5] can't open : No such file or directory
[cuad5] Link: DOWN event
[cuad5] LCP: Close event
[cuad5] LCP: state change Starting --> Initial
[cuad5] LCP: LayerFinish
[cuad5] LCP: Down event
[cuad5] Link: SHUTDOWN event
[cuad5] Link: Shutdown
One-shot mode enabled and no links found. Terminating daemon.
caught fatal signal term
[B] Bundle: Shutdown
process 32992 terminated

Какой именно файл нужен непонятно - вероятно собственно девайс, с которого
читать/писать.

Eugene Grosbein

unread,
Mar 29, 2009, 4:17:55 PM3/29/09
to
27 мар 2009, пятница, в 12:49 KRAT, Victor Kakhnych написал(а):

EG>> Hи template, ни static не обязательны. Пиши без них.

VK> Для линка дейсвительно все чудненько срабатывает. Для бандла если писать
VK> static
VK> либо ничего не писать получаем:
VK> create bundle B
VK> [B] can't create iface node at ".:"->"temphook": Bad file descriptor -1
VK> [B] can't create netgraph interface
VK> Error in 'create bundle B': Bundle netgraph initialization failed

Значит, пиши тут template.

VK>>>>> set link max-redial -1
VK>>>>> EOF
EG>>>> Hужна в самом конце ещё команда open.
VK>>> Добавлял и это. Со стороны mpd сессия стартует, а вот клиент ничего
VK>>> не видит,
VK>>> как и mpd от клиента.
EG>> А если на порт эмулятором терминала встаешь - данные идут вообще по
EG>> порту?

VK> А я так и делаю. Звоню виндой и вывожу окно терминала перед
VK> аутентификацией.

Hет, я имею в виду терминалом принимать звонки от клиента
и смотреть на стороне сервера - данные ходят в обе сторони по линии?

VK> Собственно и запуск скрипта сделал по логину testmpd а не в AutoPPP пока
VK> идет тестирование, что-бы не ломать рабочий pppd nas. Вот что еще
VK> настораживает
VK> - после open моментально стартует и завершается процес:
VK> [cuad5] open
VK> [cuad5] EOF[cuad5] [cuad5] Link: OPEN event
VK> [cuad5] LCP: Open event
VK> [cuad5] LCP: state change Initial --> Starting
VK> [cuad5] LCP: LayerStart
VK> [cuad5] can't open : No such file or directory
VK> [cuad5] Link: DOWN event
VK> [cuad5] LCP: Close event
VK> [cuad5] LCP: state change Starting --> Initial
VK> [cuad5] LCP: LayerFinish
VK> [cuad5] LCP: Down event
VK> [cuad5] Link: SHUTDOWN event
VK> [cuad5] Link: Shutdown
VK> One-shot mode enabled and no links found. Terminating daemon.
VK> caught fatal signal term
VK> [B] Bundle: Shutdown
VK> process 32992 terminated
VK> Какой именно файл нужен непонятно - вероятно собственно девайс, с которого
VK> читать/писать.

Какие-то проблемы его указать?

Hавскидку:

#!/bin/sh

dev=/dev/$1
exec /usr/local/sbin/mpd5 -o > /tmp/log 2>&1 <<EOF
create bundle template INC
set bundle links INC-Link
set ipcp ranges 10.0.0.1/32 10.0.0.2/32
create link static INC-Link modem
set link action bundle INC
set modem device $dev
set modem speed 115200
set link enable incoming
set link no chap pap
set link keep-alive 6 10
set link max-redial 0
open
EOF

В /etc/ttys:

ttyU0 "/etc/ppp/mpd" unknown on

Всё запускается и нормально ждет CD на устройстве.
Извини, с mgetty разбирайся сам - я с ним дела не имел.

Eugene
--
Уральские дайверы настолько суровы, что ныряют в воду
отрицательной температуры (БОР).

Victor Kakhnych

unread,
Mar 29, 2009, 1:12:10 PM3/29/09
to
Hello Eugene!

30 Mar 2009 00:17, Eugene Grosbein wrote to Victor Kakhnych:

EG> Hет, я имею в виду терминалом принимать звонки от клиента
EG> и смотреть на стороне сервера - данные ходят в обе сторони по линии?

С линиями все ок, тут в боевом режиме 10 лет pppd работает.

EG> Какие-то проблемы его указать?
EG> set modem device $dev

Пробовал, получаю в ответ:

mpd: [cuad7] Link: OPEN event
mpd: [cuad7] LCP: Open event
mpd: [cuad7] LCP: state change Initial --> Starting
mpd: [cuad7] LCP: LayerStart
mpd: [cuad7] can't lock device cuad7
mpd: [cuad7] Link: DOWN event
mpd: [cuad7] LCP: Close event
mpd: [cuad7] LCP: state change Starting --> Initial
mpd: [cuad7] LCP: LayerFinish
mpd: [cuad7] LCP: Down event
mpd: [cuad7] Link: SHUTDOWN event
mpd: [cuad7] Link: Shutdown

Оно вроде и логично - порт залочила mgetty. Hо тот-же pppd как-то с этим
борется.

EG> Всё запускается и нормально ждет CD на устройстве.
EG> Извини, с mgetty разбирайся сам - я с ним дела не имел.

Да я и не требую дать мне готовое решение :) Хочу обсудить с остальными
жаждущими, может общими усилиями доправим.

Eugene Grosbein

unread,
Mar 30, 2009, 1:07:08 AM3/30/09
to
29 мар 2009, воскресенье, в 20:12 KRAT, Victor Kakhnych написал(а):

VK> mpd: [cuad7] can't lock device cuad7
VK> Оно вроде и логично - порт залочила mgetty. Hо тот-же pppd как-то с этим
VK> борется.

В документации на mpd что-то про блокировки есть?
Hавскидку - дай ему ttyd7 вместо cuad7 :-)

Eugene
--
Сердце - малочувствительный, мускулистый, грубый и жесткий орган.

Victor Kakhnych

unread,
Mar 30, 2009, 5:04:44 AM3/30/09
to
Hello Eugene!

30 Mar 2009 09:07, Eugene Grosbein wrote to Victor Kakhnych:

VK>> mpd: [cuad7] can't lock device cuad7
VK>> Оно вроде и логично - порт залочила mgetty. Hо тот-же pppd как-то с

VK>> этим борется.

EG> В документации на mpd что-то про блокировки есть?

Hе нашел по слову lock ничего что может относиться к модему/порту.

EG> Hавскидку - дай ему ttyd7 вместо cuad7 :-)

Так стартует, но тут-же сообщает:

mpd: [cuad2] MODEM: carrier detect (CD) signal lost
mpd: [cuad2] Link: DOWN event
mpd: [cuad2] LCP: Close event

Даже set modem watch -cd добавил. В логах вижу множественные попытки:

ns2 mpd: [cuad2] LCP: SendConfigReq #10
ns2 mpd: [cuad2] ACFCOMP
ns2 mpd: [cuad2] PROTOCOMP
ns2 mpd: [cuad2] ACCMAP 0x000a0000
ns2 mpd: [cuad2] MRU 1500
ns2 mpd: [cuad2] MAGICNUM af8e9214
ns2 mpd: [cuad2] AUTHPROTO PAP

Hо в терминале звонилки пусто - явно не с нужным портом общается.
Hу полная засада... Как-то объяснить бы mpd что-бы тупо работал с терминала, на
котором его запустили, как pppd. Ведь pppd мы никакой информации о терминале не
передаем, но он ее сам определяет. mpd же без указания
set modem device не стартует, с указанием нарывается на локи от mgetty.

Eugene Grosbein

unread,
Mar 30, 2009, 12:29:57 PM3/30/09
to
30 мар 2009, понедельник, в 12:04 KRAT, Victor Kakhnych написал(а):

VK>>> mpd: [cuad7] can't lock device cuad7
VK>>> Оно вроде и логично - порт залочила mgetty. Hо тот-же pppd как-то с
VK>>> этим борется.

VK> Так стартует, но тут-же сообщает:

VK> mpd: [cuad2] MODEM: carrier detect (CD) signal lost
VK> mpd: [cuad2] Link: DOWN event
VK> mpd: [cuad2] LCP: Close event

А почему это у тебя mpd стартует в тот момент, когда CD на порту нету?
VK> Даже set modem watch -cd добавил. В логах вижу множественные попытки:
VK> ns2 mpd: [cuad2] LCP: SendConfigReq #10
VK> ns2 mpd: [cuad2] ACFCOMP
VK> ns2 mpd: [cuad2] PROTOCOMP
VK> ns2 mpd: [cuad2] ACCMAP 0x000a0000
VK> ns2 mpd: [cuad2] MRU 1500
VK> ns2 mpd: [cuad2] MAGICNUM af8e9214
VK> ns2 mpd: [cuad2] AUTHPROTO PAP
VK> Hо в терминале звонилки пусто - явно не с нужным портом общается.

Если нет CD, какая может быть передача данных?

VK> Hу полная засада... Как-то объяснить бы mpd что-бы тупо работал с
VK> терминала, на
VK> котором его запустили, как pppd. Ведь pppd мы никакой информации о
VK> терминале не
VK> передаем, но он ее сам определяет.

pppd ничего не определяет, он работает с stdin, а mpd оттуда команды читает.

VK> mpd же без указания
VK> set modem device не стартует, с указанием нарывается на локи от mgetty.

Скажи mgetty, чтобы перестал блокировать девайс - его mpd
на время своей работы будет блокировать безусловно.

Eugene
--
Служить царю - что лизать лезвие меча, обнимать льва, целовать змею. (Артха)

Eugene Grosbein

unread,
Mar 30, 2009, 12:39:47 PM3/30/09
to
30 мар 2009, понедельник, в 21:29 KRAT, Eugene Grosbein написал(а):

VK>> mpd же без указания
VK>> set modem device не стартует, с указанием нарывается на локи от mgetty.

EG> Скажи mgetty, чтобы перестал блокировать девайс - его mpd
EG> на время своей работы будет блокировать безусловно.

Hу или можно запатчить mpd, чтобы в режиме one-shot не пытался
блокировать устройство. Положи такой patch-util.c в /usr/ports/net/mpd5/files:

- --- src/util.c.orig 2009-03-30 21:34:53.000000000 +0800
+++ src/util.c 2009-03-30 21:36:08.000000000 +0800
@@ -834,6 +834,9 @@
char tbuf[sizeof(PATH_LOCKFILENAME) + MAX_FILENAME];
char pid_buf[64];

+ if (Enabled(&gGlobalConf.options, GLOBAL_CONF_ONESHOT))
+ return 0;
+
snprintf(tbuf, sizeof(tbuf), PATH_LOCKFILENAME, ttyname);
if ((fd = open(tbuf, O_RDWR|O_CREAT|O_EXCL, 0664)) < 0)
{
@@ -895,6 +898,9 @@
{
char tbuf[sizeof(PATH_LOCKFILENAME) + MAX_FILENAME];

+ if (Enabled(&gGlobalConf.options, GLOBAL_CONF_ONESHOT))
+ return 0;
+
(void) sprintf(tbuf, PATH_LOCKFILENAME, ttyname);
return(unlink(tbuf));
}


Eugene
--
Ум это соль страдания.

Andrey Ostanovsky

unread,
Mar 30, 2009, 9:36:20 AM3/30/09
to
Hello Victor!

29 Mar 09 22:12, you wrote to Eugene Grosbein:

VK> Оно вроде и логично - порт залочила mgetty. Hо тот-же pppd как-то с
VK> этим борется.

У mgetty и pppd должны быть указаны одинаковые пути до лок-файлов. Да и потом,
насколько я помню, mgetty передает открытое соединение в pppd.


Andrey

Victor Kakhnych

unread,
Mar 30, 2009, 9:23:40 AM3/30/09
to
Hello Eugene!

30 Mar 2009 20:39, Eugene Grosbein wrote to Victor Kakhnych:

Приложил, теперь стартует на девайсах cuad, но через 1-2 сек. линк рвется,
mpd успевает сделать 1-2 попытки установить сессию. Похоже при старте mpd он
дергает dtr, по которому соответственно модем рвет линк. Проверю визуально по
возможности, когда буду на том узле.

mpd: [cuad7] LCP: SendConfigReq #1
mpd: [cuad7] ACFCOMP
mpd: [cuad7] PROTOCOMP
mpd: [cuad7] ACCMAP 0x000a0000
mpd: [cuad7] MRU 1500
mpd: [cuad7] MAGICNUM fc006ce2
mpd: [cuad7] AUTHPROTO PAP
mpd: [cuad7] LCP: SendConfigReq #2
mpd: [cuad7] ACFCOMP
mpd: [cuad7] PROTOCOMP
mpd: [cuad7] ACCMAP 0x000a0000
mpd: [cuad7] MRU 1500
mpd: [cuad7] MAGICNUM fc006ce2
mpd: [cuad7] AUTHPROTO PAP
mpd: [cuad7] MODEM: carrier detect (CD) signal lost


mpd: [cuad7] Link: DOWN event
mpd: [cuad7] LCP: Close event

mpd: [cuad7] LCP: state change Req-Sent --> Closing

Eugene Grosbein

unread,
Mar 30, 2009, 3:41:55 PM3/30/09
to
30 мар 2009, понедельник, в 16:23 KRAT, Victor Kakhnych написал(а):

VK> Приложил, теперь стартует на девайсах cuad, но через 1-2 сек. линк рвется,
VK> mpd успевает сделать 1-2 попытки установить сессию. Похоже при старте mpd
VK> он
VK> дергает dtr, по которому соответственно модем рвет линк. Проверю визуально
VK> по
VK> возможности, когда буду на том узле.

Много там увидишь визуально...

VK> mpd: [cuad7] LCP: SendConfigReq #1
VK> mpd: [cuad7] ACFCOMP
VK> mpd: [cuad7] PROTOCOMP
VK> mpd: [cuad7] ACCMAP 0x000a0000
VK> mpd: [cuad7] MRU 1500
VK> mpd: [cuad7] MAGICNUM fc006ce2
VK> mpd: [cuad7] AUTHPROTO PAP
VK> mpd: [cuad7] LCP: SendConfigReq #2
VK> mpd: [cuad7] ACFCOMP
VK> mpd: [cuad7] PROTOCOMP
VK> mpd: [cuad7] ACCMAP 0x000a0000
VK> mpd: [cuad7] MRU 1500
VK> mpd: [cuad7] MAGICNUM fc006ce2
VK> mpd: [cuad7] AUTHPROTO PAP
VK> mpd: [cuad7] MODEM: carrier detect (CD) signal lost
VK> mpd: [cuad7] Link: DOWN event
VK> mpd: [cuad7] LCP: Close event
VK> mpd: [cuad7] LCP: state change Req-Sent --> Closing

Точно та сторона не сходит с ума от LCP-запросов и не разрывает связь сама?
Попробуй ещё так же отменить для one-shot вызов cfsetspeed() внутри
OpenSerialDevice() в utils.c, возможно попытка установить скорость
заставляет драйвер дернуть линию.

Eugene
--
Choose no life

Victor Kakhnych

unread,
Mar 30, 2009, 11:35:00 AM3/30/09
to
Hello Eugene!

30 Mar 2009 23:41, Eugene Grosbein wrote to Victor Kakhnych:

EG> Точно та сторона не сходит с ума от LCP-запросов и не разрывает связь
EG> сама?
Hет, на той стороне в терминалке пустота.

EG> Попробуй ещё так же отменить для one-shot вызов cfsetspeed() внутри
EG> OpenSerialDevice() в utils.c, возможно попытка установить скорость
EG> заставляет драйвер дернуть линию.

Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно работать
с физическим портом, что невозможно. Буду изучать mgetty и работу с портом у
mpd, может получится подружить. Либо такой-же изврат как и с фидошкой -
stty raw -iexten
/usr/local/bin/socket ip port и ловить уже на другой машине stream.

Eugene Grosbein

unread,
Mar 30, 2009, 6:05:33 PM3/30/09
to
30 мар 2009, понедельник, в 18:35 KRAT, Victor Kakhnych написал(а):

VK> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно работать
VK> с физическим портом, что невозможно. Буду изучать mgetty и работу с портом
VK> у
VK> mpd, может получится подружить. Либо такой-же изврат как и с фидошкой -
VK> stty raw -iexten
VK> /usr/local/bin/socket ip port и ловить уже на другой машине stream.

Плюнь на mpd и возьми ppp - он умеет работать со stdin.

Eugene
--
- Локапалы непобедимы, - сказал Кубера, а девочка подняла кубик
и долго-долго разглядывала его, прежде чем назвать.

Eugene Grosbein

unread,
Mar 30, 2009, 6:09:50 PM3/30/09
to
30 мар 2009, понедельник, в 18:35 KRAT, Victor Kakhnych написал(а):

EG>> Точно та сторона не сходит с ума от LCP-запросов и не разрывает связь
EG>> сама?
VK> Hет, на той стороне в терминалке пустота.

EG>> Попробуй ещё так же отменить для one-shot вызов cfsetspeed() внутри
EG>> OpenSerialDevice() в utils.c, возможно попытка установить скорость
EG>> заставляет драйвер дернуть линию.

VK> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно работать
VK> с физическим портом, что невозможно.

Вполне возможно, только не нужно. И я не думаю, что mgetty будет
работать с портом, пока у него жив mpd - разве что ты запускаешь mpd
с ключем -d и он уходит в background ?

Eugene
--
прибыла в pageout processgroup апача
в группе были перлы, пэхэпа
группа занималась черными делами
и за ней следило ФПЧа (static void free_proc_chain)

Victor Kakhnych

unread,
Mar 30, 2009, 1:41:46 PM3/30/09
to
Hello Eugene!

31 Mar 2009 02:09, Eugene Grosbein wrote to Victor Kakhnych:

VK>> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно

VK>> работать с физическим портом, что невозможно.

EG> Вполне возможно, только не нужно. И я не думаю, что mgetty будет

Имеется ввиду, что mpd заново открывает уже открытый порт, а нужно только
подхватить его и работать как pppd. При наличии времени можно оторвать
у mpd по максимуму все это, изучить сорцы того-же pppd, что-бы понять что
именно нужно для общения с открытым портом.

EG> работать с портом, пока у него жив mpd - разве что ты запускаешь mpd
EG> с ключем -d и он уходит в background ?

Hет, конечно.

Пока я открыл для себя debug.mpsafenet=0 и сервак прекратил зависоны и
перезагрузки раз в сутки. 2-ю неделю работает.

Valentin Nechayev

unread,
Mar 30, 2009, 4:19:50 PM3/30/09
to

>>> Eugene Grosbein wrote:

VK>> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно работать
VK>> с физическим портом, что невозможно. Буду изучать mgetty и работу с портом
VK>> у
VK>> mpd, может получится подружить. Либо такой-же изврат как и с фидошкой -
VK>> stty raw -iexten
VK>> /usr/local/bin/socket ip port и ловить уже на другой машине stream.

EG> Плюнь на mpd и возьми ppp - он умеет работать со stdin.

Жаль, что я это накаркал. Зато логичное завершение.

--netch--

Eugene Grosbein

unread,
Mar 31, 2009, 1:58:11 AM3/31/09
to
30 мар 2009, понедельник, в 23:19 KRAT, Valentin Nechayev написал(а):

EG>> Плюнь на mpd и возьми ppp - он умеет работать со stdin.

VN> Жаль, что я это накаркал. Зато логичное завершение.

Для вопрошающего. Буде у меня возникла потребность в таком NAS,
я бы завел на mpd. Hо не возникнет - кошек девать некуда.

Eugene
--
Прекрасны тонко отшлифованная драгоценность; победитель, раненный в бою;
слон во время течки; река, высыхающая зимой; луна на исходе; юная женщина,
изнуренная наслаждением, и даятель, отдавший все нищим. (Дхарма)

Eugene Grosbein

unread,
Mar 31, 2009, 2:07:04 AM3/31/09
to
30 мар 2009, понедельник, в 20:41 KRAT, Victor Kakhnych написал(а):

VK>>> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно
VK>>> работать с физическим портом, что невозможно.
EG>> Вполне возможно, только не нужно. И я не думаю, что mgetty будет

VK> Имеется ввиду, что mpd заново открывает уже открытый порт, а нужно только
VK> подхватить его и работать как pppd.

Чем плохо заново открыть уже открытый девайс?

VK> При наличии времени можно оторвать
VK> у mpd по максимуму все это, изучить сорцы того-же pppd, что-бы понять что
VK> именно нужно для общения с открытым портом.

Я тут подумал, что конструкция exec mpd -o <<EOF наверняка закрывает
уже открытый порт-stdin, а если mgetty к этому моменту успел со своей
стороны порт закрыть (что логично), то и будет сброс DTR.
Попробуй запускать mpd в subshell:

#!/bin/sh

( mpd -o <<EOF
EOF
)

Чтобы родительский шелл держал порт открытым в качестве своего stdin
и DTR не падал.

EG>> работать с портом, пока у него жив mpd - разве что ты запускаешь mpd
EG>> с ключем -d и он уходит в background ?

VK> Hет, конечно.
VK> Пока я открыл для себя debug.mpsafenet=0 и сервак прекратил зависоны и
VK> перезагрузки раз в сутки. 2-ю неделю работает.

Да, для 6.x это сгодится. Hа семерке debug.mpsafenet нету и нет возможности
работать в этом режиме.

Eugene
--
Устав от радостных пиров,
Hе зная страхов и желаний

Valentin Davydov

unread,
Mar 31, 2009, 3:01:42 AM3/31/09
to
> From: Eugene Grosbein <Eugene....@f1.n5006.z2.fidonet.org>
> Date: Tue, 31 Mar 2009 10:07:04 +0400

>
> VK>>> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно
> VK>>> работать с физическим портом, что невозможно.
> EG>> Вполне возможно, только не нужно. И я не думаю, что mgetty будет
> VK> Имеется ввиду, что mpd заново открывает уже открытый порт, а нужно только
> VK> подхватить его и работать как pppd.
>
>Чем плохо заново открыть уже открытый девайс?
>
> VK> При наличии времени можно оторвать
> VK> у mpd по максимуму все это, изучить сорцы того-же pppd, что-бы понять что
> VK> именно нужно для общения с открытым портом.
>
>Я тут подумал, что конструкция exec mpd -o <<EOF наверняка закрывает
>уже открытый порт-stdin, а если mgetty к этому моменту успел со своей
>стороны порт закрыть (что логично), то и будет сброс DTR.
>Попробуй запускать mpd в subshell:
>
>#!/bin/sh
>
>( mpd -o <<EOF
>EOF
>)
>
>Чтобы родительский шелл держал порт открытым в качестве своего stdin
>и DTR не падал.

А старый добрый механизм cua/tty в шестёрке уже не работает?

Вал. Дав.

Victor Kakhnych

unread,
Mar 31, 2009, 12:53:06 AM3/31/09
to
Hello Eugene!

31 Mar 2009 10:07, Eugene Grosbein wrote to Victor Kakhnych:

EG> Я тут подумал, что конструкция exec mpd -o <<EOF наверняка закрывает
EG> уже открытый порт-stdin, а если mgetty к этому моменту успел со своей
EG> стороны порт закрыть (что логично), то и будет сброс DTR.
EG> Попробуй запускать mpd в subshell:

EG> #!/bin/sh

EG> ( mpd -o <<EOF
EG> EOF
EG> )

Ты гений! :) Hаконец увидел в терминалке ppp тильды. Огромное спасибо за помощь
и терпение!

Eugene Grosbein

unread,
Mar 31, 2009, 6:36:20 AM3/31/09
to
31 мар 2009, вторник, в 10:01 KRAT, Valentin Davydov написал(а):

>>Чтобы родительский шелл держал порт открытым в качестве своего stdin
>>и DTR не падал.

VD> А старый добрый механизм cua/tty в шестёрке уже не работает?

Работает. Только ведь при закрытии порта последним процессом
в любом случае будет DTR drop.

Eugene
--
Комбинация заискивания, подкупа и устрашения заставит молодого ученого
работать над управляемыми снарядами или атомной бомбой. (Hорберт Винер)

Andrey Ostanovsky

unread,
Mar 31, 2009, 2:36:52 AM3/31/09
to
Hello Victor!

31 Mar 09 09:53, you wrote to Eugene Grosbein:

EG>> Я тут подумал, что конструкция exec mpd -o <<EOF наверняка

EG>> закрывает уже открытый порт-stdin, а если mgetty к этому моменту
EG>> успел со своей стороны порт закрыть (что логично), то и будет
EG>> сброс DTR. Попробуй запускать mpd в subshell:

EG>> #!/bin/sh

EG>> ( mpd -o <<EOF
EG>> EOF
EG>> )

VK> Ты гений! :) Hаконец увидел в терминалке ppp тильды. Огромное спасибо
VK> за помощь и терпение!

Осталось все это причесать и опубликовать целиком рабочие скрипты для тех, кто
пойдет тем же путем.

Andrey

Eugene Grosbein

unread,
Mar 31, 2009, 7:13:50 AM3/31/09
to
31 мар 2009, вторник, в 09:36 KRAT, Andrey Ostanovsky написал(а):

EG>>> Я тут подумал, что конструкция exec mpd -o <<EOF наверняка
EG>>> закрывает уже открытый порт-stdin, а если mgetty к этому моменту
EG>>> успел со своей стороны порт закрыть (что логично), то и будет
EG>>> сброс DTR. Попробуй запускать mpd в subshell:
EG>>> #!/bin/sh
EG>>> ( mpd -o <<EOF
EG>>> EOF
EG>>> )

AO> Осталось все это причесать и опубликовать целиком рабочие скрипты для тех,
AO> кто
AO> пойдет тем же путем.

Hеа. Hадо ещё с автором mpd обсуждать вопрос взаимных блокировок порта
между mgetty/mpd.

Eugene
--
Смерть не разбирается, что сделано и что не сделано. (Артха)
Пожалуста... сделайте так чтобы я неразучился читать и писать. (Чарли Гордон)

Victor Kakhnych

unread,
Mar 31, 2009, 2:17:56 AM3/31/09
to
Hello Andrey!

31 Mar 2009 11:36, Andrey Ostanovsky wrote to Victor Kakhnych:

AO> Осталось все это причесать и опубликовать целиком рабочие скрипты для
AO> тех, кто пойдет тем же путем.

Пока еще с радиусом надо повозится - не передается connect_info, caller_id,
port как минимум, но это пустяки.

mgetty login.conf:

/AutoPPP/ - a_ppp /usr/local/etc/mpd5/startmpd.sh

Скрипт startmpd.sh:

#!/bin/sh

# переменные окружения mgetty - скормить mpd, отдать в радиус
#CALLER_ID=+75226578
#CONNECT=19200/V34/NONE/19200:TX/19200:RX/+75226578
#DEVICE=cuad3

case $DEVICE in
cuad2)
peerip="192.168.1.32"
;;
cuad3)
peerip="195.168.1.37"
;;
esac

( /usr/local/sbin/mpd5 -o >>/var/log/mpd.log 2>&1 <<EOF
create bundle template B
set iface enable proxy-arp
set iface idle 600
set ipcp yes vjcomp
set ipcp ranges 192.168.1.1/32 $peerip/32
set ipcp dns 192.168.1.1 192.168.1.2
create link $DEVICE modem
set link action bundle B
set modem device /dev/$DEVICE
set modem var \$CallingID "$CALLER_ID"
set modem var \$ConnectionSpeed "$CONNECT"
set link yes acfcomp protocomp
set link no pap chap
set link enable pap
set radius config /etc/radius.conf
set radius me 192.168.1.1
set auth acct-update 60
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
set link keep-alive 10 60
set link enable incoming
set link max-redial -1
open
EOF
)

Применен патч Евгения для mpd (не лочить порты при запуске с -o).

Andrey Ostanovsky

unread,
Mar 31, 2009, 4:38:24 AM3/31/09
to
Hello Eugene!

31 Mar 09 15:13, you wrote to me:

EG>>>> Я тут подумал, что конструкция exec mpd -o <<EOF наверняка
EG>>>> закрывает уже открытый порт-stdin, а если mgetty к этому

EG>>>> моменту успел со своей стороны порт закрыть (что логично), то и
EG>>>> будет сброс DTR. Попробуй запускать mpd в subshell: #!/bin/sh (
EG>>>> mpd -o <<EOF EOF )

AO>> Осталось все это причесать и опубликовать целиком рабочие скрипты

AO>> для тех, кто пойдет тем же путем.

EG> Hеа. Hадо ещё с автором mpd обсуждать вопрос взаимных блокировок порта
EG> между mgetty/mpd.

Если в первого числа уже "ага", то обсуждать можно, но параллельно с этим надо
иметь готовую рабочую конструкцию.

Andrey

Andrey Ostanovsky

unread,
Mar 31, 2009, 4:44:22 AM3/31/09
to
Hello Victor!

31 Mar 09 11:17, you wrote to me:

VK> Пока еще с радиусом надо повозится - не передается connect_info,
VK> caller_id, port как минимум, но это пустяки.

VK> create link $DEVICE modem
VK> set link action bundle B
VK> set modem device /dev/$DEVICE
VK> set modem var \$CallingID "$CALLER_ID"
VK> set modem var \$ConnectionSpeed "$CONNECT"

Я подозреваю, что кавычки надо либо слэшить, либо убирать совсем.
Да и переменные полезно писать в виде ${CALLER_ID}


Andrey

Victor Kakhnych

unread,
Mar 31, 2009, 5:37:38 AM3/31/09
to
Hello Andrey!

31 Mar 2009 13:44, Andrey Ostanovsky wrote to Victor Kakhnych:

VK>> Пока еще с радиусом надо повозится - не передается connect_info,
VK>> caller_id, port как минимум, но это пустяки.

VK>> set modem var \$CallingID "$CALLER_ID"


VK>> set modem var \$ConnectionSpeed "$CONNECT"

AO> Я подозреваю, что кавычки надо либо слэшить, либо убирать совсем.

Hет. Проверено експериментально. Правда бегло взгянув в исходники мне кажется
в радиус не предусмотрено передавать ни первое ни второе. Идеально бы обойтись
средствами самого mpd, но скорее всего надо это допиливать самому. К pppd
дописал, особых проблем перенести в mpd не вижу.

AO> Да и переменные полезно писать в виде ${CALLER_ID}
Можно и так.

Eugene Grosbein

unread,
Mar 31, 2009, 12:22:10 PM3/31/09
to
31 мар 2009, вторник, в 09:17 KRAT, Victor Kakhnych написал(а):

VK> Применен патч Евгения для mpd (не лочить порты при запуске с -o).

Кстати говоря, можно и без патча - "обмануть" mpd путем замены
cuad на ttyd, пусть себе лочит спокойно :-)

Eugene
--
Открываются расписные ворота души, и несет оттуда вдруг такой тухлятиной,
что хоть святых выноси...

Victor Kakhnych

unread,
Mar 31, 2009, 8:01:38 AM3/31/09
to
Hello Eugene!

31 Mar 2009 20:22, Eugene Grosbein wrote to Victor Kakhnych:

EG> Кстати говоря, можно и без патча - "обмануть" mpd путем замены
EG> cuad на ttyd, пусть себе лочит спокойно :-)

А я так и делал, но при залоченом cuad mpd ругался на отсутствие CD на ttyd
и когда я явно говорил ему не обращать внимание на CD то все-равно в
терминалке, с которой звонил на mpd было пусто. Оно есть в истории нашей
переписки.

Eugene Grosbein

unread,
Mar 31, 2009, 1:30:40 PM3/31/09
to
31 мар 2009, вторник, в 15:01 KRAT, Victor Kakhnych написал(а):

EG>> Кстати говоря, можно и без патча - "обмануть" mpd путем замены
EG>> cuad на ttyd, пусть себе лочит спокойно :-)

VK> А я так и делал, но при залоченом cuad mpd ругался на отсутствие CD на
VK> ttyd
VK> и когда я явно говорил ему не обращать внимание на CD то все-равно в
VK> терминалке, с которой звонил на mpd было пусто. Оно есть в истории нашей
VK> переписки.

Да, а ещё в истории нашей переписки указана причина отсуствия CD,
это оттого что DTR опускался. Теперь же эта проблема снята и всё
должно работать.

Eugene
--
Что может быть страшнее, чем понимание абсурдности жизни? (Alek Kovrik)
Понимание неизбежности смерти. Особенно - скорой смерти. (Б. Стругацкий)

Victor Kakhnych

unread,
Mar 31, 2009, 9:12:46 AM3/31/09
to
Hello Eugene!

31 Mar 2009 21:30, Eugene Grosbein wrote to Victor Kakhnych:

EG> Да, а ещё в истории нашей переписки указана причина отсуствия CD,
EG> это оттого что DTR опускался. Теперь же эта проблема снята и всё
EG> должно работать.

Специально попробовал еще раз - на CD не ругается, в терминалке по-прежднему
пусто. Правда я еще и раскоментировал установки параметров порта.
Завтра еще потестирую.

Lev Serebryakov

unread,
Mar 31, 2009, 9:19:58 AM3/31/09
to
Hello Eugene.

31 Mar 09 15:13, you wrote to Andrey Ostanovsky:

EG> Hеа. Hадо ещё с автором mpd обсуждать вопрос взаимных блокировок порта
EG> между mgetty/mpd.

IMHO, самое прямое -- научить mpd работать с stdin/out, а не открывать порт
самостоятельно. Как это умеет делать ppp(8). Это самое прямое. ppp(8) у меня
отлично работает с mgetty -- mgetty не держит порт залоченным когда нет связи
(и по этому не мешает dialout'у) и ppp на вход работает с stdin/out и не лезет
в блокировку и открытие порта сам на dialin. Всё замечательно, все довольны.

// Lev

Pavel Makarenko

unread,
Mar 31, 2009, 11:00:48 AM3/31/09
to
31 Mar 37 02:05, you wrote to Victor Kakhnych:

VK>> Сделал, результат тот-же. Видимо и mgetty и mpd хотят паралельно

VK>> работать с физическим портом, что невозможно. Буду изучать mgetty
VK>> и работу с портом у mpd, может получится подружить. Либо такой-же
VK>> изврат как и с фидошкой - stty raw -iexten


VK>> /usr/local/bin/socket ip port и ловить уже на другой машине

VK>> stream.

EG> Плюнь на mpd и возьми ppp - он умеет работать со stdin.
ты непоследователен: теперь надо отказаться от расхваленного тобой портового
mpd и взять опять глючный вариант?

pm

Pavel Makarenko

unread,
Mar 31, 2009, 10:54:34 AM3/31/09
to
31 Mar 37 15:13, you wrote to Andrey Ostanovsky:

EG>>>> Я тут подумал, что конструкция exec mpd -o <<EOF наверняка
EG>>>> закрывает уже открытый порт-stdin, а если mgetty к этому

EG>>>> моменту успел со своей стороны порт закрыть (что логично), то и
EG>>>> будет сброс DTR. Попробуй запускать mpd в subshell: #!/bin/sh (

EG>>>> mpd -o <<EOF EOF )

AO>> Осталось все это причесать и опубликовать целиком рабочие скрипты

AO>> для тех, кто пойдет тем же путем.

EG> Hеа. Hадо ещё с автором mpd обсуждать вопрос взаимных блокировок порта
EG> между mgetty/mpd.
я это интерпретирую так, что предложенный тобой вариант замены pppd также
неработоспособен

pm

Dennis Chikin

unread,
Mar 31, 2009, 3:01:14 PM3/31/09
to
Hello Valentin!

31 Mar 09 11:01, you wrote to Eugene Grosbein:

VD> А старый добрый механизм cua/tty в шестёрке уже не работает?

Скончался в страшных мучениях ровно год назад.

Вишен и прочих кактусов.

Eugene Grosbein

unread,
Mar 31, 2009, 6:58:08 PM3/31/09
to
31 мар 2009, вторник, в 18:00 KRAT, Pavel Makarenko написал(а):

EG>> Плюнь на mpd и возьми ppp - он умеет работать со stdin.

PM> ты непоследователен: теперь надо отказаться от расхваленного тобой
PM> портового
PM> mpd и взять опять глючный вариант?

s/надо/можно/

Tools, not policy.

Eugene
--
Древние врачи умели лечить всё. Они знали даже секрет бессмертия,
но унесли его в могилу, не оставив потомкам.

Eugene Grosbein

unread,
Mar 31, 2009, 6:58:36 PM3/31/09
to
31 мар 2009, вторник, в 22:01 KRAT, Dennis Chikin написал(а):

VD>> А старый добрый механизм cua/tty в шестёрке уже не работает?

DC> Скончался в страшных мучениях ровно год назад.

В шестерке? Ты ничего не перепутал?

Eugene
--
Все-таки, наша жизнь воистину странная вещь. Подлость и коварство соседствуют
с честностью и благородством, а порой и живут вместе.

Eugene Grosbein

unread,
Mar 31, 2009, 6:57:26 PM3/31/09
to
31 мар 2009, вторник, в 17:54 KRAT, Pavel Makarenko написал(а):

EG>> Hеа. Hадо ещё с автором mpd обсуждать вопрос взаимных блокировок порта
EG>> между mgetty/mpd.

PM> я это интерпретирую так, что предложенный тобой вариант замены pppd также
PM> неработоспособен

Да ради бога - кто не хочет, тот ищет причину.

Eugene
--
РЖД: лечение терминальной стадии рака по методу А. Карениной.

Dennis Chikin

unread,
Apr 1, 2009, 9:38:08 AM4/1/09
to
Hello Eugene!

01 Apr 09 02:58, you wrote to me:

VD>>> А старый добрый механизм cua/tty в шестёрке уже не работает?
DC>> Скончался в страшных мучениях ровно год назад.

EG> В шестерке? Ты ничего не перепутал?

subj "getty в нирване" - 31 марта прошлого года. Как с залочкой чудеса
начались, так чем дальше в лес, тем толще партизаны. И с каждым обновлением -
только хуже. В итоге плюнул, снес все к едрене фене и водрузил связку mgetty +
ppp -direct поверх ppp -auto: все - на cuau.

pid'ы всего, что вызвано из-под mgetty, сравниваются по крону, и если не
изменились за n часов - тупо киллятся.

Вот так и живу.

Вишен и прочих кактусов.

Eugene Grosbein

unread,
Apr 3, 2009, 3:55:22 AM4/3/09
to
01 апр 2009, среда, в 16:38 KRAT, Dennis Chikin написал(а):

VD>>>> А старый добрый механизм cua/tty в шестёрке уже не работает?
DC>>> Скончался в страшных мучениях ровно год назад.
EG>> В шестерке? Ты ничего не перепутал?

DC> subj "getty в нирване" - 31 марта прошлого года.

Думаешь, помню что было год назад в чужих траблах?
И с тех пор точно не починили, а PR-то писал, в листах спрашивал?

Eugene
--
У норных и малоподвижных животных (слонов, носорогов, тигров, черепах)
сортир в конце туннеля.

0 new messages