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

Запуск mpd из mgetty

8 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