Linux による ISDN 接続のためのスクリプト

このメモは金田の Linux マシンにターミナル・アダプタ MN128 を接続するためのスクリプトに ついて書いたものです. 「Linux と Macintosh への ISDN 接続に 関する報告」とあわせて,みてください.
Created: 96-2-4, Modified: 96-3-13.

64k 同期接続のためのスクリプト

#!/bin/sh
#
#       Set up a 64k ISDN PPP link
#
PPPDIR=/usr/sbin
DEVICE=cua1

setserial -W -b /dev/cua1 spd_vhi

rm /etc/resolv.conf
echo "nameserver $NAMESERVER" > /etc/resolv.conf
# /etc/resolv.conf をかきかえて DNS を指定している.複数のプロバイダと
# 接続するには DNS をダイナミックに変更する必要があるので,こんな強引な
# ことをやっている.もっとスマートな方法があったら,おしえてくれーー.

(
    stty 38400 -tostop

    if $PPPDIR/chat -v -t 15 ABORT "LINE OFF" \
        "" ATZ0Y1\\\\Q0\&Q5%B12E1Q0V1X3 OK ATD$PHONE_NUMBER-S12 CONNECT ""
    then
        $PPPDIR/pppd /dev/$DEVICE -am +ua $PASSFILE \
                noipdefault -crtscts defaultroute -detach &
        echo "OK chat" 1>&2
        exit 0
    else
        echo "PPP call failed" 1>&2
        exit 1
    fi
) < /dev/$DEVICE > /dev/$DEVICE
上記のスクリプトをつかって特定の接続をするためのスクリプトの例 :
#!/bin/sh
PHONE_NUMBER=XXXX-XXXX
PASSFILE=XXX-id
NAMESERVER=XXX.XXX.XXX.XXX
export PHONE_NUMBER PASSFILE NAMESERVER
ppp64on
ファイル XXX-id の内容 (実際の ID, パスワードにおきかえる) :
USER_ID
PASSWORD
ただし,この ID, パスワードの指定法は旧式であることをことわっておく.

38k 非同期接続のためのスクリプト

#!/bin/sh
#
#       Set up a 38k ISDN PPP link
#
PPPDIR=/usr/sbin
DEVICE=cua1

setserial -W -b /dev/cua1 spd_vhi

rm /etc/resolv.conf
echo "nameserver $NAMESERVER" > /etc/resolv.conf

(
    stty 38400 -tostop

    if $PPPDIR/chat -v -t 15 ABORT "LINE OFF" \
        "" ATZ0Y1\\\\Q0\&Q2%B8E1Q0V1X3 OK ATD$PHONE_NUMBER-S8 CONNECT ""
    then
        $PPPDIR/pppd /dev/$DEVICE -am +ua $PASSFILE \
                noipdefault -crtscts defaultroute -detach &
        echo "OK chat" 1>&2
        exit 0
    else
        echo "PPP call failed" 1>&2
        exit 1
    fi
) < /dev/$DEVICE > /dev/$DEVICE
このスクリプトのつかいかたは同期のばあいと同様なので省略する. なお,このスクリプトをはしらせたあと (回線切断後) に MN128 の状態が 異常になり,パワー・オン・リセットが必要になってしまう.原因不明だが, スクリプトになにか問題があるのだとかんがえられる.
関連ページ : [Linux と Macintosh への ISDN 接続に 関する報告], [この件に関するニュースへの投稿記事]
(C) Copyright 1996 by Y. Kanada