PPPCTL(8)

名称
pppctl - PPP 制御プログラム

書式
pppctl [-v] [-t n] [-p passwd] [host:] Port | LocalSocket [ command[;command]...]

解説
このプログラムは ppp(8) デーモンのコマンドラインからの制御手段を提供します。 基本的な使い方は、実行中のデーモンを制御する単純なスクリプトを 簡単に書けるようにすることです。

ppp デーモンが listen しているソケットをあらわす 少なくともひとつの引数を必要とします。 詳細については、 ppp コマンドの ‘set server’ を参照して下さい。 ソケットが先頭に '/' を含んでいると、 AF_LOCAL ソケットとして扱われます。 コロンを含んでいると host:port の組として扱われ、 それ以外は単にローカルマシン (127.0.0.1) の TCP ポートを 指定したものとみなされます。 DNS 検索を避けたい場合や、 /etc/services 内に指定されたポートのエントリがない場合には、 host と port には数字で指定することができます。

残りの引数はすべて、 ppp デーモンに送られる (複数の) コマンド を形成するために連結されます。 セミコロン文字はコマンドデリミタとして扱われ、ひとつの ‘セッション’ で複数の コマンド を指定することが可能です。 例えば:

    pppctl 3000 set timeout 300\; show timeout

ほとんどのシェルでは ';' は特殊文字として扱われるので、 エスケープかクォートすることを忘れないようにしてください。

もし、 コマンド 引数が与えられなかった場合、 pppctl はインタラクティブモードになります。 ここで、コマンドは標準入力から読み込まれます。 コマンドを読んでいる時に、 editline(3) が使われていれば、( editrc(5) で指定した振る舞いで) 行編集が可能になります。 履歴の大きさはデフォルトでは 20 行 です。

以下のコマンドラインオプションが利用可能です:

-v  ppp デーモンに送られたデータ、 ppp デーモンから受け取ったデータをすべて表示します。 pppctl は通常、受け取った非プロンプト行のみ表示します。 このオプションはインタラクティブモードでは無視されます。

-t n
    接続時のデフォルトの 2 秒の代わりに n をタイムアウトの値として用います。 これは (ダイヤルアップも含む) 遅いリンク上でデーモンを制御しようとする 場合に必要かもしれません。

-p passwd
    ppp デーモンが必要とするパスワードを指定します。 このスイッチが指定されないと、 pppctl は ppp への接続が成功した時にパスワードの入力を促します。

使用例
ppp を -auto モードで実行する場合、 pppctl は多くの仕事を自動化するのに利用できます (もちろん、実際に ppp をインタラクティブモードを除くどんなモードでも制御することができます)。 ps(1) によりあなたの秘密がもれてしまう可能性のために、 -p オプションは (たとえスクリプトが他の人に読めないようになっていたとしても) お勧めできません。

pppctl への簡単で安全なアクセスを提供するもっとも良い方法は、 /etc/ppp/ppp.conf (の正しいセクション) に以下のようにローカルサーバソケットを作成することです:

    set server /var/run/internet "" 0177

これは、 ppp を実行したユーザだけにアクセスできるように、 パスワード無しでパーミッションが srw------- の ローカルドメインソケットを作成するように ppp に指示します。より詳しい解説はマニュアルページ ppp(8) を参照してください。

このようにするといくつかのお気楽スクリプトが作成可能になります。 インターネットに接続するには:

    #! /bin/sh
    test $# -eq 0 && time=300 || time=$1
    exec pppctl /var/run/internet set timeout $time\; dial

切断するには:

    #! /bin/sh
    exec pppctl /var/run/internet set timeout 300\; close

接続されているかどうか確かめるには:

    #! /bin/sh
    pppctl -p '' -v /var/run/internet quit | grep ^PPP >/dev/null
    if [ $? -eq 0 ]; then
      echo Link is up
    else
      echo Link is down
    fi

このような汎用スクリプトも作成可能です:

    #! /bin/sh
    exec pppctl /var/run/internet "$@"

ダイヤルオンデマンドも pppctl を使って制御可能です。 ppp をずっと動作させながらも、 毎日 8pm から 8am まではダイヤルアウトを防ぎたいとします。 また、8pm にアクティブな接続は、 閉じられるか自然にタイムアウトするまでは保持したいとします。

cron(8) エントリとして 8pm に

    pppctl /var/run/internet set filter dial 0 deny 0 0

を実行すると、これ以降のダイヤル要求をすべて防ぎ、8am のエントリ

    pppctl /var/run/internet set filter dial -1

は、再度ダイヤル要求を許可します。

環境変数
以下の環境変数が、インタラクティブモード中の pppctl によって理解されます:

EL_SIZE
    履歴行の数です。デフォルトでは 20 です。

EL_EDITOR
    編集モードです。 "emacs" もしくは "vi" だけが受け付けられます。 他の値は無視します。この環境変数は ~/.editrc の bind -v や bind -e で上書きされます。

関連項目
ps(1), editline(3), editrc(5), services(5), ppp(8)

歴史
pppctl コマンドは FreeBSD 2.2.5 で最初に登場しました。