Сетевое символьное устройство

Материал из Xgu.ru

Перейти к: навигация, поиск
Короткий URL: serial-over-ip

Сервер:

$ while true; do sudo socat TCP4-LISTEN:54321,reuseaddr file:/dev/ttyS0,nonblock,raw,echo=0 ; done &

Клиент:

%# mkdir /dev/pts ; mount -t devpts devpts /dev/pts
%# while true 
   do 
     socat PTY,link=/dev/vmodem0,raw,echo=0,waitslave TCP4:127.0.0.1:54321;
   done

Если нужно чтобы создаваемый файл принадлежал пользователю:

while true; do socat PTY,link=/dev/vmodem0,waitslave,user=uucp,group=uucp,mode=664,raw,echo=0 TCP4:127.0.0.1:54321; done &

В приведённом примере файл будет принадлежать пользователю uucp и группе uucp.


Как выглядит /dev/vmodem0:

$ ls -l /dev/vmodem0
lrwxrwxrwx 1 root root 10 2007-05-17 22:18 /dev/vmodem0 -> /dev/pts/8
$ ls -l dev/pts/8
crw-rw-r-- 1 uucp uucp 136, 7 2007-05-17 22:18 /dev/pts/8


Определение имени файла оригинала по имени символьной ссылки:

root@uucp:~# cat /usr/sbin/Login.chap 
#!/bin/sh
pts_to_vmodem()
{
    TTY=`tty`
    ls -l /dev/vm* | grep $TTY | awk '{print $9}'
}

VM=`pts_to_vmodem`
case "$VM" in

/dev/vma11)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts 10.0.84.1:10.0.84.2 \
                        netmask 255.255.255.252 ipparam dialup5484927 unit 84000
;;
/dev/vmb16)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts 10.0.84.5:10.0.84.6 \
                        netmask 255.255.255.252 ipparam gsm2 debug unit 84004
;;
/dev/vmb15)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts 10.0.84.9:10.0.84.10 \
                        netmask 255.255.255.252 ipparam gsm1 unit 84008
;;
/dev/vmb08)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts noauth 10.0.84.13:10.0.84.14 \
                        netmask 255.255.255.252 ipparam bnkkyivvol unit 84012
;;
/dev/vma08)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts noauth 10.0.84.17:10.0.84.18 \
                        netmask 255.255.255.252 ipparam bnktransmarket unit 84016
;;
/dev/vma10)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts noauth 10.0.84.21:10.0.84.22 \
                        netmask 255.255.255.252 ipparam bnkvch1 unit 84020
;;
/dev/ttyS1)
    mesg n
    stty -tostop
    exec /usr/sbin/pppd debug crtscts pppkorsun:pppbarokorsun domain example.com \
                        netmask 255.255.255.252 unit 0
;;
esac


[править] Дополнительная информация