Paul 撰寫於文章 <81rjjk$auv$1@jupiter.ficnet.net>...
>請教如何在無法設定使用X-windows
>的狀態下設定modem?
>
>
(以下內容可以從 http://go.to/study-area
得到﹕)
手工設定
雖然﹐在 X Windows
裡面設定撥接連線是很容易的事情﹐然而﹐如果您還沒設定好
X
Windows﹐或是由於其他原因必須使用手工連接的話﹐那就比較複雜多了。
和 X Windows 一樣﹐首先我們得設定 MODEM。先讓我們輸入﹕
ls -l /dev/modem
這個檔案其實是應該 link 而已﹐您可以從 ls
的輸出看到它實際連到哪個通訊口去
了。如果這個檔案不存在﹐或是您要修改所連接的通訊口﹐您只需建立或改變
link 就
可以了。
不過﹐在這樣做之前﹐您必須要確定您的 ttyS﹖(要留意S為大寫﹗)
設備已經設定好
了。如果該設備還沒設定好﹐例如﹐您剛換成 PCMCIA 類型的MODEM﹐您就需要使用
mknod 這個命令建立該設備了﹕
1.1﹐先找出設備的資源範圍﹐如﹕io=0x2e0 irq=10 。
1.2﹐然後將原來設備進行備份﹕mv /dev/ttyS0 /dev/ttyS0
1.3﹐然後輸入﹕mknod -m 660 /dev/ttyS0 c 4 64 # 0x2e0
1.4﹐再輸入﹕ln -sf /dev/ttyS0 /dev/modem
這樣我們就將 MODEM 連接到 ttyS0 (DOS下為 COM1) 這個通訊口了。
當 MODEM 設定好之後﹐您還需設定一個當案 /etc/ppp/options(如果它已經出現了﹐
用 mv 命令將之備份)﹐將其內容設定為這樣﹕
lock
crtscts
defaultroute
asyncmap 0
然後﹐我們可以使用 minicom 這個程式進行測試﹕
mimidom -m8 -c on
這樣您就進入一個有顏色的 mimicom
畫面了。如果您在最後一行看到“OK”字眼﹐也
就表示您的 MODEM 已經成功啟動了。但如果您沒看到“OK”﹐又輸入不了任何東西﹐
那很可能是您 /dev/modm 給 link 到錯誤的 ttyS 或是 ttyS
還沒設定好。這時候﹐
您得按 Alt + F2 (或使用 telnet) 開啟另一個終端視窗﹐輸入 ps
aux | grep
minicom 來找到它的 PID﹐然後將它 kill 掉﹐再重新設定好您的
MODEM。
當看到‘OK’之後﹐輸入﹕
ATZ
這是一個 MODEM 命令﹐目的是 reset 一下 MODEM 狀態。凡是 MDOEM
命令都是以 AT
開頭的﹐所以也有人稱之為“AT命令”﹐例如﹕如果您嫌您的MODEM太吵耳了﹐可以輸
入﹕ATM1L1﹐或干脆用 ATM0 將喇叭關了。
您應該會重新看到‘OK’的。然後您就可以進行撥接了﹐您可以輸入﹕
ATDT93735100
這也是一個 MODEM 命令﹐‘D’是 Dial 的意思﹔‘T’是 Tone (音頻電話)的意思﹐
如果您使用的電話是脈沖式(Pulse)電話(很古老了)﹐則將 T
改成 P ﹔最後是 ISP 的
撥接號碼。
如果您接通了 ISP 那邊的 MODEM
之後﹐您會聽到一陣嘈雜之聲﹐那是 MDOEM 之間的
握手語言﹐我們盡可不理。我們只需留意一下有沒有登錄提示出現﹐例如﹕
“Login:”﹐有些 ISP 則使用“User name:”代替“Login:”。
輸入帳戶名稱之後﹐您應會看到“Password:”的提示。
輸入密碼之後﹐您就要留意到 ISP
是否提供了登錄菜單供您選擇﹐例如﹕
1.SLIP
2.PPP
3.Telnet
諸如此類﹐請一一抄下﹐如果您要寫您的 script 就要用到了。
如果沒有菜單出現﹐那麼通常您就會看到 pppd
那些垃圾字符出現了(或許有時候您要
按一下 Enter 才出現)。
一旦您看到那些字符出現﹐您要做的是按 Alt + Q 鍵(如果您啟動
minicom 的時候沒
使用到 -m 參數﹐您要先按 Ctrl + A 再按 Q) 。
當看到“Quit without reset modem?”提問的時候﹐按‘OK’跳回文字模式。
接著輸入﹕
pppd -d -detach /dev/modem &
接著﹐您再輸入ifconfig 和 route 看看 ppp0
界面是否成功連接了。如果您要結束連
線﹐找出 pppd 的 PID 然後 kill 掉就可以了。
使用 script 撥接。
在 Linux 討論板上﹐我們常可抄到一些 Linux 高手提供的 script
來方便我們的撥
接。這裡﹐我也有一個 script
可供參考﹐不過要注意的是﹐我這個 script 只是提供
最簡單的連接﹐並沒包括登錄菜單選擇功能。
第一個要建立的檔案是﹕ /usr/sbin/ppp-on ﹕
#! /bin/sh
#File: /usr/sbin/ppp-on
#Purpose: a simple PPP dial-up script
#
MYNAME=netman
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
exec /usr/sbin/pppd lock modem crtscts /dev/modem 115200 \
noipdefault defaultroute \
name ${MYNAME} connect $DIALER_SCRIPT
另外﹐我們還要建立一個檔案﹕ /usr/sbin/ppp-off :
#! /bin/sh
#File: /usr/sbin/ppp-off
#Purpose: a simple PPP dial-up script
#
#
# Determine divice
if [ "$1" = "" ]; then
DEVICE=ppp0
else
DEVICE=$1
fi
#
# Stop program
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
#注意﹕‘`’符號是在‘1’鍵左邊
#
# Delete lock file
if [ ! "$?"="0"
]; then
rm -f /var/run/$DEVICE.pid
echo "ERROR: Removed stale pid file"
exit 1
fi
#
# Getting out
echo "PPP link to $DEVICE
terminated."
exit 0
fi
#
# Not ruuning
echo "ERROR: PPP link is not active on $DEVICE"
exit 1
第三個檔案是﹕/etc/ppp/ppp-on-dialer (路徑必須和上面的‘DIALER_SCRIPT=’一
致)﹕
#! /bin/sh
#File: /etc/ppp/ppp-on-dialer
#Purpose: a simple PPP dial-up script
#
TELEPHONE=93735100
DIALSCRIPT=/tmp/dialscript.$$
#
trap "rm -f ${DIALSCRIPT}; exit" INT HUP QUIT
#
umask 066
cat < ${DIALSCRIPT}
TIMEOUT 30
ABORT '\nNO DIALTONE\r'
ABORT '\nBUSY\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO ANSWER\r'
'' '\nAT\r'
OK ATDT$TELEPHONE
CONNECT ''
EOF
/usr/sbin/chat -v -f ${DIALSCRIPT}
rm -f /tmp/dialscript.*
然後修改 /etc/ppp/pap-secrets ﹐將您的ISP帳戶和密碼寫進去﹕
# Secrets for authentication using PAP
# client server secret
IP addresses
netman ppp0 Agb-7Rh9
然後您輸入 ppp-on & 就應該可以連上 ISP
了﹔如果要下線﹐輸入﹕ppp-off 即可。