⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppp-howto-23.html

📁 Linux初学者最好的老师就是howto了。相当于函数man。
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
 <TITLE>PPP HOWTO 中译版: 建立连结之後 - /etc/ppp/ip-up 指令稿</TITLE>
 <LINK HREF="PPP-HOWTO-24.html" REL=next>
 <LINK HREF="PPP-HOWTO-22.html" REL=previous>
 <LINK HREF="PPP-HOWTO.html#toc23" REL=contents>
</HEAD>
<BODY>
<A HREF="PPP-HOWTO-24.html">Next</A>
<A HREF="PPP-HOWTO-22.html">Previous</A>
<A HREF="PPP-HOWTO.html#toc23">Contents</A>
<HR>
<H2><A NAME="ip-up"></A> <A NAME="s23">23. 建立连结之後 - <CODE>/etc/ppp/ip-up</CODE> 指令稿</A></H2>

<P>一旦 PPP 连结建立後, pppd 会找寻 <CODE>/etc/ppp/ip-up</CODE> 指令稿.
如果这个指令稿存在并且可以执行的话,那麽 PPP  伺服程式就会执行这个指令稿.
这允许你自动执行任何可能有必要的特殊递送路径指令及任何你想在每次 PPP 连结启动时执行的动作.
<P>
<P>这不过就是一般普通的 shell 指令稿,可以做任何指令稿能做的事(也就是,任何你想做的事).
<P>
<P>例如,你可能想要 sendmail 赶快处理在邮件伫列中等待外送的讯息.
<P>
<P>类似地,你可以在 <CODE>ip-up</CODE> 里插入一些指令取得(使用 POP)在你的 ISP 那边等著你的任何电子邮件.
<P>
<P>不过在 <CODE>/etc/ppp/ip-up</CODE> 也有些限制:-
<P>
<UL>
<LI>它以局限的环境变数以增加安全性.这也就是说你必须给出执行档的全部路径名称等.</LI>
<LI>技术上来说,<CODE>/etc/ppp/ip-up</CODE> 是一个<EM>程式</EM>而非指令稿.
这是说它可以被直接执行 - 也因此它在第一行开始必须具有标准的 file magic (<CODE>#!/bin/bash</CODE>) 并且能被 root 读取及执行.</LI>
</UL>
<P>
<H2><A NAME="ss23.1">23.1 特殊递送路径</A>
</H2>

<P>如果你连结的是两个区域网路,你将得设立一个到 '外面的' 区域网路的指定递送路径.
这可以很容易的使用 <CODE>/etc/ppp/ip-up</CODE> 指令稿达成.唯一的困难发生在你的机器有多个 PPP  连结时.
<P>
<P>这是因为 <CODE>/etc/ppp/ip-up</CODE> 这个指令稿是由每一个起动的 ppp 连线所执行的,所以你得要小心地为每一个起动的连结执行正确的递送指令!
<P>
<H2><A NAME="ss23.2">23.2 处理电子邮件伫列</A>
</H2>

<P>当两个区域网路的连结建立之後,你可能想要确定放在伫列中的电子邮件被<EM>清出</EM> - 送到它的目的地.
这可以用适当的呼叫 <CODE>sendmail</CODE> 来达成. 
<P>
<P>在 pppd 传递给指令稿的特定参数上使用 bash 的 `case' 叙述来完成这个工作.
例如,这是我用来处理我们的广域网路连结及通往我家乙太网路的(也是由相同的 PPP  伺服器处理)<CODE>/etc/ppp/ip-up</CODE> 指令稿.
<P>
<H2><A NAME="ss23.3">23.3 一个 <CODE>/etc/ppp/ip-up</CODE> 指令稿的例子</A>
</H2>

<P>下面的例子提供不同的使用□例.
<P>
<HR>
<PRE>
#!/bin/bash
#
# Script which handles the routing issues as necessary for pppd
# Only the link to Newman requires this handling.
#
# When the ppp link comes up, this script is called with the following
# parameters
#       $1      the interface name used by pppd (e.g. ppp3)
#       $2      the tty device name
#       $3      the tty device speed
#       $4      the local IP address for the interface
#       $5      the remote IP address
#       $6      the parameter specified by the 'ipparam' option to pppd
#
case "$5" in
# Handle the routing to the Newman Campus server
        202.12.126.1)
                /sbin/route add -net 202.12.126.0 gw 202.12.126.1
# and flush the mail queue to get their email there asap!
                /usr/sbin/sendmail -q &amp;
                ;;
        139.130.177.2)
# Our Internet link
# When the link comes up, start the time server and synchronise to the world
# provided it is not already running
                if [ ! -f /var/lock/subsys/xntpd ]; then
                        /etc/rc.d/init.d/xntpd.init start &amp;
                fi
# Start the news server (if not already running)
                if [ ! -f /var/lock/subsys/news ]; then
                        /etc/rc.d/init.d/news start &amp;
                fi
                ;;
        203.18.8.104)
# Get the email down to my home machine as soon as the link comes up
# No routing is required as my home Ethernet is handled by IP
# masquerade and proxyarp routing.
                /usr/sbin/sendmail -q &amp;
                ;;
        *)
esac
exit 0
</PRE>
<HR>
<P>
<P>起动通往我们 Newman 校园的 ppp 连结以及这个指令稿的结果,我们最後得到下面这个递送表格记录(这台机器也是我们通常用的 PPP 伺服器并且处理我们的网际网路连结).
我已经在这个输出里加入一些注解以解释每个项目是什麽:
<P>
<HR>
<PRE>
[root@kepler /root]# route -n
Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
# the HOST route to our remote internet gateway
139.130.177.2   *               255.255.255.255 UH    1500   0      134 ppp4
# the HOST route to our Newman campus server
202.12.126.1    *               255.255.255.255 UH    1500   0       82 ppp5
# the HOST route to my home ethernet
203.18.8.104    *               255.255.255.255 UH    1500   0       74 ppp3
# two of our general dial up PPP lines
203.18.8.64     *               255.255.255.255 UH    552    0        0 ppp2
203.18.8.62     *               255.255.255.255 UH    552    0        1 ppp1
# the specific network route to the Newman campus LAN
202.12.126.0    202.12.126.1    255.255.255.0   UG    1500   0        0 ppp5
# the route to our local Ethernet (super-netting two adjacent C classes)
203.18.8.0      *               255.255.254.0   U     1500   0     1683 eth0
# the route to the loop back device
127.0.0.0       *               255.0.0.0       U     3584   0      483 lo
# the default route to the Internet
default         139.130.177.2   *               UG    1500   0     3633 ppp4
</PRE>
<HR>
<P>
<H2><A NAME="ss23.4">23.4 处理电子邮件</A>
</H2>

<P>上一节提及如何处理外送的邮件 - 一旦连线建立之後简单地藉由清出邮件伫列达成.
<P>如果你执行连往广域网路的连结,你可以跟远端区域网路的网路管理者协调请它们执行完全相同的动作.
例如,在我们的广域网路连结中 Newman 校园那一端的 <CODE>/etc/ppp/ip-up</CODE> 指令稿看起来像:
<P>
<HR>
<PRE>
#!/bin/bash
#
# Script which handles the routing issues as necessary for pppd
# Only the link to Hedland requires this handling.
#
# When the ppp link comes up, this script is called with the following
# parameters
#       $1      the interface name used by pppd (e.g. ppp3)
#       $2      the tty device name
#       $3      the tty device speed
#       $4      the local IP address for the interface
#       $5      the remote IP address
#       $6      the parameter specified by the 'ipparam' option to pppd
#
case "$5" in
        203.18.8.4)
                /usr/sbin/sendmail -q
                ;;
        *)
esac
exit 0
</PRE>
<HR>
<P>
<P>然而如果你只能使用动态 IP 号码方式的 PPP  连线连往你的 ISP,你得从在你 ISP 机器上的帐号取得你的电子邮件.
这通常是使用 POP(Post Office Protocol)协定来达成的.可以使用 `popclient' 程式处理这个程序 - 而 <CODE>ip-up</CODE> 指令稿也可以为你自动化这个程序.
<P>
<P>简单地建立一个 <CODE>/etc/ppp/ip-up</CODE> 指令稿,其中包含有起动 popclient 程式的适当指令.
在我执行 Red Hat Linux  的膝上型电脑上(任何旅行时我都带著它)是这样的
<P>
<HR>
<PRE>
popclient -3 -c -u hartr -p &lt;password> kepler.hedland.edu.au |formail -s procmail
</PRE>
<HR>
<P>
<P>你可以使用 slurp 或其它软体以相同的方式取得网路新闻,以及诸如此类的服务.
记得,ip-up 这个指令稿只是个标准的 bash 指令稿因此可以用来自动化当每次适当的 PPP 连结建立时需要完成的任何功能.
<P>
<HR>
<A HREF="PPP-HOWTO-24.html">Next</A>
<A HREF="PPP-HOWTO-22.html">Previous</A>
<A HREF="PPP-HOWTO.html#toc23">Contents</A>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -