68user's page 掲示板

Prev< No. 874〜882> Next  [最新発言に戻る] [過去ログ一覧]
No. 874 # yuji 2000/05/21 (日) 12:33:32
はじめまして、yujiといいます。
たびたび参考にさせていただいています。(^^)
アクセス状況チェックでは、1時間おきに更新されていますが、
これは、どのようにして定期的にプログラムを
実行させているのでしょうか?
サーバー上では、cronが利用できると思うのですが、
プロバイダのほうで提供されてたりするのでしょうか。
それとも他のサーバー上で実行されているのでしょうか。

あと、linux上でPerlを書いているのですが、
LANカードとPPP接続を行った場合に、gethostbyname,
inet_ntoa(inet_aton())のどちらを使ってもLANカードの
アドレスが取得されてしまうのですが、
PPP接続のアドレスを取得する方法というのは、なにか
ありますでしょうか?
ifconfigでpppの部分だけ切り出そうかとも思ったのですが、
exec('ifconfig'');
の出力をどうやって拾うのかがわかりません。(^^;
なにかアドバイスなどありましたら、どうぞよろしくお願いします。

No. 875 # 68user 2000/05/21 (日) 14:34:37
> アクセス状況チェックでは、1時間おきに更新されていますが、
cron でやってます。
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/.crontab
のようなファイルを
    % crontab ~/.crontab
として設定します。

> LANカードのアドレスが取得されてしまうのですが、
外部にソケットで接続して、getsockname で取得できるませんか?
(試してません)

> exec('ifconfig'');
Linux の ifconfig がどういう出力をするのかわからないのですが、
    open(IN,"ifconfig |");
    while (<IN>){
        if ( m/ppp.*(\d+\.\d+\.\d+\.\d+\)/ ){
            $ip = $1;
        }
    }
    close(IN);
という感じでしょうか。

No. 876 # yuji 2000/05/22 (月) 03:21:49
お返事、どうもです。(^^)
そうなんですか。>cron
ちなみに、cronは、
どこのプロバイダでも利用できるものなんでしょうか?
telnetができるところなどに限定されるんでしょうか。
>%crontab ~/.crontab

外部に接続すると、そのソケットのアドレスは、
グローバルなIPアドレスでないと困りますから、
それをgetsocknameで取得するということですよね。
ばっちりでした。(^^)

Linuxのifconfigは、
(略 lo eth0など)
ppp0 Link encap:Point-to-Point Protocol
                    inet addr:*.*.* P-t-P:*.*.*.*
(略)
のようなカタチでして、水平タブなどを取り除いて、
.*?の最小マッチングを試してみたところ、取得できました。
外部コマンドの出力は、パイプを利用して取得すると。(メモメモ)

長くなってすいません。(^^;
今後とも、どうぞよろしくお願いします。

No. 877 # 68user 2000/05/22 (月) 05:02:11
> ちなみに、cronは、どこのプロバイダでも利用できるものなんでしょうか?
普通の UNIX なら、おそらく使えます。ただし、
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=73
のように、cron を使えないようにしているプロバイダもあります。なお、
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=74
では、ソースをコンパイルすれば使えるかのような発言をしてますが、
ソースをコンパイルしても無理です。
# /var/cron をいじるために、root の権限で suid を
# 立てなければいけないので。

> telnetができるところなどに限定されるんでしょうか。
そう思って下さい。crontab コマンド自体が使えるなら CGI や
~/.forward 経由でできるかもしれませんが、管理者に断らず
勝手にやるのはお勧めしません。

# CGI が nobody 権限で動いているサーバなら、nobody 権限で
# cron のデータが設定されるわけで。

No. 878 # hiroko amada [E-mail] 2000/05/22 (月) 14:45:03
unixで、sqlファイルを開き、中のコードを見れる状態にしただけでは、
書きこみモードにしない限り、
SQL文の書きこみ、変更はできないようになっているのでしょうか?

No. 879 # goto [E-mail] 2000/05/23 (火) 09:19:44
HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、
立ち上がらない現象が発生しています。
ついては、CD-ROMからブートして上記HDをfsckに掛ける必要があるかと
思われますが。
そこで、実際にどのメディアを使い、どのような操作をすべきか
教えて下さい!

No. 880 # 入海 2000/05/23 (火) 18:29:49
> ブラウザに明示的に文字コードを伝えても
> ダメですか? それでもダメならソースそのものを見せて下さい。
> # どこかにそのまま置いてもらえると、文字コードなどが
> # わかるので調べやすいです。
ヘッダ対策はしてたのですが。
ご迷惑をおかけしますが、ソースをアップしてみましたので、
ご覧いただけますか。
http://www.hatsumei.psiweb.com/IPconvert_3.cgi.txt

> nkf は、CGI の出力を JIS にするために使っているだけです。
>  ・スクリプトを SJIS にして、出力も SJIS
>  ・スクリプトを EUC にして、出力も EUC
> などという場合は、nkf は不要です。
知識不足でお恥ずかしいです。勉強になりました。

No. 881 # 入海 2000/05/23 (火) 18:33:26
すいません。アドレス間違えました。
正 → http://www.hatsumei.ab.psiweb.com/IPconvert_3.cgi.txt

No. 882 # 68user 2000/05/23 (火) 21:58:14
http://www.wakusei.ne.jp/twn/lng/red/wwwlng.cgi?show+200005/00050026.txt
と同じですかね。SJIS の全角空白の2バイト目が
@ のコードと同じなので、
        print "  $desc = $after<br>\n";
で化けているんでしょう。例えば、SJIS で
    @a=(1,2,3);
    print " a";
とすると、@a と書いてないのに 1 2 3 と表示されるはずです。

対策としては、スクリプトを EUC にするか、
    print '  '; # 全角空白2つ
    print "$desc = $after<br>\n";
がお手軽でしょうか。

> HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、
> SQL文の書きこみ、変更はできないようになっているのでしょうか?
HP-UX も SQL も使ったことがないので わからないです。

Prev< No. 874〜882> Next  [最新発言に戻る] [過去ログ一覧]