68user's page 掲示板

Prev< No. 2269〜2744> Next  [最新発言に戻る] [過去ログ一覧]
No. 2269 # kouji 2001/11/17 (土) 13:38:48
はじめまして、どうしても分からない事があるので質問させて下さい。

HTMLの中にSSIでCGIのファイルを読み込ませようとしたのですが
<!--#include file="test.cgi" -->
だとOKなのですが
<!--#include file="test.cgi?id=kouji" -->
のように引数を付けると
[an error occurred while processing this directive]
とエラーになってしまいます。

「?」の部分からエラーが表示されるのですが、これを回避する方法を教えて下さい。
webも調べてみたのですが、結局分かりませんでした。
http://tohoho.wakusei.ne.jp/wwwssi.htm
こちらの下の方に書いてあるexecの例で
>○ <!--#exec cgi="xx.cgi"-->
>× <!--#exec cgi="xx.cgi arg1 arg2"-->
>× <!--#exec cgi="xx.cgi?arg1+arg2"-->
>× <!--#exec cmd="xxx.pl"-->
>○ <!--#exec cmd="/bin/xxx arg1 arg2"-->
>○ <!--#exec cmd="./xxx.pl arg1 arg2"-->
これの○で書いてあることみたいに引数を渡そうとしても駄目でした・・・

よろしくおねがいします。

No. 2270 # ふくし [E-mail] 2001/11/18 (日) 14:43:58
なんでも聞いてすいません。
Windows 2000 以降についてくる「メモ帳」の「名前をつけて保存」では、
ISO-2022-jp および Shift_JIS(正確には Windows 932 および Windows 1152)のことを
「ANSI」と呼び習わしていますが、これはどういう経緯でしょうか?

ANSI といえばアメリカの工業規格で、ASCII や ISO-8859-1 を規定してるもんだと
思い込んで生きてきましたが、Delphi の入門本とか ML とかを見ても
「ANSI 文字列を Unicode に変換、、」とかいって、
Windows で使える Unicode 以外の文字、という意味で ANSI 文字列、
と書いてあるようなんですが、この言葉は正しい業界用語なんでしょうか?
それとも Windows ローカル語? この言葉のスコープはどこまでなんでしょうか?

「メモ帳」といえば UTF-16LE-BOM のことを「Unicode」、
UTF-16BE-BOM のことを「Unicode Big Endian」、UTF-8 のことを「UTF-8」と言ってますが、
これなんかも業界用語なのか Windows 語なのか単なるメモ帳の開発者の気の迷いなのか
わかりません。(あ、でも Word も共通なんだよな、、)

場違いでしたら情報のポインタや、討議するのにふさわしい掲示板等教えてください。
よろしくお願いいたします。

No. 2271 # 初心者みーです。 [E-mail] 2001/11/18 (日) 23:12:28
とても素人で、申し訳ないのですが、ご存知の方がいらしたら、教えて下さい。ハードは、IBM社のRS/6000を使用しています。kシェルを作成して下記の作業を行いたいと考えています。
複数のテ゛ィレクトリーに10〜30のファイルが存在しています。
各ファイル中に/usr/kokyakuと記述があれば、/usr/okyaku
と変更したいと考えています。sedコマンドを利用すればそれぞれのファイルの中身を変更させることは可能であることは、分かったのですが、対象の
ファイル数が多い為、該当のディレクトリーにcdし、
grep -l'/usr/kokyaku' * > filename
などで、対象ファイル名を保存したファイルを作成し、そのファイルを自動的に読み込んでファイル名をいちいち指定せずにsedコマンドを実行でき ないものでしょうか?awkコマンドでファイル名が保存されているファイルを読み込み、sedコマンドの出力ファイルを$1の名前にするなどは可能なのでしょうか? ちなみに、イメーシ゛的には、カレントディレクトリーの下のファイル(*)の内容を自動的に置換してほしいのですが…
sed 's/\/usr\/kokyaku/\/usr\/okyaku/g' * >*の出力  

つたない説明で、申し訳ありませんが、お知恵を頂けたらありがたいです。 

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2272 # ふくし [E-mail] 2001/11/18 (日) 23:50:37
みーさん:

Perl ですいません、一応テストもしました。
ミソは find コマンドの出力を ` ` で配列に入れて
for で処理している、、(フツーやんねえかな、、)

#! /usr/local/bin/perl -w
# kokyakuokyaku

$tmp = "TempFileDayooon"; # 中間ファイル。存在しないファイル名を選ぶこと

for $file (`find . -print`) {
        chomp;
        if (-f $file) {
                open FILE, $file;
                open TMP, ">$tmp";
                while (<FILE>) {
                        s|/srv/kokyaku/|/srv/okyaku/|g;
                        print TMP;
                }
                close TMP;
                close FILE;
                rename $tmp, $file;
        }
}

No. 2273 # ふくし [E-mail] 2001/11/19 (月) 02:33:50
(一応)ふつー File::Find 使うよね。知ってるー (^^;;;

No. 2274 # みー [E-mail] 2001/11/19 (月) 10:50:04
ふくしさんどーもありがとうございました。大変申し訳ないのですが、findコマンドの使い方をよく理解していないので、どなたかお教え頂けないでしょうか?私の理解としては、ディレクトリー内の条件にあったファイルを探す時に使うコマンドだと思っていたので、例えば、頭に’m*’がつくファイルを探したりする時に使用するものだと思っていました。1つあるいは複数のファイルから、指定パターンに合致した行を探しその対象のファイル名を表示させる為には、grepしか使用出来ないと思っていたのですが、findコマンドで、ファイル(シェル)中に/usr/kokyakuと記述されているファイル名をfindコマンドで探す場合は、どのように記述すればよいのでしょうか?
また、ふくしさんの記述して下さった各行の処理内容をもう少し詳細に教えて頂けないでしょうか?お手数をおかけいたしますが、よろしくお願いいたします。

No. 2275 # 68user 2001/11/19 (月) 13:11:21
>>2267 武田 一浩
$socket = IO::Socket::INET->new(
                            PeerAddr => '192.168.0.255',
                            PeerPort => 2425,
                            Proto => 'udp',
                    ) || die "$!";
とした方が、どこでエラーが出ているかを把握しやすいでしょう。

> とりあえず、Perlやスクリプトには異常がなさそうなので、

そうですね。perl か OS の問題ではないかと思います。

あと、ifconfig -a して、デバイスに
    fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
と、「BROADCAST」が付いていてブロードキャストに対応していることを
確認して下さい。もしかして ppp デバイスだったりすると付いてないかも。

>>2268 もみの木
> 現象として、すぐにExcelが表示されてしまいます。
要は、ASP は全く関係なくて
    <a href="HTTP://××/××/××/○○○.xls">hoge</a>
というリンクをクリックしたときの挙動ですよね? Windows は
よくわからないので、
    http://www.parkcity.ne.jp/~chaichan/bin/qanda.cgi?modefg=9
で質問した方がよろしいと思います。


あとの話題は後ほど。

No. 2276 # ふくし [E-mail] 2001/11/19 (月) 13:48:26
みーさん:

なんかすいません。
たぶんぼくのやり方すごく非標準的なので、
もっとカッコいい方法はいくらでもあると思うんですが、、

find はファイル名の検索、
grep はファイルの中の文字列の検索、
で、合ってます。
ぼくのスクリプトでは各ファイルの中での文字列検索/置換を
自分で書いています。(while のあたり)

#! /usr/local/bin/perl -w
# kokyakuokyaku

$tmp = "TempFileDayooon"; # 中間ファイル。存在しないファイル名を選ぶこと

for $file (`find . -print`) {
                  chomp $file; # すいません、ココ、間違ってました
                  if (-f $file) {
                                  open FILE, $file;
                                  open TMP, ">$tmp";
                                  while (<FILE>) {
                                                  s|/srv/kokyaku/|/srv/okyaku/|g;
                                                  print TMP;
                                  }
                                  close TMP;
                                  close FILE;
                                  rename $tmp, $file;
                  }
}

`UNIXコマンド`
    …バッククォート(`)でUNIXのコマンドを囲むと、
        出力結果をリストで返す

for $変数 (リスト) {
    ...なんだかんだ...
}
    …リストの要素を1個ずつ $変数 に入れながら、
        「なんだかんだ」の部分を繰り返す。
        上では find の結果を1行ずつ $file に入れて処理している。
        それはカレント ディレクトリ以降のファイル/ディレクトリである。

% find . -print
    …カレント ディレクトリ以降のファイル/ディレクトリを一覧表示する。

chomp $file;
    …$file(find の結果の1行)の末尾から改行を取り除いて、
        ファイル/ディレクトリ名として正しいものにしている

-f 文字列
    …「-f」はファイルテスト演算子のひとつ。
        右に来る文字列がふつうのファイルだったら真を返す。
        ここではディレクトリをはじいている。

open FILE, $file;
    …ファイル名 $file のファイルを入力で開いて、
        ファイルハンドル FILE で入力アクセスできるようにする

open TMP, ">$tmp";
    …ファイル名 $tmp のファイルを出力で開いて、
        ファイルハンドル TMP で出力アクセスできるようにする

while (<FILE>) {
    ...なんだかんだ...
}
    …ファイルハンドル FILE で読み込まれる
        ファイル $file(ここでは find の結果のうち、ファイルのみ)の
        1行1行を、$_ という特殊な変数に入れながら
        「なんだかんだ」の部分を繰り返す。
        $file を読み終わったらループを脱出する

s|/srv/kokyaku/|/srv/okyaku/|g;
    …デフォルトの作用対象である変数 $_ に対して、
        「/srv/kokyaku/」を「/srv/okyaku/」に置換する。
        s は substitute(置換)、g は global(全体的に)の略。
        g を略すと1行に1回しか置換しない

print TMP;
    …TMP ファイルハンドルに、デフォルトの作用対象 $_ を出力する
        ここで $_ は FILE の1行1行に
        「/srv/kokyaku/」=>「/srv/okyaku/」の置換を施したものである

close TMP;
close FILE;
    …ファイルを「閉じる」。
        (ファイルアクセスのために確保されていたメモリなどの資源を解放する)

rename $tmp, $file;
    …置換する前のファイル名が $file、
        置換したあとのファイル名が $tmp なので、
        $tmp を $file に改名する。
        これで置換したファイルで元ファイルは上書きされ、
        中間ファイル TempFileDayooon は消えてなくなる

こんな感じでしょうか。

No. 2277 # 68user 2001/11/19 (月) 14:17:20
>>2271 初心者みーです。
複数ファイルの中身を一括置換する、という目的に限れば、
    http://x68000.startshop.co.jp/~68user/unix/pickup?perl
の perl -pi.bak -e .. ところをどうぞ。

> findコマンドで、ファイル(シェル)中に/usr/kokyakuと
> 記述されているファイル名をfindコマンドで探す場合は、
> どのように記述すればよいのでしょうか?
いろいろありますが、以下のような感じです。

    % find . -exec grep -l /usr/kokyaku {} \;
          … 機能は実現できるけど、遅い。
    % grep -l *
          … ファイル数が多すぎるとダメ。ファイル数が数千程度ならこれでいいでしょう。
    % find . -print | xargs grep -l
          … ファイル数が多くても OK。
    % find . -print0 | xargs -0 grep -l
          … ファイル数が多くても OK。ファイル名に改行が含まれていても OK。

今回は grep -l でいいのではないでしょうか。

あと、
> sed 's/\/usr\/kokyaku/\/usr\/okyaku/g' * >*の出力
で実現できることはわかっているので、後はこれを複数のファイルに対して実
行すればよいのです。いろいろ方法はありますが、お勧めなのは「文字列をい
じくってコマンドラインを作り、sh に喰わせる」方法です。

grep -l * で、
    file1
    file2
    file3
という出力が得られるとします。次に
    grep -l * | sed "s|\(.*\)|sed 's./usr/kokyaku./usr/okyaku/.g' < \1 > out/\1 | "
とすると、
    sed 's./usr/kokyaku./usr/okyaku/.g' < ./file1 > out/./file1
    sed 's./usr/kokyaku./usr/okyaku/.g' < ./file2 > out/./file2
    sed 's./usr/kokyaku./usr/okyaku/.g' < ./file3 > out/./file3
という文字列が得られます。それをよく確認して、よさそうなら
    grep -l * | sed "s|\(.*\)|sed 's./usr/kokyaku./usr/okyaku/.g' < \1 > out/\1 | " | sh
と末尾に | sh を付ければ、そのまま実行されます。

正しいコマンドラインができるまでは「| sh」を付けずに試行錯誤すれば
よいので、いろいろなところで応用が効くと思います。

No. 2278 # 68user 2001/11/19 (月) 14:20:22
>>2270 ふくし
> 場違いでしたら情報のポインタや、討議するのにふさわしい
> 掲示板等教えてください。
場違いではないですが、わかりません。会社では Windows Me だし (笑)

ふさわしいところは… fj.kanji くらいしか思い付かないなぁ…。

後は
>>2269 kouji
ですが、これはちょっと調べてから回答したいと思います。

No. 2279 # みー(お礼) [E-mail] 2001/11/19 (月) 16:05:11
ふくしさん、68userさんどうもいろいろありがとうございました。とっても勉強になりましたし、助かりました。perl -pi.bakの方法で、一括変換変換させる方法をバックアップファイルも一緒に作成できるので、実施したいと思います。簡単なテストをしたところ、大丈夫そうでしたので…。他の方法も、今後時間のある時に試してみたいと思います。迅速なご回答と親切な説明、本当にありがとうございました。

No. 2280 # ぷたろ 2001/11/19 (月) 19:38:13
始めましてm(__)m
UNIXを学校で使っています。
家では使えないんでしょうか?
家にパソコンはあるのですが…(-.-;)

No. 2281 # ふくし [E-mail] 2001/11/19 (月) 20:21:53
ぷたろさん、はじめまして。
・家のパソコンに UNIX(FreeBSD とか Linux)を入れる。
    いろんな本に、すでに入ってる OS(Windows ですか?)と切り替える方法が
    書いてある<=管理が大変だけど
・家のパソコンをインターネットにつなぎ、
    会社のパソコンに Telnet(Windows だと Teraterm が有名)で
    ログインする。リモートコントロールの感覚ですね。
    グラフィックなソフトは使えないけど、、。
    この場合は学校の管理者の人に聞いてみてください。

No. 2282 # ぷたろ 2001/11/19 (月) 21:00:16
ふくしさん、ありがとですm(_ _)m
家のパソコンのOSはwindowsです。
外付けのハードを買って
そこにLinuxを・・・。
ってな具合にはいかないですか?
う〜ん、どうしよう(--;)

No. 2283 # ふくし [E-mail] 2001/11/19 (月) 23:49:50
>ぷたろさん
いちから Linux を入れて自分で管理する気があるんだったら、可能ですよ。
いまの Windows の HDD に余裕があるんだったら、
同じ HDD にパーティションを切って入れてもいいし、
新しい HDD を買う予定があるんだったら、ぷたろさんがおっしゃるように
外付けのでも新しい内蔵のでも入れて、そこに入れてもいいし。
要するに、今使ってる Windows のマシンに新しく Linux を入れて、
Linux と Windows と切り替えて使うことは可能です。
体験するだけだったら、ここの会社 http://www.mlb.co.jp/ のが
面白そうです。Live Linux というのは Windows マシンに CD-ROM を
突っ込むと Linux 体験が出来るそうです。あと MLD5 というのは
Windows のパーティションを壊さずに(フォーマットせずに)そのまま
Linux を入れられ、Linux は Windows からハードウェアの設定を
読みこんで自動インストールしてくれるそうです。
ぼくはどっちも使ったことないし、設定は人に任せているのでくわしいことは
わからないのですが、トライしてみたらどうでしょうか。

No. 2284 # ぷたろ 2001/11/20 (火) 02:28:31
ふくしさん、親切にありがとうございますm(_ _)m
同じHDDにいれるんだったら
HDDを分割するソフトがないと
ダメですよね?
HDDを新しく買って
Linuxを一からやってみようかな。。。
Linuxを自分で管理って大変なんですか?
「いちから Linux を入れて自分で管理する気があるんだったら」
ってあるから大変そう・・・。
う〜ん。新しい事をするのは難しいです(-.-;)

No. 2285 # ふくし [E-mail] 2001/11/20 (火) 13:49:19
>ぷたろさん
HDDにパーティションを切るソフトは、商用のLinuxにはたいてい
ついてきます。少なくともMLD5にはついてきます。
あと、FIPSというフリーのパーティションソフトもあります。
新しいHDDを買ってきてもいいですが、
どのディスクからブートするかを指定する何らかの手段が必要です。
この掲示板だけではフォローしきれないと思うので(^^;
適当な入門用Linuxを買ってみるといろいろ書いてあると思います。
それから大変かどうかですが、それは人によります。
最近の入門用のディストリビューションは
最初からなんでも使えるようになっているようですが、
もしネットワークにつなぎっぱなしにする環境なら、
不要なサービスを殺さないと外からどんどん入ってこられます。
最低でも root(管理者用ユーザー)のパスワードは設定してください。
では、がんばってくださいー。

No. 2286 # みー [E-mail] 2001/11/20 (火) 15:16:24
たびたび申し訳ありません。また、教えて下さい。perlのコマンドでカレンドディレクトリの中の複数ファイルを対象に、該当の文字(/usr/kokyaku)を特定の文字(usr/okyaku)に置換させようと考えています。下記のコマンドを実施したところ、特定文字を含まないファイルについても、バックアップファイル**.bakが作成されてしまいます。該当のファイルのみバックアップファイルを作成することは可能でしょうか?
perl -pi.bak -e 's/\/usr\/kokyaku/\/usr\/okyaku/g' *

カレントディレクトリーには、20ほどのファイル(ほとんどがシャル)が存在し、上記文字を含むファイルが6つほど存在するので、6つのみファイルの中身を置換し、バックアップファイルも6つのみ作成してほしいのですが、わがままなお願いでしょうか?お手数をおかけいたしますが、簡単な方法があれば教えて下さい。

No. 2287 # 68user 2001/11/20 (火) 15:56:00
>>2286 みー
> バックアップファイル**.bakが作成されてしまいます。
おそらくそういう仕様です。


で、どうすればいいと思いますか?

不要なファイルができて困るのなら、不要なファイルを作らないように
するか、不要なファイルを削除すればいいわけで。

まずは自分で考えてみて下さい。

No. 2288 # TAKE 2001/11/21 (水) 01:51:43
今晩は、初めまして。
突然ですが質問して宜しいでしょうか。
ホスト名と、IPアドレスの頁を読ませていただいたのですが、まだ良く分かっていないので、この場をお借りして質問させていただきます。
IPアドレスが微妙に違って、でもホスト名が同一の場合、それは同一のパソコンからアクセスしていると解釈していいのでしょうか?
すみません、物知らずで…教えてくださると嬉しいです。

No. 2289 # みー [E-mail] 2001/11/21 (水) 09:45:55
68userさん、回答ありがとうございました。仕様でそうなっているのでは、仕方がないので諦めて、カレトディレクトリーに該当ファイル数が少ない場合はファイルを指定し、該当ファイル数が多い場合は、不要なファイルを後で、rmで削除することにします。

No. 2290 # ふくし [E-mail] 2001/11/21 (水) 11:51:57
>みーさん
えーシェルスクリプトも Perl もつかえる環境なのに手動でやるんですか、
それはもったいない、、失敗もしそうだし、、

>TAKEさん
相手がプロバイダーの場合など、同じホスト名でも
ちがうパソコンのことがあるのでは、、。

No. 2291 # 68user 2001/11/21 (水) 22:45:27
回答が遅くなったので、もう見ておられないかもしれませんが…

>>2269 kouji
exec cgi、include file には引数を渡せない、という仕様の
ように思えます。ソースを読んでみたのですが、いまいち
わからなかったので自信はないのですが。

ただし、include virtual なら
    <!--#include virtual="./a.cgi?a=b&c=d" -->
というふうに書けば引数を渡せます。

どうしても include file、exec cgi で、ということなら
    <!--#set var="QUERY_STRING" value="hoge=1" -->
    <!--#include file="./a.cgi" -->
    <!--#exec cgi="./a.cgi" -->
などとやってみたのですが、QUERY_STRING の値は上書き
されてしまうようなので、これはダメ。よって、
    <!--#set var="MY_QUERY_STRING" value="hoge=1" -->
    <!--#include file="./a.cgi" -->
    <!--#exec cgi="./a.cgi" -->
などとして、CGI 側では QUERY_STRING でなく MY_QUERY_STRING を
使う、という方法しかないように思えます。

まぁそんなことをするくらいなら、素直に include virtual を
使った方がよいでしょうけれども。

No. 2292 # 68user 2001/11/21 (水) 22:58:37
>>2236 Ka23
> UNIX プログラミング FAQのサイトが
> http://www.adl.rd.nacsis.ac.jp/~moro/unix-programmer/faq-j_toc.html
> に移転しているようです。
遅くなりましたが修正いたしました。

# http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/link-book.html

が、今 www.adl.rd.nacsis.ac.jp には unreachable なので、
そのページはまだ見ていません。

No. 2293 # 68user 2001/11/21 (水) 23:19:24
>>2159 Nira
> そういえば、httpsの取得に良いサイトを発見しました。
> https://www2.ggn.net/cgi-bin/ssl です。
http://x68000.startshop.co.jp/~68user/net/ssl.html に反映しました。

# http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/ssl.html


他にも「前に情報提供したのにまだ反映されていない」という部分が
ありましたら、ご指摘いただけると幸いです。

No. 2294 # kouji 2001/11/23 (金) 09:08:52
>68userさん
ありがとうございました。
include virtualを使います。

No. 2295 # TAKE 2001/11/23 (金) 22:43:20
ふくしさん、ご回答有難うございました。
参考になりました。

No. 2296 # ふくし [E-mail] 2001/11/26 (月) 01:03:02
Perl の質問ですが、(101) とか ($x) とかいう式は、
・スカラーをカッコに入れたもの
と思われるのでしょうか、
・要素数が1個のリスト
と思われるのでしょうか。

($x) = (6,7,8);
と書くと、$x には 6 が入るので、($x) はリストのようです。
でも、そのあと、
$n = ($x);
と書くと、$n には ($x) の要素数 1 ではなく、$x の値 6 が入ります。

$n = ();
と書くと、$n にはゼロは入らないで undef が入るようです。
ということは、() は空リストではなく、
「無」をカッコで囲んだ式が入ってるということでしょうか。
というのは、空リストだとすると、
$n には空リストの要素数 0 が入るように思うからです。

No. 2297 # ひろ 2001/11/26 (月) 11:41:26
みなさん、はじめまして。
ちょっと、C言語の質問をさせてもらっていいっですか?
自分は、redhadのLinux2.1を使っているのですが、
タイム関数の
#include<time.h>
が、使うことが出来ませんが、Linuxにおいては
タイム関数は対応していないのでしょうか?
ある、実験において実験結果をグラフにしようとしている
のですが、タイム関数が使えないために、横軸がLOOP回数での
表示しか出来ずにグラフが成立しなくて困っています。
どうか、良きアドバイスをいただけないでしょうか?
お願い致します。

No. 2298 # 68user 2001/11/26 (月) 11:45:44
>>2296 ふくし
@a をスカラーコンテキストで評価すると、@a の要素数が得られますが、
(6,7,8) をスカラーコンテキストで評価すると最後の要素の 8 が
得られます、ってことで回答になってますでしょうか。

>>2297 ひろ
POSIX にもある関数ですので使えるはずです。どうやったらどういう
エラーが出たのかを詳しく書きましょう。

No. 2299 # ふくし [E-mail] 2001/11/26 (月) 13:26:51
68 ユーザーさん>
なるほど〜そのとおりのようですね。どうもありがとうございました。

No. 2300 # maru 2001/11/26 (月) 15:54:45
はじめまして。UNIX初心者で申し訳ない質問なんですが、、
今自分が使っているOSのバージョンを知るコマンドってあるのでしょうか?
DOSで言う「ver」にあたるものです。
手持ちの本に載ってなかったので、くだらない質問で申し訳ないんですが、
お願いします。

No. 2301 # ふくし [E-mail] 2001/11/26 (月) 17:06:43
maru さん、はじめまして。
uname -v ですな。(DOS の方を知らんかった、、;;;)

No. 2302 # maru 2001/11/26 (月) 17:18:30
ふくしさん、さっそくありがとうございます。
DOSでのコマンド、お役にたててなによりです。(笑)

No. 2303 # ken 2001/11/26 (月) 22:02:12
はじめまして、けんといいます。すごく初心者なのですが、質問
させてください。

ネットワークプログラムをやろうと思い、
UNIXネットワークプログラミング(リチャードスティーブンス)
の本を買ってきたのはいいですが、プログラムの実行の仕方が
わかりません。学校のソラリスにTELNETでつないで、最初の例題
timetcpcli.cという、時間を返してくれるプログラムを
書いて、gccで実行したのですが、例題に特殊な"unp.h"という
ヘッダーがあり、それを作者のHPからダウンロードしてきて、
timetcpcli.cと同じディレクトリーにコピーしました。

そしていざ、gccをやってみても、そのようなファイルもディレクトリ
も存在しませんと返ってきました。ファイルとヘッダーを同じ
ディレクトリーに置いといて実行できるのでしょうか?

大変初心者ですいません。自分がこのようなプログラムをやる
域に達していないのですが、どなたかご教授ください。

No. 2304 # 68user 2001/11/27 (火) 01:14:21
>>2303 ken
> ファイルとヘッダーを同じディレクトリーに置いといて
> 実行できるのでしょうか?
#include "unp.h" と書いてあるならいけるはずです。
もしかして #include <unp.h> と書いてませんか?

No. 2305 # ひろ 2001/11/27 (火) 10:18:32
68userさん>失礼しました。今後、気をつけます。
                        さて、プログラムの方なのですが、参考図書とにらめっこして      いたところ、恥ずかしい事にタイム関数の使い方を間違ってい      ました。今後、こんなことのないように気をつけます。
                        有難うございました。

No. 2306 # pon 2001/11/27 (火) 10:50:21
こんにちは、
Solaris2.6を使用しておりますが、
印刷のコマンドの「lp」と「lpr」の違いはなんでしょうか。
いろいろ調べたんですが、なかなか意味が理解できなくて。。
「lpr」の方はSunOS/BSD互換パッケージコマンドとありますが、それだけ
の違いでしょうか。
よろしくお願いします。

No. 2307 # まさお 2001/11/27 (火) 11:11:42
こんにちは。質問したいことがあります。
UNIX上で、あるアプリケーションの画面(検索結果を表示しているような一般的
な画面)をそのままハードコピー感覚で印刷したいのですが、
これにはどういった処理・手順が必要なのでしょうか。

単純にlpコマンドではうまく印刷できないですよね?
PostScriptに変換しないとやはりダメでしょうか。
ちなみにOSはSolaris2.6で出力プリンタはEPSON LP9200SXです。
(プリンタはLAN上にいます)
プリンタの方でも何か設定が必要でしたら教えてください。
よろしくお願いします。

No. 2308 # 68user 2001/11/27 (火) 11:14:33
>>2306 pon
> 「lpr」の方はSunOS/BSD互換パッケージコマンドとありますが、
> それだけの違いでしょうか。
それだけです。

BSD 系 UNIXには lpr の方しかなくて、SystemV 系は lp です。
Solaris の /usr/usb/ の下にあるのは全て BSD 互換コマンドです。

# ucb=University of California, Berkeley

No. 2309 # 68user 2001/11/27 (火) 11:23:40
>>2307 まさお
> プリンタはEPSON LP9200SXです。
これ、PostScript プリンタですよね。
    http://www.i-love-epson.co.jp/products/printer/laser/lp9200ps3/9200ps32.htm

ImageMagick 付属の convert で PostScript に変換して、
lp に流すのはどうでしょうか。
    % xwd > image.wd
    % convert image.wd image.ps
    % lp -d printername image.ps

あるいは、とにかくブラウザが見える画像形式に変換して、
ブラウザから印刷する、とか。

No. 2310 # まさお 2001/11/27 (火) 11:56:08
68user様、ありがとうございました。
やはりPostScript への変換が必要なのですね。
ところでこのPostScript変換ツールというのは、テキスト用、画像用とかいろいろとあるようですが、これらはみな1ツールとしてOSにインストールする必要があるということですよね。

以上ありがとうございました

No. 2311 # ken 2001/11/27 (火) 12:57:02
68userさん、さっそくのお返事ありがとうございます。
<unp.h>ではなく、"unp.h"としてもこのような、ファイル、
ディレクトリはありませんと返ってきます。

僕はウィンドウズユーザーなので、UNIXをやるときは学校と
つなげるしかありません。僕の環境はOSはWin2000,next ftp
とtera term proで学校のSun OS5.8につないでいます。

作者(リチャードスティーブン)のHPからunp.hと例題が
詰まったフォルダーをダウンロードしてきて、WIN上で解凍。
それをFTPで自分の学校のアカウントにおくりました。

自分のアカウントではcというディレクトリを作り、その中に、
例題のdaytimetcpcli.cというファイルと,"unp.h"という
ファイルをおいて、gcc daytimetcpcli.cとうつと、このファイル、
ディレクトリはありませんとでてきます。例題も、unp.hも
コピー&ペーストでありつけたので、打ち間違えはないのですが、
どこに問題があるのでしょうか?たいへんすいません、よろしく
お願いします。

ちなみにunp.hというファイルは下記のURLにいって、それをコピー
してきました。
http://www.sfc.wide.ad.jp/~nob/webdoc/unpv12e/lib/unp.h

No. 2312 # 68user 2001/11/27 (火) 14:04:40
>>2310 まさお
> テキスト用、画像用とかいろいろとあるようですが、これらはみな1ツールとして
> OSにインストールする必要があるということですよね。
「1ツール」の意味がよくわかりませんが、
    - テキスト用としては a2ps
    - dvi なら dvi2ps
    - 画像用としては convert で PostScript に変換
などと、別々のアプリケーションで配布されています。

ファイル形式ごとに、いちいちどの変換フィルタかますかを考えるのが面倒、
ということなら、file コマンドなどでファイル形式を判断し、適切なフィルタを
経由して lp にデータを渡すシェルスクリプトを書く、という手もあります。

>>2311 ken
> このような、ファイル、ディレクトリはありません
意訳せず、正確なエラーメッセージを書いて下さい。

例えば unp.h を置いて、以下の内容のような foo.c というファイル
    #include "unp.h"
    main(){
    }
を置き、コンパイルすると
    % gcc foo.c
    In file included from foo.c:1:
    unp.h:7: ../config.h: No such file or directory
    In file included from foo.c:1:
    unp.h:200: ../lib/addrinfo.h: No such file or directory
となります。config.h や addrinfo.h を用意していないということはありませんか?

でなくて、
    foo.c:1: unp.h: No such file or directory
と出るなら本当に unp.h がないのでしょう。unp.h が置いてあるディレクトリに行って、
    % cat unp.h
とするとちゃんと表示されますか?

No. 2313 # まさお 2001/11/27 (火) 16:29:25
>68userさん
いろいろとありがとうございました。よくわかってきました。

ところで、もっと漠然とした質問で申し訳ないんですけど、UNIX上で画像などを印刷する場合は、ファイルをPostScript形式に変換しなければどんなことしても絶対印刷は無理!ということなのでしょうか。
(要はImageMagickやxvのインストールは必須ということでしょうか。)
Postscriptがなかった時代は印刷できなかったんですかね。

では失礼します。

No. 2314 # 68user 2001/11/27 (火) 21:14:57
>>2313 まさお
要は、プリンタが解釈できる言語を流してやる必要があります。

PostScript プリンタは PostScript を解釈できます。LIPS な
プリンタには LIPS で、ESC/Page なプリンタには ESC/Page な
データを流してやらないといけません。

そのための変換ツールが、lipsf だとか、gs (GhostScript)
だとか、a2ps とか dvi2ps とかなわけです。

どうでもいいですが、PostScript プリンタってのは価格が高いので、
普通の企業では LIPS とか ESC/Page なプリンタを買うことが多いです。

Canon やら Epson がドライバを出しているので Windows からの利用は
OK なんですが、UNIX から非 PostScript プリンタを使うのは何かと
面倒だったりします。

No. 2315 # まさお 2001/11/28 (水) 11:19:44
>68userさん
ありがとうございました。
いろいろ複雑ですね。ますます考えることが多くなってきました。

要はUNIXからアプリケーションの画面(スナップショット)を印刷する処理を
考えているところなのです。
プリンタがEPSON LP8200LP2 でOSがSolaris2.6です。

画像なので、以前教えていただいたようにImage Magickなどの変換ツールを
あとからインストールしないとダメなようすね。
OSの方にあらかじめ組み込まれているコマンドとかがないのか探しているんですけど、
みつかりません。「jtops」というコマンドがOSにあるのですが、これはテキスト専用
でしょうか。
あと、教えていただいたLIPSやESC/PAGEというメーカーの制御コードもテキスト
専用なんですよね?

画像の印刷はやはりPostscript変換ということですよね。

たびたび失礼しました。

No. 2316 # 68user 2001/11/28 (水) 13:02:21
>>2315 まさお
> 「jtops」というコマンドがOSにあるのですが、これはテキスト専用
> でしょうか。
のようですね。

> あと、教えていただいたLIPSやESC/PAGEというメーカーの制御コードも
> テキスト専用なんですよね?
いいえ、イメージもいけます。


てゆーか、そんなに難しく考える必要はなくて、PostScript プリンタ
なんだから PostScript で送ってやればいいんですよ。

例えば
    ftp://gatekeeper.dec.com/contrib/share/lib/ghostscript/examples/tiger.ps
を落として
    % lp -d printername < foo.ps
で印刷できるはず。

あとは任意の画像を PostScript に変換するツールをインストールすれば
おしまいです。convert でも xv でも gimp でもできます。

No. 2317 # まさお 2001/11/28 (水) 15:40:30
>68user さん
ありがとうございました。
勉強になりました。

No. 2318 # ken 2001/11/28 (水) 16:05:37
ネットワークプログラムなのですが、エラーメッセージとしては、
68userさんがおっしゃったように、

In file included from daytimetcpcli.c:1:
unp.h:7: ../config.h: No such file or directory
In file included from daytimetcpcli.c:1:
unp.h:200: ../lib/addrinfo.h: No such file or directory

というメッセージが返ってきます。しかし、unp.hも、addrinfo.h,
config.hも同じディレクトリーにいれてgcc daytimetcpcli.cと
うっても、上記のようなエラーが返ってきます。ヘッダーファイル
が同じディレクトリーにあるのにこのようなメッセージが返ってくる
ということは、やはりどこかに、なんらかの間違いがあるということ
でしょうか?よろしくお願いいたします。

No. 2319 # 68user 2001/11/28 (水) 17:58:16
>>2318 ken
    /home/user/c/daytimetcpcli.c
    /home/user/c/unp.h
というファイル配置で、カレントディレクトリが /home/user/c/ のとき
    ../config.h

    /home/user/unp.h
を表します (.. は親ディレクトリを表すから)。同様に
    ../lib/addrinfo.h

    /home/user/lib/addrinfo.h
を表します。

そこにヘッダファイルがないので No such file or directory になって
いるわけです。本に、ヘッダファイルやソースファイルをどういう
ディレクトリ構成で置きなさい、という記述はありませんか?

No. 2320 # 68user 2001/11/29 (木) 00:03:18
>>2318 ken
unpv12e.tar.gz を持ってきて試してみたところ…README にやり方が
ちゃんと書いてありますがな。ドキュメントはちゃんと読みましょう。
    % ./configure
    % cd lib
    % make
    % cd ../intro
    % make daytimetcpcli
でうまくいきました。

Solaris8 (SunOS5.8) ではどうかはわかりませんが、FreeBSD では
lib の make 時に IPV6_DROP_MEMBERSHIP というマクロが未定義だ
というエラーが出ました。これは古いマクロで、今は IPV6_JOIN_GROUP に
変わっています。

んで、ここを書き換えるとコンパイルが通りました。

No. 2321 # lee [E-mail] 2001/11/29 (木) 23:13:35
.tgzとして拡張子があるファイル、どう展開しますか?

No. 2322 # pon 2001/11/30 (金) 10:39:35
ひとつ教えてください。
Windowのダンプのコマンドの一般的な使い方は、
xwd -out display.xwd
と入力し、そのあとにダンプしたいWindowをマウスで選択しますが、
このとき、ダンプをとりたいWindowをマウスで指定するのではなく、
プログラム上で指定したいのです。(たとえば、Window上に「印刷」ボタンを設け、それが押されたら今アクティヴなWindowを印刷する、とか。)
そういった処理を行うこと可能なのでしょうか?

No. 2323 # kura 2001/11/30 (金) 10:55:29
はじめまして、
ネットワークプログラミング駆け出し者です。
このような、すばらしいHPを開かれている皆様に感謝致します。
とても、参考になります。
これからも、宜しくお願いします。

No. 2324 # なっち 2001/11/30 (金) 13:44:59
かなり勉強になりました。
telnetのところでGET index.html HTTP/1.0をやっても403エラーと
出てしまいます。どうしたら、うまくいくか教えてください。
お願いします。

No. 2325 # zone [E-mail] 2001/12/04 (火) 13:55:08
cookの作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?の作成はどの様にすればいいですか?

No. 2326 # ひよっこ 2001/12/04 (火) 14:43:58
はじめまして。
最近unixを触りだしたひよっこです。
大変素晴らしいHPでとても助かります。
実は、unixのシステム管理業務の一環として時間別/日別のcpuの使用率及びメモリ使用率を調べるコマンドを探しています。
cpu使用率はsar -Aでデータを取る事が出来たのですが、メモリ使用率
が分かりません。
どうしてよいのか途方に暮れています。良きアドバイスを頂けないでしょうか?

No. 2327 # ふくし [E-mail] 2001/12/04 (火) 19:36:21
いつもお世話になっております。Perl で助けてください。
0x00 から 0xff までループ、というつもりで、

    for ("\x00".."\xff") {
        ...
    }

とやってますが、\x00 のとき1回だけやって終わるみたいです。
なじぇ?(?.?) どなたかお願いします。

No. 2328 # 68user 2001/12/04 (火) 21:24:48
>>2321 lee
> .tgzとして拡張子があるファイル、どう展開しますか?
「tgz 展開」で検索しましょう。

>>2322 pon
> たとえば、Window上に「印刷」ボタンを設け、それが押されたら今アクティヴな
> Windowを印刷する、とか。
というのができるのかどうかはわかりませんが、xwd の -id や
-name オプションでウィンドウは指定できるでしょう。指定する
値は
    % xwininfo -root -all
で表示されるものです。

>>2324 なっち
> telnetのところでGET index.html HTTP/1.0をやっても403エラーと
> 出てしまいます。
ブラウザでアクセスしても 403 となるなら、telnet でやっても
当然 403 です。もしブラウザでうまくいくのなら、Host ヘッダを
付けてやってみて下さい。

>>2326 ひよっこ
OS は何ですか? 僕なら top を使いますが、sar -k とかでも
できませんか? (試したことはありませんが)

>>2327 ふくし
> \x00 のとき1回だけやって終わるみたいです。
終わってしまいますね。よくわかりませんが、
    for ("\\1" .. "\\9") {
    for ("!1" .. "!9") {
などでも同様なので、\ という *文字* はマジックインクリメントの
対象外なんじゃないでしょうか。

で、実は本当にやりたいのは
    for (0x00 .. 0xff) {
じゃあないですか? じゃなくて、もし \xXX という文字列が
欲しいのならば
    for (0x00 .. 0xff) {
        $hex = sprintf("%02x", $_);
    }
あたりで。

No. 2329 # ふくし [E-mail] 2001/12/05 (水) 00:28:02
いつもお世話になっております。
>実は本当にやりたいのは
ばっちりです、、;;;

No. 2330 # しんベエ 2001/12/05 (水) 16:53:48
はじめまして。
ここのプログラムは凄く参考になり助かっています。

サンプルプログラムの間違いなんですが、
http://jfx.startshop.co.jp/~68user/net/module-2.html
にある、モジュールを使ったマルチスレッド版echoプログラムの
31行目「if ( fork() ){」は、
正しくは「if ( $pid = fork() ){」ですよね?

No. 2331 # なっち 2001/12/05 (水) 18:14:10
お答えありがとうございました。
かなり役に立ってます。すごいです。
また、質問何ですが、UNIXで壁紙を自分のもっている画像にしたいので
すが、xvコマンド以外で何か良い方法ありませんか?

No. 2332 # わたなべ 2001/12/06 (木) 02:51:39
はじめまして。
このページではいつも色々と勉強させて貰っています。

さて、質問なのですが、今現在CVSにてあるプロジェクトを管理しており、
そのリポジトリをcvswebにて閲覧出来るようにしようとしているのですが、
ある特定のファイル達の中身を表示しようとしたときに、
cvs checkout: cannot exec co: No such file or directory
cvs checkout: could not check out xxx/yyy/Zzz.java
という様なメッセージが出てしまいます。
CVSも使い始めたばかりのため、何が原因なのかが分かりません。
もし良かったら何かヒントや、cvswebに関しての解説があるような
ページがありましたら教えていただけると嬉しいです。

よろしくお願いします。

No. 2333 # 68user 2001/12/06 (木) 04:11:41
>>2330 しんベエ
> 正しくは「if ( $pid = fork() ){」ですよね?
ご指摘ありがとうございます。その通りですね。修正しておきます。

>>2331 なっち
> お答えありがとうございました。
> かなり役に立ってます。すごいです。
じゃなくて、回答した結果、解決したかどうかをちゃんと書いて
ください。とりあえず
        http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
を読んでください。

> UNIXで壁紙を自分のもっている画像にしたいのですが、
> xvコマンド以外で何か良い方法ありませんか?
ImageMagick が入っているなら
    % display -window root 画像ファイル
でできるかも。

>>2332 わたなべ
あなたも
    http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
を読んでください。少なくともこの掲示板ではマルチポストは
ダメですし、2ch でも歓迎はされないでしょう。

あと、OS は何ですか? cvs のバージョンは? RCS のバージョンは?
cvsweb には zeller 版と knu 版がありますが、どっちを使って
いますか? また、そのバージョンは? 内容を表示って、x-cvsweb-markup
のことですか? それとも text/plain ですか?

仮にうちと同じ knu 版 cvsweb-1.105.1.65 だとすると、その
エラーが出そうなところは
    exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);
しかなさそうなので、オプションなどの値を表示させてみて、
同じことをコマンドラインからやってみてはどうですか。

# http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/cvsweb.cgi?rev=1.9&content-type=text/x-cvsweb-markup

No. 2334 # わたなべ 2001/12/06 (木) 13:05:37
渡辺です。
>>2322 pon
は非常に浅はかな行動だったと認識しました。
申し訳ありませんでした。
今後気を付けます。

質問の続きをさせて頂いてもよろしいでしょうか…?
使っている各ソフトウェアのバージョンですが、
OS : Solaris SunOS 5.8
CVS : 1.9
RCS : 5.7
cvswebは、68userさんが使われているのを、http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgiのリポジトリから拝借しました。(ひょっとして、これもまずい行動でしたか。)
そして、内容の表示というのは、x-cvsweb-markupも、text/plainもです。
表示出来るファイルに関しては、双方とも表示出来るのですが、エラーが起きるファイルに関しては、両方ともに起きます。

また、68userさんがおっしゃってる通り、
exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);
でエラーが起きているであろうと考え、それをコマンドラインで実行してみたのですが、コマンドラインからは実行できました。
(実行できました。といいますか、あるファイルをチェックアウトでき、標準出力に出力されるという結果を得ました。)
オプションの値を変更して…という事ですが、CVSに明るくないため、何をどうかえたら良いのかがわかりませんでした。

これで足りますでしょうか?
もし、>>2332での事をお許し頂けるなら、何がアドバイス等を頂けたら嬉しいです。
結果報告もきちんとしますので、よろしくおねがいします。

No. 2335 # わたなべ 2001/12/06 (木) 14:02:08
>>2334 わたなべ
での書き込みにある、>>2322は>>2332の間違いです。
重ねてお詫びします。申し訳ありません。

No. 2336 # 68user 2001/12/06 (木) 14:58:28
>>2334 わたなべ
> ひょっとして、これもまずい行動でしたか。
問題ありません。書いてある通り、covered by the BSD-Licence です。

checkout できるファイルとできないファイルがあるということですから、
まずはリポジトリのパーミッションはどうなっているか確認して下さい。

同じディレクトリでも co できるファイルと co できないファイルがあれば、
ファイルのパーミッションが怪しいですし、あるディレクトリの下のファイルが
全て co できないならディレクトリのパーミッションがおかしいでしょうし。

うちの Solaris2.6 では
    % chown -R cvs /cvsroot (グループは cvs グループで統一)
    % chmod -R g+w /cvsroot (cvs グループに書き込み権限を与える)
    % find /cvsroot -type d | xargs chmod g+s (BSD タイプのパーミッションに)
とかしてます。でも、cvsweb.cgi は nobody で動かしているから
これは関係ないかな…。

また、CGI の実行権限は何ですか? 例えば nobody なら su nobody して
から checkout してみて下さい。

実際にどういうコマンドが実行されているかは、
    if (! open($fh, "-|")) { # child
        open(STDERR, ">&STDOUT"); # Redirect stderr to stdout
        exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);
    }
の前に
    print "Content-type: text/plain\n\n";
    print qq(exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where););
    exit;
などと書けばわかるでしょう。

それでもダメなら
        exec($CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);

        exec("/bin/truss", $CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);
として、どのファイルをオープンしようとしてエラーになっているかを
調べて下さい。ちなみに、こちらでやってみると
    open("/MASTER/cvs/CVSROOT/config", O_RDONLY) = 4
    open("/MASTER/cvs/CVSROOT/cvsignore", O_RDONLY) Err#2 ENOENT
    open("//.cvsignore", O_RDONLY) Err#2 ENOENT
    open("/MASTER/cvs/CVSROOT/cvswrappers", O_RDONLY) = 4
    open("/MASTER/cvs/CVSROOT/modules", O_RDONLY) = 4
    ..
    open("/MASTER/cvs/admin/public_html/cvsweb.cgi,v", O_RDONLY) = 5
となります。

No. 2337 # aki 2001/12/06 (木) 15:18:16
特定の一般ユーザをroot権限と同様な権限を与えたいのですが、
設定方法を教えてもらえないでしょうか。
/etc/groupのファイルのrootグループに追加するだけで
はいけないのでしょうか。

No. 2338 # わたなべ 2001/12/06 (木) 16:29:03
度々すいません。
>>2336 68user
>同じディレクトリでも co できるファイルと co できないファイルがあれば、
>ファイルのパーミッションが怪しいですし、あるディレクトリの下のファイルが
>全て co できないならディレクトリのパーミッションがおかしいでしょうし。
リポジトリのパーミションを確認しました。
$CVSROOTディレクトリは 755
その中のプロジェクト毎のディレクトリは 775 でした。
各プロジェクト毎のディレクトリ内にある、サブディレクトリは 775
そして、ファイルは全て 444 でした。
チェックアウト出来るファイル/出来ないファイル、全て同一のパーミションで、同一のディレクトリ内にあるファイルでもチェックアウト出来るものと出来ないものがありました。

>また、CGI の実行権限は何ですか?
>例えば nobody なら su nobody してから checkout してみて下さい。CGI は nobody で動いています。
su nobody をやってみたのですが、パスワードを求められました。
僕はこのサーバの管理者ではないので nobody にはなれない様な気がしているのですが、可能なのでしょうか?

>実際にどういうコマンドが実行されているかは、
これは最初に書き込みをした時点でやってみました。
CGI からではなく、ターミナル上のコマンドからならチェックアウト出来ることも確認しております。

>exec("/bin/truss", $CMD{cvs}, @cvs_options, '-d', $cvsroot, 'co', '-p', $revopt, $where);
やってみたところ、以下の様な出力を得ました
= From ========================================
cvs checkout: cannot exec co: No such file or directory
cvs checkout: could not check out xxx/yyy/Zzz.java
waitid(P_PID, 17464, 0xFFBEF1C0, WEXITED|WTRAPPED|WNOWAIT) = 0
ioctl(0, TIOCGPGRP, 0xFFBEF17C) Err#22 EINVAL
getpgid(17464) = 350
ioctl(0, TIOCGPGRP, 0xFFBEF17C) Err#22 EINVAL
waitid(P_PID, 17464, 0xFFBEF1C0, WEXITED|WTRAPPED) = 0
waitid(P_ALL, 0, 0xFFBEF160, WEXITED|WTRAPPED|WNOHANG) = 0
fork() = 17467
waitid(P_PID, 17467, 0xFFBEF270, WEXITED|WTRAPPED|WNOWAIT) = 0
ioctl(0, TIOCGPGRP, 0xFFBEF22C) Err#22 EINVAL
getpgid(17467) = 350
ioctl(0, TIOCGPGRP, 0xFFBEF22C) Err#22 EINVAL
waitid(P_PID, 17467, 0xFFBEF270, WEXITED|WTRAPPED) = 0
waitid(P_ALL, 0, 0xFFBEF210, WEXITED|WTRAPPED|WNOHANG) = 0
llseek(0, 0, SEEK_CUR) Err#29 ESPIPE
_exit(0)
= End =========================================
上のメッセージの3行目以降は、チェックアウト出来たファイル/出来なかったファイル共に出力されていました。

現状報告だけで申し訳ありません。
このページで学んだ通り、ユーザ権限で CGI を動かすようにもしてみたのですが、それでも何も状況は変わりませんでした。

No. 2339 # わたなべ 2001/12/06 (木) 16:31:23
>>2338 わたなべ

>例えば nobody なら su nobody してから checkout してみて下さい。CGI は nobody で動いています。

>例えば nobody なら su nobody してから checkout してみて下さい。
CGI は nobody で動いています。
と訂正させてください。
毎度毎度申し訳ありません。

No. 2340 # 68user 2001/12/06 (木) 17:09:12
>>2332 わたなべ
> cvs checkout: cannot exec co: No such file or directory
ん〜、これってもしかして、単に co(1) が見付からないって
言ってるのかな? co(1) にパスは通ってます?

# って、どういうときに co(1) が使われるのかいまいちわかってませんが。
## これが原因なら、かなり的外れなことを言ってたことになるなぁ。

No. 2341 # わたなべ 2001/12/06 (木) 17:47:06
>>2340 68user
>ん〜、これってもしかして、単に co(1) が見付からないって
>言ってるのかな? co(1) にパスは通ってます?

co(1) という書き方が何を指すのか、わからないのですが、
which co
で得られるパスを、 cvsweb.conf の $command_path にコロンでつなげて
記述すればいいんですよね?
一応それはやってあります。
CVS も RCS も、root が入れたものではなく、ユーザ権限でインストール
したもので、それらをユーザの ~foo/cgi-bin/cvsweb/ で使おうと
しているのですが、その辺りに問題があったりしますか?

No. 2342 # 68user 2001/12/06 (木) 18:35:12
>>2338 わたなべ
> which co で得られるパスを、 cvsweb.conf の $command_path にコロンで
> つなげて記述すればいいんですよね?
はい、そうです。

> リポジトリのパーミションを確認しました。
ではリポジトリのパーミッションは問題ないでしょう。

> 僕はこのサーバの管理者ではないので nobody にはなれない様な気が
> しているのですが、可能なのでしょうか?
一度 root にならないと nobody にはなれません。

truss の結果 (システムコールでこけているわけではないらしい) と、
> cvs checkout: cannot exec co: No such file or directory
> cvs checkout: could not check out xxx/yyy/Zzz.java
のメッセージから、単に PATH を検索して、co が見付からないので
    co -r1.1 /cvsroot/xxx/yyy/Zzz.java,v
がこけているのかと思ったのですが、違うのかなぁ。成功するファイルと
失敗するファイルがあるというのが謎ですが…。

でも、最近の cvs (少なくとも cvs-1.11) では rcs (co も含む) は
使っていないはずなので違うかなぁ (cvs は rcs を使わないけど、
cvsweb は rcs を使う)。

…と書いたところで今気づきましたけど、
> CVS : 1.9
古いです。最新版は cvs-1.11.1-p1 のようですが、最低でも cvs-1.11
にして下さい。ここが一番怪しいかな。

ちなみに、最新版の cvsweb はこちらです。
    http://www.idaemons.org/cgi-bin/cvsweb.cgi/cvsweb/

No. 2343 # わたなべ 2001/12/06 (木) 20:15:55
>>2342 68user
>…と書いたところで今気づきましたけど、
>> CVS : 1.9
>古いです。最新版は cvs-1.11.1-p1 のようですが、最低でも cvs-1.11
>にして下さい。ここが一番怪しいかな。
cvs-1.11をインストールしてみましたところ、無事にcvswebも問題なく
動き出す様になりました。
最初に無礼を働いてしまったにも関わらず、解決まで長々と
付き合って頂き、本当にありがとうございました。

これからもちょくちょく来て、勉強させて頂きます。
ありがとうございました。

あと、ちょっとメインの話とはずれるのですが、
>>2340 68user
にあった
>co(1)
というのはどのような時に書く方法なのでしょうか?

No. 2344 # 68user 2001/12/06 (木) 20:46:58
>>2343 わたなべ
> 無事にcvswebも問題なく動き出す様になりました。
それはよかったです。バージョンは? と聞いておきながら
古いのを見落としていたのは失敗でした。

>> co(1)
> というのはどのような時に書く方法なのでしょうか?
セクション番号を表します。セクション 1 はコマンドなので、
「co(1)」は「コマンド co」という意味です。
# http://X68000.startshop.co.jp/~68user/unix/pickup?man

No. 2345 # わたなべ 2001/12/07 (金) 00:07:54
ありがとうございます。
>>2344 68user
>セクション番号を表します。
あ、すでに書かれているところがありましたか…。ちゃんと見てから
質問しないとダメですね…。本当にすいません。
今回色々勉強させて頂きました。
本当に感謝感謝です。

なんだか、頼りっぱなしだったのでちょっと一人で勉強してきます。
また何かあったら質問しにくるかもしれませんが、その時はよろしく
おねがいします。

No. 2346 # ゆき 2001/12/07 (金) 20:10:52
はじめまして。ゆきと申します。当方の環境はSUN Sparc Solaris2.51
です。

会社でC++の環境が必要になり、UnixもC、C++もさほど詳しくない私が、
インターネットを頼りにgcc2.95.3のインストールをしました。
それで、渡されたC++のソースをコンパイルしたのですが、以下のような
エラーが出ます。渡した本人は、エラーが出るのはおかしいと言って
います。
% gcc -lstdc++ -o hello hellocpp.cpp
hellocpp.cpp:1: iostream: No such file or directory
hellocpp.cpp:2: string: No such file or directory

これは要するにインクルードファイルを見に行けない状態なんだと
思いますが、gccのインストールが上手くいっていないのでしょうか?
ちなみにC++のソースは以下です。
---------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;

class CHello
{
private:
        string m_strOut;
public:
        CHello(){ m_strOut = "Hello World!"; };
        virtual ~CHello(){};

        void print(void);
};

void CHello::print(void)
{
        cout << m_strOut << endl;
}

int main()
{
        CHello chHello;
        chHello.print();
}
---------------------------------------------------------
何でも良いので、何かお気付きのことがありましたら、教えて下さい。
よろしくお願い致します。

No. 2347 # ふくし [E-mail] 2001/12/07 (金) 21:08:54
>2346 ゆきさんはじめまして
iostream じゃなくて iostream.h、
string じゃなくて string.h だと思います。
h は Header に通常つく拡張子です。

No. 2348 # ふくし [E-mail] 2001/12/07 (金) 22:42:14
とかいって、<iostream> だけの書き方もあるんですね。
手元の cpp ソースは、<iostream.h> でコンパイルできていたのを
<iostream> だけにしたら同様のエラーが出たので、
「.h を付けてみる」をトライする価値はあると思いますが。

No. 2349 # ゆき 2001/12/09 (日) 01:32:16
>2348 ふくしさんへ

お返事ありがとうございます。土曜は会社に行っていないため、教えて
頂いたことはまだ試していないのですが、日曜に休日出勤(サービス)
でもして試してみようかと思います。ところで、申し訳ありませんが、
もしご存知であれば、もう少し教えて頂けないでしょうか。

今回、私にソースを渡した人は、Linux環境で試したらしいのですが、
コンパイル時は gcc -lstdc++ -o hello hellocpp.cpp
というふうにしろと言っています。調べてみるとオプション-lは、
ライブラリファイルへのリンクだと知りました。こちらのマシーンを
覗いてみますと、-lstdc++は、どうやら/usr/local/bin/libstdc++を
見に行くように指定しているようなのですが、これがファイルではなく、フォルダなのです。そういうことで、よろしいんでしょうか?

しかし、仮にlibstdc++フォルダを見に行くとしても、libstdc++直下
には、iostream(.h)もstring(.h)もありません。これらは、
usr/local/bin/libioというフォルダの中にありました。

ふくしさんは、iostream.hとすると上手くいったということですが、
libstdc++フォルダの中に、iostream.hもstring.hもあったと認識して
よろしいのでしょうか?もしそうなら、それらが入っていない私の
環境は、やはりインストール時の失敗ということでしょうか・・・

もしよろしければ、お教え頂けませんか?よろしくお願い致します。

No. 2350 # 68user 2001/12/10 (月) 11:00:48
>>2348 ふくし
> とかいって、<iostream> だけの書き方もあるんですね。
C++ はよく知りませんが、namespace 対応の C++ コンパイラならば
.h を省略できるはずです。

gcc は長らく namespace への対応がダメダメでしたが、少なくとも
gcc-2.95.3 では OK です。

で、iostream はヘッダファイルです。libstdc++ はライブラリです。
ヘッダファイルがないと言われているのにライブラリのことを気に
するのは間違っています。

>>2349 ゆき
> これらは、usr/local/bin/libioというフォルダの中にありました。
それはライブラリのソースでしょう。それが /usr/local/bin/ に
あるのはおかしいです。

> コンパイル時は gcc -lstdc++ -o hello hellocpp.cpp というふうに
> しろと言っています
-lstdc++ は不要です。C で -lc が不要なのと同じで、わざわざ指定
しなくても勝手に libstdc++ はリンクされます (指定してもいいですが)。

> -lstdc++は、どうやら/usr/local/bin/libstdc++を見に行くように
> 指定しているようなのですが
どうしてそのように判断しましたか? 普通 -lhoge とすると /usr/lib/libhoge*
というファイルがリンクされます。


手もとの環境を見てみると、ヘッダファイルとライブラリは以下の
場所に置いてありますので、参考にしてみて下さい。

    Solaris8 + gcc-2.95.2
        /opt/sfw/include/g++-3/iostream
        /opt/sfw/include/g++-3/iostream.h
        /opt/sfw/lib/libstdc++.a.2.10.0
        /opt/sfw/lib/libstdc++.so.2.10.0

    FreeBSD + gcc-2.95.2
        /usr/include/g++/iostream
        /usr/include/g++/iostream.h
        /usr/lib/libstdc++.a
        /usr/lib/libstdc++.so

    Linux + gcc-2.95.2
        /usr/include/g++-3/iostream
        /usr/include/g++-3/iostream.h
        /usr/lib/libstdc++-libc6.1-2.a.3
        /usr/lib/libstdc++-libc6.1-2.so.3

結局のところ、うまくインストールできていないのではないかと思います。

No. 2351 # yama 2001/12/10 (月) 12:45:31
はじめまして。yamaと申します。
Perlで困っています。
STDOUTの初期化の方法がわかりません。
print文にてhtmlを出力していますが、途中でエラーが発生
した場合、出力済みの情報を初期化し、エラーメセージを出力したい
と考えています。
*STDOUT="";
としましたが、エラー表示以前の分も出力されます。
このようなことは不可能なのでしょうか。
プロバイダ環境はUNIXでApacheのサーバです。
なお、UNIX、Apache、Perlのバージョン
等詳しくは聞いていません。

No. 2352 # 68user 2001/12/10 (月) 13:07:35
>>2351 yama
> このようなことは不可能なのでしょうか。
不可能です。stdout に出力したものは既に出力済かもしれませんし、
まだバッファに溜っているかもしれませんが、それをクリアする
方法はありません。出力済かどうかを判断する方法もありません。

# Java Servlet だとできるんですけどね。

というわけで、自前でバッファリングしましょう。

No. 2353 # yama 2001/12/10 (月) 15:29:39
>>2352 68userさんへ

お返事ありがとうございます。
「不可能」ですか。
ロジックを変更し、必要なチェックを先にするようにします。

今後ともよろしくご指導ください。

No. 2354 # ゆうすけ [E-mail] 2001/12/10 (月) 17:30:08
いつも、お世話になっています。ダウンロードについてなんですが、
.lzhのファイルをコンパイルすることは、UNIXではできるのでしょうか。
もしできるようであれば、ダウンロードの仕方を教えてください。
ちなみに、僕は「Solaris2.6」を使っています。お返事お願いします。

No. 2355 # ふくし [E-mail] 2001/12/10 (月) 18:09:03
>2354
ゆうすけさん、はじめまして。
「lzh のファイルを UNIX でコンパイルする」
と言われると複数に解釈できて、
1)UNIX 上にある複数のファイルを固めて lzh の圧縮書庫を作る
2)どっかから持ってきた lzh の圧縮書庫を展開して、
        その中の C とかのソースツリーをコンパイルする
のどっちでしょう。

で、どっちもできます。ただし条件があって、お使いの Solaris に
lha というプログラムがあるかどうかです。
コマンドラインで「lha」と打ち込んでみてください。
ある場合は使い方が表示され、ない場合は「ない」と起こられます。

で、ある場合はそれを使い、ない場合はインストールします。
で、使い方/インストールの仕方ですが、
とりあえず「lha」というコマンドの名前までわかったので、
あとは検索するなりしてがんばってみて、
どうしてもダメだったらまた聞いてください。
そのとき上の1)なのか2)なのかそれ以外なのかも教えてください。

>2350
68userさん、フォローありがとうございます。
ていうかいつもご苦労様です。
ちょっとでも負担を軽減しようとがんばってみたんですが
役に立たず、申し訳ありません ;;;

No. 2356 # ゆき 2001/12/10 (月) 18:42:36
>>2350 68userさんへ

お返事ありがとうございました。下記2349の中で、私は勘違いな発言を
していたようです。
>-lstdc++は、どうやら/usr/local/bin/libstdc++を見に行くように
>指定しているようなのですが
とありますが、違いますよね。libstdc++の中の、libstdc++.aという
ライブラリファイルを見に行ってるということですね。ということは、
----------------------------------------------------
hellocpp.cpp:1: iostream: No such file or directory
hellocpp.cpp:2: string: No such file or directory
----------------------------------------------------
と言うエラーで見に行っているインクルードファイルは、自動的にリンク
されなければならないということでしょうか。私の行ったインストールは
どうもおかしいような気がしてきました。

ちなみに、こちらの環境は以下のようになっていました。
/usr/local/bin/libstdc++/iostream
/usr/local/bin/libio/iostream.h
/usr/local/bin/libstdc++/libstdc++.a
libstdc++.so*は検索しても無いような状況でした。やはり再インストール
をしてみようと思いますが、上記フォルダ階層はそもそも間違いで、
正しいインストール先というのは、インストール時に指定できるように
なっているものなのでしょうか?何度も申し訳ありませんが、よければ
その辺りのことを詳しくお教え願えませんでしょうか?
よろしくお願い致します。

No. 2357 # 68user 2001/12/10 (月) 19:11:40
>>2356 ゆき
> libstdc++の中の、libstdc++.aというライブラリファイルを見に行ってる
> ということですね。
インクルードとリンクは全く別物です。インクルードファイルと
ライブラリには何の関係もありません。

> 自動的にリンクされなければならないということでしょうか。
インクルードファイルはリンクするものではなく、インクルードする
ものです。

-v を付けてコンパイルすると以下のようになります。

% g++ -v a.cpp
Using builtin specs.
gcc version 2.95.2 19991024 (release)
  /usr/libexec/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Di386 -Dunix -D__FreeBSD__=4 -D__FreeBSD_cc_version=420000 -D__i386__ -D__unix__ -D__FreeBSD__=4 -D__FreeBSD_cc_version=420000 -D__i386 -D__unix -Acpu(i386) -Amachine(i386) -Asystem(unix) -Asystem(FreeBSD) -D__EXCEPTIONS -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__ELF__ a.cpp /tmp/ccFhD943.ii
GNU CPP version 2.95.2 19991024 (release) (i386 FreeBSD/ELF)
#include "..." search starts here:
#include <...> search starts here: ← ここ★
  /usr/include/g++ ← ここ★
  /usr/include ← ここ★
  /usr/include ← ここ★
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
  /usr/libexec/cc1plus /tmp/ccFhD943.ii -quiet -dumpbase a.cc -version -o /tmp/cctFu943.s
GNU C++ version 2.95.2 19991024 (release) (i386-unknown-freebsd) compiled by GNU C version 2.95.2 19991024 (release).
  /usr/libexec/elf/as -v -o /tmp/ccvXl943.o /tmp/cctFu943.s
GNU assembler version 2.10.0 (i386-unknown-freebsd4) using BFD version 2.10.0
  /usr/libexec/elf/ld -m elf_i386 -dynamic-linker /usr/libexec/ld-elf.so.1 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/libexec/elf -L/usr/libexec -L/usr/lib /tmp/ccvXl943.o -lstdc++ -lm /usr/lib/libgcc.a -lc /usr/lib/libgcc.a /usr/lib/crtend.o /usr/lib/crtn.o

★を付けた部分でインクルードファイルの取り込みが行われます。

この環境では、標準のインクルードファイルは /usr/include/g++、
/usr/include である、ということがわかります。そこにインクルード
ファイルが置いてあれば何もエラーは起こらないはずです。

で、★の部分が終わったら初めてライブラリが出てくるわけで
(ld がライブラリをリンクする)、★がうまくいかないのに
ライブラリが云々と悩むのはおかしいです。

> /usr/local/bin/libstdc++/iostream
> /usr/local/bin/libio/iostream.h
> /usr/local/bin/libstdc++/libstdc++.a
これはソースで、本来不要なファイルではないですか? /usr/local/bin/ に
ファイルを展開して、そこで make したんじゃないかと想像しますが。

> 上記フォルダ階層はそもそも間違いで、
おそらく間違いでしょう。

> 正しいインストール先というのは、インストール時に指定できる
> ようになっているものなのでしょうか?
ソースからコンパイルしたなら、make 時に指定することもできますが、
普通はデフォルトのディレクトリにインストールします。

とりあえず package を利用してはどうですか?
    ftp://SunSITE.sut.ac.jp/pub/sun-info/Solaris/sparc/2.5/gcc-2.95.3-sol25-sparc-local.gz

No. 2358 # 68user 2001/12/10 (月) 22:38:31
>>2337 aki
おっと、見逃していました。

> /etc/groupのファイルのrootグループに追加するだけで
> はいけないのでしょうか。
root グループにはなれますが、root にはなれません。
sudo など、setuid などで検索してみてください。

No. 2359 # kanji 2001/12/11 (火) 14:58:52
はじめましてkanjiと申します。コマンドのページを良く利用させて頂いています。感謝です。
UNIXの掲示板で、Linuxの質問をよろしいでしょうか。
本題の質問なのですが、初めてRedHat Linux7Jをインストールし、Webサーバの構築を考えています。
ですがPCMCIAのNWカードを認識してくれません。(3com 3c589Dを使用)
そこでPCMCIAのドライバをインストールしようとpcmciacs.3.1.30.tar.gz を入手し、
#zcat pcmciacs.3.1.30.tar.gz | tar xvf -
#cd pcmciacs.3.1.30.tar.gz
#make config
を行なうと、configエラーが出ます。ソースツリーが無いと言われます。
ソースツリーとはどのようなもので、どうやってインストールすれば良いのでしょうか。
よろしくお願い致します。

No. 2360 # ふくし [E-mail] 2001/12/11 (火) 15:26:42
>>2359 kanji
pcmciacs.3.1.30.tar.gz を展開した
pcmciacs.3.1.30 以下のディレクトリ構造がソースツリーでは。

% cd pcmciacs.3.1.30.tar.gz
ではなくて、
% cd pcmciacs.3.1.30
では?
〜.tar.gz は圧縮ファイルです。
cd は Change Directory です。

No. 2361 # 68user 2001/12/11 (火) 15:34:40
>>2360 ふくし
> pcmciacs.3.1.30 以下のディレクトリ構造がソースツリーでは。
Linux も pcmcia も全然知りませんけど、
    http://www.linux.or.jp/JF/JFdocs/PCMCIA-HOWTO-2.html
などを見るに、カーネルソースを展開して、そこに pcmciacs*.tar.gz を
展開して、make config && make all && make install してモジュールを
インストールすべきなのに、カーネルソースツリーが存在していないので
エラーになってるんじゃないでしょうか。

>>2359 kanji
> configエラーが出ます。
具体的にどういうエラーが出るかをちゃんと書けば、何が問題か
わかる人にはわかるでしょう。

# 僕は残念ながら わからない人です。

No. 2362 # kanji 2001/12/11 (火) 15:48:57
>>2360 ふくし
>>2361 68user
すみません、わかりました。
ありがとうございました。

カーネルソースの展開が抜けているのでしょう。
早速やってみます。

No. 2363 # inaba 2001/12/12 (水) 15:01:21
初めまして、inabaと申します。

>>2359 kanji
3com だったら、ディフォルトで認識してくれると思いますが…。
ただ、network と pcmcia の起動順が逆なので失敗しているのかも。
# cd /etc/init.d
# ./pcmcia restart
# ./network restart
と入力してみてください。
# ifconfig
で、eth0 が認識されていませんか?
見当違いだったらすみません。

No. 2364 # わたなべ [E-mail] 2001/12/12 (水) 19:16:45
はじめまして、渡邊と申します。
ネットワークプログラムに興味があり、POP3 クライアントを作ってみよう(2)の POP3 クライアントサンプルを動作させてみました。
お聞きしたいのは、このままでちゃんとメールが表示されるプロバイダーと表示されないプロバイダーがあり、ニフティでは途中で固まってしまいます。認証までは動いているようで、LISTので止まっているようです。
どうすれば、いいか教えていただけませんか?

No. 2365 # 68user 2001/12/12 (水) 22:11:13
>>2364 わたなべ
> LISTので止まっているようです。
http://x68000.startshop.co.jp/~68user/net/sample/pop3-client.pl ですね?

telnet で pop3 サーバと話してみるとどうなりますか?

LIST 送信の後の
    while (<SOCKET>){
        m/^\.\r\n$/ && last;

    while (<SOCKET>){
        print "[$_]";
        m/^\.\r\n$/ && last;
として実行すると何が表示されますか?

Windows マシンで動かしていますか? (環境はちゃんと書きましょう)
もしそうなら
    socket(SOCKET,PF_INET,SOCK_STREAM,0)|| die ...
の後に
    binmode(SOCKET);
という行を追加するとどうなりますか?

No. 2366 # kuw 2001/12/12 (水) 23:55:57
はじめまして。いつも勉強させてもらっています。

>>2364 わたなべ
> LISTので止まっているようです。
私も、pop3 クライアントを自作したときに、同じことを経験しました。
そのときは、pop3 サーバが NT で、
> +OK IMS POP3 Server 0.87 Ready
というものだったのですが、
LIST の返事に、"." のみの行がなかったのです。
> +OK 0 message (0 octets)
> 0 messages (0 octets)
こんな感じでした。

No. 2367 # kuw 2001/12/13 (木) 00:01:49
>>2366 kuw
>LIST の返事に、"." のみの行がなかったのです。
補足です。
その時は、LIST のかわりに STAT を使うようにして回避しました。

No. 2368 # わなたべ 2001/12/13 (木) 00:13:29
>>2365わたなべ
早速ありがとうございます。
試してみましたが、状況は変わりません。
環境は、Windows2000のクライアントで、サーバーはFreeBSDです。

telnet pop.nifty.com 110
USER ******
PASS ******
LIST
とやる分には、NIFTYでもちゃんとリストされます。

print "[$_]";を追加してみると

[+OK <**********>
][+OK
][+OK
と表示されます。
print $_;
にしてみると、
+OK <**********>
+OK
+OK
で止まってしまいます。
いづれも、Ctrl+Cで終了しないと終わりません。

ところがiij4uでは、
+OK IIJ ************
+OK ************
+OK ************
+OK 5 messages****
と言う感じで正常に動いています。

尚、binmode(SOCKET);を追加してみても状況に変化はありません。

iij4uとNIFTYの差は、+OKの後にiij4uの方は文字があるのですが、NIFTYは何も無いことぐらいです。
att.ne.jpでも動きませんでした。
もちろんtelnetで直接タイプすればリストも問題ありません。
よろしくお願いします。

No. 2369 # わなたべ 2001/12/13 (木) 00:22:04
>>2364わたなべ
kuwさんありがとうございます。
STATを使う件、本日世が明けたら試してみます。
ありがとうございます。

No. 2370 # 68user 2001/12/13 (木) 01:07:12
>>2366 kuw
> LIST の返事に、"." のみの行がなかったのです。
>> +OK 0 message (0 octets)
>> 0 messages (0 octets)
なるほど。もう少し詳しくお聞かせ下さい。

それは mail box にメールがたまっていなかったときのみ . が
ないのでしょうか? あるいはメールがたまっていても . がない
のでしょうか?

また、その POP3 サーバアプリケーションの名前は
何かわかりますか?

ちなみに . をもってレスポンスの終了と見なしている根拠は
http://ring.ip-kyoto.ad.jp/pub/doc/RFC/rfc1939.txt
> When all lines of the response have been sent, a
> final line is sent, consisting of a termination octet (decimal code
> 046, ".") and a CRLF pair.

> Examples:
> C: LIST
> S: +OK 2 messages (320 octets)
> S: 1 120
> S: 2 200
> S: .

です。

No. 2371 # kuw 2001/12/13 (木) 06:44:11
>>2370 68user
>それは mail box にメールがたまっていなかったときのみ . が
>ないのでしょうか? あるいはメールがたまっていても . がない
>のでしょうか?
メールがたまっていなかったときのみです。
メールがたまっているときは、
> +OK 1 messages (1146 octets)
> 1 1146
> .
となります。

>また、その POP3 サーバアプリケーションの名前は
>何かわかりますか?
EMWAC の IMS POP3 Server 0.87 です。
5, 6 年前に NT にインストールして以来、そのまま使っているので、
かなり古いものだと思います。
# この数年、NT を全くいじっていないので、最近の事情はわかりませんが・・・

>ちなみに . をもってレスポンスの終了と見なしている
もちろん、これは正しい仕様だと思いますし、
同じ仕様の MUA やメールチェッカーも多いと思います。

No. 2372 # わたなべ 2001/12/13 (木) 09:57:20
>>2364わたなべ
おはようございます。
昨日の続きですが、下記のようシンプルにしてテストしてみましたが、状況に変化はありませんでした。
よろしく御願いします。

---------------------------------------------
print SOCKET "USER $username\r\n";
print SOCKET "PASS $passwd\r\n";

print SOCKET "LIST\r\n";

while (<SOCKET>){
    m/^\.\r\n$/ && last;
        print $_;
}
print SOCKET "QUIT\r\n";
---------------------------------------------

上記の結果
■AT&Tに接続した場合
+OK <283**.10082***86@mail.att.ne.jp>
+OK
+OK
(ここで止まってしまうので Ctrl+C)
^C
%

■iij4uに接続した場合
+OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp>
+OK Password required: ******@**.iij4u.or.jp
+OK ******@**.iij4u.or.jp has 2 messages (2182 octets)
+OK 2 messages (2182 octets)
%

-------------------------------------------------------------------------------
■telnetでAT&Tに接続した場合
telnet ***.att.ne.jp 110
+OK <283**.10082***86@mail.att.ne.jp>
USER ********
+OK
PASS ********
+OK
LIST
+OK
1 958
2 960
.
QUIT
+OK

■telnetでiij4uに接続した場合
telnet **.iij4u.or.jp 110
+OK IIJ POP3 Server (**.iij4u.or.jp) starting. <128**.1008***94@**.iij4u.or.jp>
USER ********
+OK Password required: ******@**.iij4u.or.jp
PASS ********
+OK ******@**.iij4u.or.jp has 2 messages (2182 octets)
LIST
+OK 2 messages (2182 octets)
1 1090
2 1092
.
QUIT
+OK IIJ POP3 Server (w/mdir) (m-**.iij4u.or.jp) signing off

No. 2373 # 68user 2001/12/13 (木) 13:02:37
>>2371 kuw
ありがとうございます。ということは、その POP3 サーバのバグと
判断してもよいようですね。

>>2372 わたなべ
では、残るは改行コードくらいですかね。

    select(SOCKET); $|=1; select(STDOUT);
    $|=1; # 標準出力のバッファリングも OFF
    print SOCKET "USER $username\r\n";
    print SOCKET "PASS $passwd\r\n";
    print SOCKET "LIST\r\n";
    while (sysread(SOCKET, $_, 1) ){ # read(2) を使って読む。
            printf("$_ [%02X] ", unpack('c',$_));
    }
    print SOCKET "QUIT\r\n";

を試して下さい。

No. 2374 # わたなべ 2001/12/13 (木) 15:01:43
>>2373わたなべ
試してみました。

+[2B] O [4F] K [20] ・・・・・・ [3E]
[0D] + [2B] 0 [4F] K [4B] [20]
[0D] + [2B] 0 [4F] K [4B] [20]
[OA]

で止まります。
NIFTYもAT&Tもこうした現象なのですが解決方法は無いものでしょうか?

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2375 # 68user 2001/12/13 (木) 15:27:01
>>2374 わたなべ
    接続時のリプライは +OK....\r
    USER に対するリプライは +OK \r
    PASS に対するリプライは +OK \n
という変なサーバであることがわかります。
# このサーバは RFC1939 に準拠していないと思います。このサーバ
# アプリの名前を教えていただけますか。

で、\r や \n だけでも行末と見なすように、
    m/^\.\r\n$/ && last;

    m/^\.(\r\n|\r|\n)$/ && last;
として下さい (*A)。

で、これだけの対処では多分挙動は変わらないでしょう。

> [OA] で止まります。
ということは、相手が LIST に対するリプライをしていない、
つまり「LIST を受け取ったと解釈していない」ということなので、
やはり SOCKET がテキストモードになっており、
    print SOCKET "LIST\r\n";

    print SOCKET "LIST\r\r\n";
となって送信されているのではないかと推測します。

*A の変更を行った上で、再度 binmode(SOCKET) を挿入してみて下さい。

# Windows には詳しくないのですが、これでよいんでしたっけ?>どなたか

No. 2376 # わたなべ 2001/12/13 (木) 16:54:32
>>2375わたなべ
試してみましたが、状況は変わりませんでした。
AT&TにPOP3のアプリケーションを確認したところ、qmailだそうです。
サーバーのOSは、教えてくれませんでした。
よろしく御願いします。

No. 2377 # ARGUN 2001/12/13 (木) 21:04:50
初めまして。初めてなのに、こんな事を書くのはあつかましいとも思うんですけど、どうにもならないのでフ゜ロク゛ラムを教えて欲しいんです。
実は、課題がでたんですけど分からないので。
内容ですが
Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。     と言う物です。   それで、
#include <stdio.h>
#include <stdlib.h>

main(int argc, chr*argv[])
{
int i;
FILE *fin;
char ss[256];

if(fin=fopen("sourse","r") == NULL){
printf("オーフ゜ン出来ない.\n");
exit(1);
}
char(

までは出来ました。それから先が全くわかりませんので、宜しくお願いします!

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2378 # kuw 2001/12/14 (金) 00:06:24
>>2373 68user
>その POP3 サーバのバグ
その通りです。
しかも、今回の件には、まるで関係ない話みたいですね。失礼しました。

>>2377 ARGUN
>Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、他のファイル(trans.c)に書き出す。
ならば、
cat sourse.c | tr a-z A-Z > trans.c
で良いのでは?

No. 2379 # 68user 2001/12/14 (金) 11:44:19
>>2376 わたなべ
> 試してみましたが、状況は変わりませんでした。
ほほぅ、そうですか。それは困りましたね。

> qmailだそうです。
qmail 付属の qmail-pop3d かな? djb モノがそんな挙動を
するのはあまり考えにくいですが、telnet ではできている
のですから、怪しいのは改行コードです。

現在は sysread で読んでいるのですから、受け取ったデータは
即座に表示されるはずです。ということは、何も表示されない=
送ったリクエストが正しく解釈されていないということなので、
    print SOCKET "LIST\r\n";

    print SOCKET "LIST\n";
にしてみたり、いろいろ試してみて下さい。

どうにもならなかったら、試したスクリプトを見せて下さい。

>>2377 ARGUN
> Cのフ゜ロク゛ラムファイル(sourse.c)の英小文字をすべて英大文字に変換し、
> 他のファイル(trans.c)に書き出す。
まずは、sourse.c の内容を trans.c にコピーするところから
やってみては。

No. 2380 # /tk 2001/12/14 (金) 14:50:00
>>2364 わたなべ
> LISTので止まっているようです。
うちのサーバが qmail + vpopmail だったのでテストしてみたところ
同様の現象が再現しました。

うちの場合
      print SOCKET "LIST\r\n";
の直前の行に
      sleep 1;
を挿入したらうまく動きましたので
試してみてはいかかでしょう。

No. 2381 # わたなべ 2001/12/14 (金) 20:50:32
>>2380わたなべ
/tkさんのアドバイスどおりに
sleep 1;
を入れたら無事に動きました。
本当に有り難うございました。
大変お騒がせしましたが、これで落ち着いて眠れます。
今後ともよろしく御願いします。

No. 2382 # ARGUN 2001/12/16 (日) 22:07:44
68userさん。Kuwさん。有難うございます。
でも、長く入院してたせいで冗談抜きで全く分からないんです。
コピーってどうやるんですか?
甘えだとは思うのですが、迷惑でしょうがプログラム載せて貰いたいのですがおねがいします。聞けるような仲間がいないので。

No. 2383 # kuw 2001/12/17 (月) 04:35:58
>>2382 ARGUN
> プログラム載せて貰いたい
--- a2A.c ここから ---
main () {
        system("tr a-z A-Z < sourse.c > trans.c");
}
--- a2A.c ここまで ---
a2A.c をコンパイルしてできた実行ファイルを、
sourse.c と同じディレクトリにコピーして実行してみてください。
運が良ければ、お望みの trans.c が作成されます。

とりあえず、課題はこれで良いとして、本気でプログラムの勉強を
したいのならば、68user さんのアドバイスを参考にがんばってください。

あとは、
>>2230 68user
> - 課題だからといって、問題をそのまま掲示板に書き込んでも反感を買うだけ、
>  ということを書き込む前に推測できるようになる。
> - 仮に課題だとしても、そうは見えないようにうまくカムフラージュ
>  できるような文章力を身につける。努力しているという姿勢を
>  アピールする。
という金言も参考にされると良いでしょう。

No. 2384 # 68user 2001/12/17 (月) 07:40:47
>>2382 ARGUN
google で「C言語 ファイル コピー」などと検索すれば、
サンプルプログラムなんてたくさん見付かります。
「C言語 小文字」だってたくさん見付かります。

http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
で質問するのもよいでしょう。

ここで回答をもらえることを期待するよりもそっちの方が早いです。

>>2380 /tk
> sleep 1;
うーむ、改行コードは大外しでしたか。ということはその POP サーバは
リクエストを 1行だけ読んでいるのではなく、select か何かでバッファに
たまっているリクエストを全て解釈しようとしていた、ということですかね?

本来 USER 送って +OK を受け取って、PASS 送って +OK を受け取って、その後
LIST を送らねばならないところを、一気に USER、PASS、LIST を送って、その後
リプライを受け取るという手抜きをしていたからまずかった…と。

No. 2385 # hiro 2001/12/18 (火) 13:04:35
こんにちは。
環境は
OSはSolaris 2.6、printerはEPSON LP8200PS2(PSプリンタ)です。

質問は、
lpコマンドで印刷用紙のサイズを指定したいのです。
HELPなどを見てもそれらしきoptionがないのですが、用紙サイズを
A4とかB4とかに任意に設定するoptionはありませんか?

よろしくおねがいします

No. 2386 # cgi超初心者 2001/12/18 (火) 14:35:51
はじめまして。最近cgiの勉強をはじめたんですが、なかなかうまくいきま
せん。
さっそく質問ですがローカルでcgiの動かし方がわからないんです。一通り
関連サイトを回ってみたのですがどうしても駄目なんです。例えば
hello-worldを実行すると

#!C:/Perl/bin/perl print "Content-type:
text/html\n\n; print ""; print "Hello world.; print ";

こうなってしまうんです。プロバイダがcgiの使用を許可してないので
それが原因なのでしょうか?もしそうならなにか方法を教えてください。
よろしくお願いします。

No. 2387 # cgi超初心者 2001/12/18 (火) 14:41:30
ちなみに環境は
windows98,internetexplorer5,プロバイダはocnです。
よろしくお願いします

No. 2388 # CZ 2001/12/18 (火) 18:29:52
>>2386 cgi超初心者
>プロバイダがcgiの使用を許可してない
のは全く関係ありませんので安心してください。
ローカルでCGIの動作確認をする方法を初心者向けに説明したサイトを紹介しておきます。

http://members.tripod.com/~tyanko/s_mokuji.html

No. 2389 # 68user 2001/12/19 (水) 01:45:36
>>2385 hiro
lp -f で できませんでしたっけ。

No. 2390 # スナフキン 2001/12/19 (水) 02:52:22
つかぬ事をお伺いしますが、perlで <+ でファイルオープン時に、開こうとする
ファイルが存在しないとエラーとなりますが、以下の様な処理をしました。
が、どう見てもカッコ悪い(笑)のでこんなケースにはどんな処理をしているか
お聞きしたいのですが・・・

if(!-e $dat_file){# 存在しない時に作成
    if(!open(DAT, ">$dat_file"))
        { &error('オープンエラー', "データファイルの生成に失敗しました。[$dat_file]");}
    close(DAT);
}

#改めて開きなおし
if(!open(DAT, "+<$dat_file"))
    { &error('オープンエラー', "データファイルのオープンに失敗しました。(1)");}
while(<DAT>){
    chomp;
    push(@record, $_);
}

No. 2391 # 68user 2001/12/20 (木) 17:44:24
>>2390 スナフキン
open(DAT, "+<$dat_file") || open(DAT "+>$dat_file") || &error('..');
while(<DAT>){
    ..
}

ってのはどうでしょうね。

あと、perlopentut(1) に参考になることが書いてあるかも
(書いてないかも) しれません。

No. 2392 # スナフキン 2001/12/20 (木) 20:26:30
ウチのマシンの perl はバージョンが古く(5.004_04)なので
perlopentut の情報は見つけられませんでした。

しかしキーワードを検索するといろいろと情報を得る事が出来ました。
if(!open〜 は自分なりの書式なので良く使っていましたが、perlで
杓子定規に覚える事にはあまり意味が無いですね(笑)
いままで使った事の無い sysopen もいろいろ試してみます。

的確なキーワードありがとうございます。

参考になったURL
http://www.wingworld.co.jp/forum/cgi/messages/1931.html
う〜んバージョンを新しくしなければ・・・

No. 2393 # /tk 2001/12/20 (木) 22:11:22
>>2384 68user
> select か何かでバッファに たまっているリクエストを
> 全て解釈しようとしていた、ということですかね?
この辺の仕様(というか実態)は知りませんが
サーバにどのようなリクエストが実際に渡ったのかを
調べるのが、原因究明の早道となるような気がします。
# 実際どのようにすれば, それを調べられるかは分かっていません。

今回の件に関しては, なんとなく
> 一気に USER、PASS、LIST を送って、その後 リプライを受け取る
のが原因かな。 と特に根拠も無くアタリをつけてテストをしました。

別に sleep である必要は全然無いのですが
個別にリプライを受けて -ERR だったら再入力な
スクリプトを書くの面倒だったので…
(あと環境が Windows でしたので)


>>2390 スナフキン
> こんなケースにはどんな処理をしているか
実際にファイルが存在していないのですから
オープンエラーで困る事は無いのだし
むしろエラーになってくれなくては困るという
考え方をしています。

…↑ゴミレスですね。すみません。

No. 2394 # Ka23 2001/12/21 (金) 18:40:42
UNIX プログラミング FAQが以下に移転しています。
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html

http://www.adl.nii.ac.jp/~moro/
暫定っぽいですが(^^;

No. 2395 # Suresh [E-mail] 2001/12/27 (木) 18:08:12
Cクラス(HP UNIX版)ハードDiskをBクラス使用するとき何か
設定必要でしょうか ?
教えって下さい。

No. 2396 # hogehoge 2002/01/02 (水) 09:59:55
access.logは下記のようなもの。$1はエポックタイム
(1970/1/1 00:00:00からの経過秒数)で$3はアクセスした端末のIP。

1009379443.542 20 192.168.16.17 TCP_HIT/200 1694 GET http://www.al4a.com/images/911.gif - NONE/- image/gif
1009379443.604 24 192.168.16.17 TCP_HIT/200 10159 GET http://www.al4a.com/honor.gif - NONE/- image/gif
1009379444.170 11683 192.168.16.17 TCP_REFRESH_HIT/200 59687 GET http://www.al4a.com/links.html - DIRECT/www.al4a.com text/html
1009379446.523 2979 192.168.16.17 TCP_HIT/000 11027 GET http://www.al4a.com/images/al4av2.jpg - NONE/- -
1009379446.526 1472 192.168.16.17 TCP_MISS/000 0 GET http://counter7.tracker.com/c5/id/0/104406 - DIRECT/counter7.tracker.com -
1009379447.026 63 192.168.16.17 TCP_HIT/200 15976 GET http://www.al4a.com/banners/gf1.gif - NONE/- image/gif
1009379447.364 16 192.168.16.17 TCP_HIT/200 10159 GET http://www.al4a.com/honor.gif - NONE/- image/gif
1009379448.331 967 192.168.16.17 TCP_MISS/200 9626 GET http://counter7.tracker.com/c5/id/0/104406 - DIRECT/counter7.tracker.com image/gif
1009379449.997 1504 192.168.16.17 TCP_HIT/200 20456 GET http://www.pornleo.com/banner/pussy10-29.gif - NONE/- image/gif
1009379450.256 3056 192.168.16.17 TCP_HIT/200 15679 GET http://www.al4a.com/images/al4av2.jpg - NONE/- image/jpeg
1009379453.262 148 192.168.16.17 TCP_HIT/200 7049 GET http://www.al4a.com/banners/fc1.jpg - NONE/- image/jpeg
1009379453.301 38 192.168.16.17 TCP_HIT/200 9328 GET http://www.al4a.com/banners/am1.gif - NONE/- image/gif
1009379454.056 1963 192.168.16.17 TCP_HIT/200 21921 GET http://al4a.free6.com/free6.gif - NONE/- image/gif

これを集計して

date time user数
----------------------
2001/12/28 00:00 0
2001/12/28 00:30 0
2001/12/28 01:00 5
2001/12/28 01:30 6

のようにしたいのです。awkファイルは3つあり、それをshellに記述して
一括処理しようとしています。
#syukei.sh
#!/bin/sh
./syukei1.awk access.log|./syukei2.awk|./syukei3.awk > file

#syukei1.awk
#!/bin/gawk -f
{
hour=strftime("%H",$1);minute=strftime("%M",$1);second=strftime("%S",$1)
base=$1-(hour*3600+minute*60+second)
        for(i=1;i<=48;i++){
                if((base+1800*(i-1) <= $1) && ($1 < base+1800*i)){
                        print strftime("%Y/%m/%d %H:%M",base+1800*(i-1)),$3,1
                }
        }
}

#syukei2.awk
#!/bin/gawk -f

{
sum[$2,$3] += $4
}

END {
        for(item in sum){
                split(item, t, SUBSEP );
                printf("%s %s %s %d\n",$1,t[1],t[2],sum[item]);
        }
}

#suykei3.awk
#!/bin/gawk -f
{
        if(length($2) > 0){
                kazu[$2] ++;
        }
}

END{
        for(i in kazu){
                print $1,i,kazu[i]
        }
}

といった感じです。syukei1.awkで
2001/12/28 00:00 192.168.1.2 1
2001/12/28 00:00 192.168.1.1 1(とりあえずエポックタイムを現在時刻に変換し、秒の項はprintしない。あとはIPaddressを取る)
のように加工します。(最後の1は捏造したもの。後々この数をカウントするので)
syukei2.awkで↑の$4を集計。
2001/12/28 00:00 192.168.1.2 5
2001/12/28 00:00 192.168.1.1 6

2001/12/28 00:30 192.168.1.1 2
2001/12/28 00:30 192.168.1.2 4
のように加工します。(userごとに30分刻みで何回アクセスしたか)
最後にsyukei3.awkで↑の$3を集計。
2001/12/28 00:00 2
2001/12/28 00:30 3
のようにdate time user数という形で出力したいんです。
ただ、ここで今問題になっているのが、例えば2001/12/28 01:00〜2001/12/28 01:30の間に一度もアクセスがなかった場合、
その行が表示されません。アクセスがない場合は2001/12/28 01:00 0 0のように表示したいのですが、
どのようにすればいいでしょうか。また、3つファイルがあるんですが、これを一まとめにすることって可能なんでしょうか。
長くなりましたが、ご教授宜しくお願いします。

No. 2397 # ふくし 2002/01/02 (水) 16:16:42
あけましておめでとうございます。
今年もよろしくお願いします。
>>2396 hogehoge
さん:はじめまして
cronで30分に1回httpを叩くクライアントを作っておいて、
そいつ1回しかアクセスしなかったら0アクセス、
そいつも含めてn回アクセスがあったらn-1アクセスではだめですかねー。

No. 2398 # hogehoge 2002/01/02 (水) 17:12:32
あ…、明けましておめでとうございます。
ふくしさんはじめましてです。

今まではcronを使って30分ごとに集計をとる方法でした。
でも、処理に時間がやたらとかかってしまいまして。
それが1日48回もあるかと思ったら…。
それでプログラムの改善と一括処理に切り替えることにしたんですが。
どうにかならないもんですかね…。ふぅ。

No. 2399 # ふくし 2002/01/02 (水) 19:59:37
>>2398 hogehoge
さん:Perl ですいません。こんなんでできそうです。
要は、
ファイルの各レコードについて、
0:00〜0:30、0:30〜1:00、1:00〜1:30、、の各ゾーンに入っているか調べ、
そのゾーンに入っていたら
ゾーン、IP アドレスをキーに持つ2次元ハッシュの値を1にし、
全件調べた後に各ゾーンごとにいくつ IP がたまっているかを出力しています。
ろくにテストしていませんがバグっていたらすみません。


#! perl -w

use Time::Local; # timelocal 関数を使うために必要なモジュールの宣言

(undef,undef, undef, $mday, $mon, $year, undef, undef, undef) = localtime(time); # 今日が何日か
$step = 30 * 60; # 30分刻み

$next = timelocal(0, 0, 0, $mday, $mon, $year); # 今日の0時0分0秒の時刻(epoch からの秒数)
$start = $next - 60 * 60 * 24; # 昨日の0時0分0秒の時刻

%result = ();
while(<DATA>) {
                ($now, undef, $ip) = split;
                for ($from = $start; $from < $next; $from += $step) { # $from は計算開始の時刻
                                $to = $from + $step; # $to は計算終了の時刻
                                if ($from <= $now and $now < $to) {
                                                $result{$from}{$ip} = 1;
                                }
                }
}

for ($from = $start; $from < $next; $from += $step) {
                $num = keys %{$result{$from}};
                ($sec, $min, $hour, $mday, $mon, $year) = localtime($from);
                $year += 1900;
                $mon++;
                print "$year/$mon/$mday $hour:$min:$sec $num\n";
}

No. 2400 # ふくし 2002/01/02 (水) 20:32:15
すいません、<DATA> でなくて
<STDIN> にして標準入力を渡すか、
ファイルハンドルをオープンしてつかってください。
テスト用のコードを修正しわすれました。

No. 2401 # hogehoge 2002/01/03 (木) 00:57:16
ふくしさんありがとうございます。
Perlをそのまま使うことができないのがとても残念ですが、
まだawkも始めたばっかりで、アルゴリズムの解釈なんかが
多々間違っていると思われ、とても参考にさせて頂きたいと思います。
なんとか、awkに変換、反映させてみたいと思います。
とりあえず、このスクリプトがうまくいったら、次は
Perlをやってみたいと思っています。ありがとうございました。
また何かあったら教えて下さいね。

No. 2402 # 名無しさん 2002/01/03 (木) 19:39:40
>>2401 hogehoge
see http://pc.2ch.net/test/read.cgi/unix/1000303370/130-132n
and
http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse

No. 2403 # ふくし [E-mail] 2002/01/09 (水) 21:35:24
いつもお世話になります。
CGI.pm でファイルのアップロードをするときの質問です。
html で

<html>
<body>
<pre>
アップロードするファイルを指定してください。
ファイル名は半角英数字で、空白を含まないでください。
</pre>
<form action="fileup.cgi" method="POST" ENCTYPE="multipart/form-data">
ファイル名:<input type="file" name="fname"><br>
<hr>
<input type="submit" value="OK">
</form>
</body>
</html>

というフォームを作って、

#! perl -w
# fileup.cgi

use CGI;

my($form) = new CGI;
print $form->header("text/html");

my($filename) = $form->param('fname');

$filename =~ m|([^\\]+)$|; # Windows のフルパスから基底ファイル名を取り出す
$newfile = "./gooddir/$1"; # gooddir の下に入れる。

open (OUTFILE,">$newfile") or die "Can't make serverside file because $!\n";
while ($bytesread = read($filename,$buffer,1024)) {
                print OUTFILE $buffer;
}
print <<EOD;
<pre>
アップロードが終了しました。ファイル「$filename」は
$newfile としてアップロードされました。
</pre>
EOD

という CGI を呼び出すとうまくいくのですが、
同じ CGI を、呼び出し側のフォームも CGI.pm で作って

#! perl -w

use CGI;
use strict;

my $title = 'ファイルをアップロードしてください';
my $q = new CGI;
print $q->header();
print $q->start_html();
print $q->start_form(-method=>'form', -action=>'./fileup2.cgi', -enqtype=>'multipart/form-data');

print $q->h2($title);

print '変換するファイルを指定し、[実行] をクリックしてください。<br>',
'(空白のあるファイル名、日本語のファイル名は避けてください)<br>',
$q->filefield(-name=>"fname"),
'<br>'x3;

print $q->submit(-name=>'submit',-value=>'実行');
print $q->endform;
print $q->end_html();

とやると、空ファイルが作成されるだけでうまくアップロードできません。
エラーログには何も出ません。
なにがおかしいのでしょうか?
何かおわかりでしたらご教示願います。

No. 2404 # 68user 2002/01/09 (水) 21:50:33
ん〜、

>>2403 ふくし
> -method=>'form'
post?
> -enqtype=>'multipart/form-data'
enctype?

とか?

No. 2405 # ふくし 2002/01/10 (木) 14:41:14
>>2404 68user
さん、本年もよろしくお願いします。
ん〜、ほんとにそれだけのことでした。;;;
恥の掻き初め(寒)ですね。

最初、-enctype を指定していなかったんです。
そうすると start_form がデフォルトで
application/x-www-form-urlencoded を取るので
失敗していたようです。
(その場合 start_multipart_form を使えばデフォルトが
    multipart/form-data になるようですね)

method も post がデフォルトなので書いていなかったのですが、
html と最大限あわせようと思って質問の直前に書いて、
それで失敗していたのでした。

ハッシュによる名前付け編集の渡しは、
存在しないキーを渡しても無視されるのはなんかわかりますけど、
存在するキーに定義されてない値を渡しても怒られないのは
ちょっと CGI.pm が不便だなあと思いました。
いずれにしても、これらのケースでエラーを出して欲しいです。
(出す方法あったりして、、)

とまれ、ありがとうございました&すいませんでした。
本年もよろしくです。

No. 2406 # 68user 2002/01/11 (金) 17:21:39
proxy サーバに接続後、
    strcpy(request,
                  "CONNECT www2.ggn.net:443 HTTP/1.1\r\n"
                  "Host: www2.ggn.net\r\n"
                  "\r\n");
    write(s, request, strlen(request));
とする。そしたら proxy サーバが
    HTTP/1.0 200 Connection established(CRLF)
    (CRLF)
などと返してくるので、
    read_size = read(s, buf, BUF_LEN);
    write(1, buf, read_size);
でレスポンスを読み取る (↑これは手抜き)。その後は
    SSL_load_error_strings();
して、普通におはなし。

>>2160 Nira
では
    ERR_load_crypto_strings();
    ERR_load_SSL_strings();
    OpenSSL_add_all_algorithms();
を追加する必要がある、ということでしたが、FreeBSD 4.4-RELEASE では
付けても付けなくてもうまくいきました。

お仕事では、Windows+Borland C++ Builder 5.0 でやらなきゃ
いけないのが欝です (C++ 知らんし、Windows でプログラムを
組んだことがないし)。HTTP 用モジュールは用意してあるみたい
だけれど、使い方がさっぱりわからんなぁ。


>>2405 ふくし
> 存在するキーに定義されてない値を渡しても怒られないのは
> ちょっと CGI.pm が不便だなあと思いました。
perl 5.005_03 付属の CGI.pm を見る限りでは、エラー検出する
方法はないようですね。

> 本年もよろしくです。
こちらこそよろしくお願いします。

No. 2407 # 68user 2002/01/11 (金) 17:38:54
>>2406 68user
う、一行目が欠けてしまって意味不明に。

一行目は
    「お仕事で proxy サーバ経由の SSL 通信を行う必要があったので、メモメモ。」
でした。

No. 2408 # ぶちお 2002/01/11 (金) 17:48:49
UNIXを勉強したい人ってはじめは何をすれば良いか教えてください!
ほんとにくだらない質問をしてすいませんが、おねがいします!!

No. 2409 # 68user 2002/01/11 (金) 23:04:07
>>2394 Ka23
> UNIX プログラミング FAQが以下に移転しています。
遅くなりましたが反映しました。ありがとうございました。

>>2408 ぶちお
> UNIXを勉強したい人ってはじめは何をすれば良いか教えてください!
本屋に行ってインストール記事の載っている雑誌か、
インストール本を買うか、あるいは Turbo Linux とかの
商品 (1万程度) を買うのがいいんじゃないですかね。

その後はネット環境を整えたり、プログラミングしたり
好きなことをすると。

No. 2410 # ぶちお 2002/01/14 (月) 21:38:40
68userさんありがとうございました!!助かりました!また質問するときがあると思いますがそのときはよろしくおねがいします!!

No. 2411 # ぶぶ 2002/01/15 (火) 19:03:05
こんにちは。
私はWindowsにActivePerlを入れてCGIやっています。
今回、PPMを使おうと思って、DOS窓でppmと入力したら、
下のようなメッセージが出てきました。

Failed to load PPM_DAT file
Can't use an undefined value as a SCALAR reference at
C:/Perl/site/lib/PPM.pm line 1586, <DATA> line 36.

なんかエラーが出てるようなのですが、PPM.pmというのはいじった
覚えがないし、他のファイルもいじった覚えはなし、上のエラーが
何を意味するのかよく分からないし、Googleなどで検索かけてもみ
たのですが、同じ様な事例は見つからず困っています。

どなたか分かる方いましたら、どうすればいいのか教えてください。
お願いします。

Win98,ActivePerl5.6.0(Binary build 623)

No. 2412 # ふくし [E-mail] 2002/01/15 (火) 22:27:55
>>2411 ぶぶ
さん、こんばんは。

めったに ActivePerl は使わないのですぐにはわからないんですが
手もとの環境では C:/Perl/site/lib/PPM.pm の
1586 行目近傍は以下のようになっていました。

1584:if (defined($location)) {
1585:  if ($location =~ /[^\/]$/) { $location .= "/"; }
1586:  $package = $location . $package . ".ppd";
1587:}

もしぶぶさんの環境でも同じであれば、
とりあえず 1586 行目の直前に

warn "location: $location package: $package\n";

とでも入れてみて、
$location と $package の値を見てみたらいかがでしょうか。

でも、うちの環境(同じ Windows98)で ppm と入れたら
その現象が再現できなかったので、
再インストールでもいいかなという気もしますが。

No. 2413 # ふくし 2002/01/15 (火) 22:47:49
>>2412 ふくし
自己レスれす。(寒

>とりあえず 1586 行目の直前に
>warn "location: $location package: $package\n";

これ、自分でもやってみましたけど、
C:\> ppm
と打っただけではココは通らないみたいでした。

ぶぶさん、
PPM.pm の 1586 行目はぼくと同じですか?
(バージョン、レベルは同じなんだけどなァ)

あと、ほんとに
C:\> ppm

と打っただけで怒られます?
それともなんか実のあること(パッケージのインストールとか)を
やろうとしてます?
後者の場合は入れたコマンドを教えてください。

No. 2414 # ぶちお 2002/01/16 (水) 00:22:40
たびたびすいません!!今学校でパソコン同士のデータのやり取りを、Cプログラムでなんとかやろうとしているのですがわからんのですー!先生はfopenとか使えばできるだろー!!というのですが本を見てもかいてないようなかんじで(_m_!)なにしろ未熟者でわからんのですー!よろしければおしえてもらえますか?

No. 2415 # 68user 2002/01/16 (水) 03:52:02
>>2414 ぶちお
> 今学校でパソコン同士のデータのやり取りを、Cプログラムで
> なんとかやろうとしているのですがわからんのですー!
さて困ったものですね。あまりにもひどい質問の仕方です。
    http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
は読んでいただけましたか?

パソコンって何ですか? UNIX ですか? Windows ですか?
それ以外ですか? 具体的な OS 名とそのバージョンは?

データのやり取りって具体的に何をしようとしていますか?
フロッピーからデータを読み込むことですか? LAN 経由で
ファイルを読むことですか? RS-232C 経由でデータを
やりとりすることですか?

今後、こういう調子の質問を続けるつもりでしたら、僕は
お相手を致しかねますのでよろしく。

No. 2416 # ぶぶ 2002/01/16 (水) 13:47:46
ふくしさん、お返事ありがとうございます。

PPM.pmの1586行目付近は、下のようになっていました。

1577:unless ($PPDfile && $$PPDfile) {
1578: foreach (keys %repositories) {
1579: my $location = $repositories{$_}{'LOCATION'};
1580: if ($location =~ /[^\/]$/) { $location .= "/"; }
1581: $$PPDfile = $location . $package . ".ppd";
1582: return %PPD if (%PPD = getPPDfile('package' => $$PPDfile,
1583: 'parsertype' => $parsertype, 'PPDfile' => \$$PPDfile));
1584: undef $$PPDfile;
1585: }
1586: return unless $$PPDfile;
1587:}

ちょっと違うみたいですよね。こちらの方が行が短いのでしょうか。

ちなみにDOS窓に入力したのは、

C:\>ppm

これだけです。
PPM のシェルでパッケージのinstallをしようと思っているのですが、
とりあえずPPMを起動するため、入力しているのはppmという文字だけ
です。そして、ppmとだけ入力すると、例のエラーが出るのです。
少ない情報ですが、何か分かりますでしょうか?
やはりActivePerlを入れ直してみた方が良いのでしょうか?

よろしくお願いします。

No. 2417 # 68user 2002/01/16 (水) 14:25:46
>>2416 ぶぶ
先ほど、Windows2000 に ActivePerl を入れる必要が
あったので試してみたのですが、ppm とだけ
打つと
    PPM interactive shell ...
と出てエラーは出ませんでした。

インストールしたのは最新の build 631 (perl-5.6.1) です。
再インストールは悪くない選択肢ではないかと思います。

No. 2418 # ふくし 2002/01/16 (水) 14:35:51
>>2416 ぶぶ
さん:

いま会社で ActivePerl の環境がないのでテストできませんが、
>return unless $$PPDfile;
ここで
>>Can't use an undefined value as a SCALAR reference
(スカラーの参照として、未定義値は使えません)
ですよね。

$$PPDFile というのは、
$PPDFile というスカラー変数に
スカラーへの参照(別のモノを指し示すもの)が入っていると考えて、
そのスカラーの値を返そうとしているわけですが、
そのとき $$PPDFile に undef が入っているのでくだんのエラーが
出ています。

たぶん $PPDFile という変数にもっと上の方でスカラーへの参照を
セットすることを期待して動いていたのですが、
その期待が裏切られているようです。

(その上でいろいろしているのも、$$PPDFiles つまり
    $PPDFiles が指し示すスカラーメモリに対してで、
    $PPDFiles にどのような論理で何が入っているかは
    下のコードからは不明です)

・・・という風にさかのぼって研究しても勉強になると思いますが、
(意外ともうちょっとでパキッとわかったりして)
いずれにせよこんなアンフレンドリーなメッセージが出て中断するのは
作者の意図と違う動作なので、再インストールでもいいと思います。

No. 2419 # ぶぶ 2002/01/16 (水) 15:10:06
ふくしさん、68userさん、お返事ありがとうございます。

build631をインストールしてみましたら、何の問題もなくPPMの
シェルが起動しました。

インストールしてから、PPM.pmを覗いてみると、1586付近は、
ふくしさんが書かれたものと同じになっていました。

前に入れていたものがおかしかったのでしょうか。入っている
pmファイルがおかしいとは夢にも思わなかったので再インスト
ールを試さずに質問してしまってごめんなさい。

これでやっとパッケージのinstallができます。ありがとうご
ざいました。

PS.
ふくしさん、エラーに関する説明ありがとうございます。
エラーの出る仕組みがよく分かりました。

No. 2420 # 初心者 2002/01/20 (日) 14:29:35
ボーランドC++コンパイラーでC言語のCGIを作ろうと思っているのですがどうしたら良いのでしょうか?
bcc32 -o CGI名 ソース名 でいけるのでしょうか?
よろしくお願いします

No. 2421 # 68user 2002/01/20 (日) 19:06:19
>>2420 初心者
> …でいけるのでしょうか?
試してみた結果どうなりましたか?

No. 2422 # 橋本 [E-mail] 2002/01/21 (月) 15:31:41
メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。

方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。
また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも
設定しています。

"newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。

同じような方法を取られている方がいらっしゃいましたら
設定方法を教えていただけませんでしょうか。
宜しくお願いいたします。

No. 2423 # 橋本 [E-mail] 2002/01/21 (月) 16:41:43
申し訳ありません。環境を全く書いていませんでした。
RedHat Linux7.1.J、Sendmail8.11.5
です。

宜しくお願いします。
本文↓
メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。

方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。
また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも
設定しています。

"newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。

No. 2424 # 68user 2002/01/21 (月) 16:58:44
>>2423 橋本
どのユーザが「newaliases を root 権限で実行できる」ような
設定になっていますか?

また、sudo のログには何と記録されていますか?

No. 2425 # 68user 2002/01/21 (月) 17:18:01
>>2424 68user
だけでは情報が不十分かな…。

sudoers に書いた内容と、「特定のメールアドレスにメールが
届いたらコマンドを実行する」というのをどうやって実現して
いるか (/etc/aliases とか /home/foo/.forward とか) も
書いてください。

No. 2426 # 橋本 [E-mail] 2002/01/21 (月) 19:10:37
>>2424 68user
newaliasesをroot権限で実行できるユーザは"deamon"に設定しています。
理由は、メール受信時に実行されるシェルスクリプトが一体どのユーザで
実行されるか分からなかったため、シェルスクリプト内にメールを送信
するコマンドも記述したところ、"deamon"という送信者名でメールを送信
したため、deamonでシェルスクリプトは実行されると思い設定しました。

ですが、実際はdeamonが実行しているようではないようです。
>>2423 にてcpコマンドなど他のコマンドは動作する。
と記述しましたが、私の勘違いで動作していませんでした。
申し訳ありません。

また全てのユーザに"newaliases"、"cp"コマンドをroot権限で
実行できるよう設定したところ、正常に動作しました。
ですが、全てのユーザに許可してしまうわけにはいかないので、
どうにかして特定のユーザにのみ許可して動作するようにしたいのですが
・・・。

以下設定ログ・設定内容です。
●メール受信時のログ↓
Jan 21 18:20:16 test sudo(pam_unix)[19079]: authentication failure; logname= uid=0 euid=0 tty= ruse
r= rhost= user=daemon
Jan 21 18:20:23 test sudo(pam_unix)[19079]: 2 more authentication failures; logname= uid=0 euid=0 t
ty= ruser= rhost= user=daemon
Jan 21 18:20:23 test sudo[19079]: daemon : 3 incorrect password attempts ; TTY=unknown ; PWD=/ ;
USER=root ; COMMAND=/usr/bin/newaliases

●sudoersに追加↓
deamon ALL= NOPASSWD: /usr/bin/newaliases
deamon ALL= NOPASSWD: /bin/cp

●メール受信時に動作するシェルスクリプト↓
#!/bin/sh
sudo cp /etc/mail/123.txt /etc/mail/456.txt
sudo newaliases
mail -s test mailuser@****.co.jp < /etc/mail/456.txt
exit

長文で申し訳ありませんが宜しくお願いします。

No. 2427 # 橋本 [E-mail] 2002/01/21 (月) 19:21:39
>>2425 68user
「特定のメールアドレスにメールが届いたらコマンドを実行する」は、
(/etc/mail/aliases)に mailuser :"|/etc/mail/mail-program"
と記述しています。

よろしくお願いします。

No. 2428 # 68user 2002/01/21 (月) 19:48:29
>>2427 橋本
> ●メール受信時に動作するシェルスクリプト
で /usr/bin/id > /tmp/id.result などとすれば、どの権限で
動いているのかがわかります。

一般的には、/etc/mail/aliases に
    mailuser :"|/etc/mail/mail-program"
とあるなら、/etc/mail/mail-program というファイルの権限で動きます。

例えば
    % ls -l /etc/mail/mail-program
    -rw-r--r-- 1 hoge wheel 46632 Sep 19 02:30 /etc/mail/mail-program
ならば hoge 権限で動く、ということです。

No. 2429 # 橋本 [E-mail] 2002/01/21 (月) 21:31:13
>>2428 ですが、
mail-programの権限は以下のようになっています。↓
-rwxr-xr-x 1 root root 165 1・21 19:55 mail-program

また /usr/bin/id > /tmp/id.resutl の結果は以下になりました。↓
uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)

やはり"deamon"で実行されているようです。sudoresにも正しく設定して
いるつもりなのですが、シェルスクリプトは動作しません。
deamonに関してはsudoが使えないのでしょうか。

何かよい方法ありましたら教えてください。
宜しくお願いします。

No. 2430 # 68user 2002/01/21 (月) 21:34:18
>>2429 橋本
…ふむ。

deamon でなく daemon です。sudoers を修正してみて下さい。

No. 2431 # 橋本 [E-mail] 2002/01/21 (月) 21:52:17
>>2429 橋本

どうもありがとうございます。
deamonではなく"daemon" に修正したところ上手くいきました!

とてもお恥ずかしいですが、すごくうれしかったです。
ありがとうございました。

No. 2432 # ふくし [E-mail] 2002/01/23 (水) 17:20:59
こんにちは。ヒサブリに質問です。

下のような CGI で euc、sjis の文字列をブラウザに表示します。

#! perl -w
# ~/public_html/cgi-bin/moji.cgi

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = 'こんにちは';
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'euc', 'sjis');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

コード自体は EUC で書きました。
ブラウザの設定を EUC にすると、
当然のように、EUC 部分は正しく、sjis 部分は文字化けになります。
(本当は sjis 部分は半角カナになりました)

http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: こんにちは
sjis: 、ウ、・ヲヒ、チ、マ
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

これ、ブラウザの設定を sjis にすると、
euc も sjis も文字化けになります。
これはなぜでしょう?

http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: 、ウ、・ヲヒ、チ、マ
sjis: 痔宍痔・ヲ射痔蔀痔煮
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

で、下のように出力する文字列を URL から取得します。

#! perl -w
# ~/public_html/cgi-bin/moji.cgi

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = $q->url_param('greeting');
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'euc', 'sjis');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

こうすると、ブラウザの設定を euc にすると、
なんと、euc も sjis も正しく表示されます。

http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示)
euc: こんにちは
sjis: こんにちは
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

ブラウザの表示を sjis にすると、euc 部のみ正しく表示されます。

http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示)
http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: こんにちは
sjis: 、ウ、・ヲヒ、チ、マ
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

これはなぜでしょう?
サーバーの OS は FreeBSD 2.2.8-RELEASE、
言語は jperl5.005_03-990612 EUC Version(Latin モードで使用)、
クライアントの OS は Windows 2000 server、
ブラウザーは Netscape Navigator 4.75 です。

No. 2433 # ミング [E-mail] 2002/01/23 (水) 17:33:53
今日は。

Awkで

{AA [$1]++}
END {for (BB in AA) ...........}

とやると、AAの中に有る同じ名前のものが幾つあるか数えてくれると思うの
ですが、Perlではどうやったら同じことが出来ますか?

例えば
@array=(9, 9, 9, 3, 3, 3, 2, 2, 1)
とすると、

9は3個、3は3個、2は2個1は1個あるので、

9=3
3=3
2=2
1=1

としたいのですが、宜しくお願いいたします。

No. 2434 # ふくし [E-mail] 2002/01/23 (水) 18:47:10
>>2433 ミング
さん:

なんとなく似せて書くと

#! perl

@array = (9,9,9,3,3,3,2,2,1);

for (@array) {
        $array2{$_}++;
}

for (reverse sort keys %array2) {
        print "$_=$array2{$_}\n";
}

とか。
「ハッシュ」の機能を使っています。

@array の順番には関係なく、
常に大きな数字から出力していますがいいでしょうか。
(ハッシュを使うと、順不同になるので、、)

No. 2435 # 68user 2002/01/23 (水) 19:31:20
>>2432 ふくし
> Jcode::convert(\$str_sjis, 'euc', 'sjis');
逆ですよー。
    Jcode::convert(\$str_sjis, 'sjis', 'euc');

No. 2436 # Bourbon 2002/01/23 (水) 19:51:30
だれか、solaris8intel_platformをAT互換機で動作する、LANカードを
知っている方いらっしゃいますか?

No. 2437 # ふくし [E-mail] 2002/01/23 (水) 20:04:59
>>2435 68user
あ、ほんとだ、、すみませんいつもいつも、、(_ _)

で、

#! perl -w

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = 'こんにちは';
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'sjis', 'euc');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

だと
euc モードで、どっちの「こんにちは」も正しく表示されるのは
なぜでしょうか?

No. 2438 # 68user 2002/01/23 (水) 20:05:45
>>2436 Bourbon
どの程度「使える」資料なのかは知りませんが、
    ハードウェア互換リスト (HCL)
        http://soldc.sun.com/support/drivers/hcl_ja/
というのがあります。

No. 2439 # 68user 2002/01/23 (水) 20:11:54
>>2437 ふくし
> euc モードで、どっちの「こんにちは」も正しく表示されるのは
> なぜでしょうか?
    http://x68000.startshop.co.jp/~68user/tmp/moji.cgi
を見ても「こんにちは」が正しく表示されますか?

もしそうなら、Netscape4 が自動変換しているのでしょう。Netscape4 は、
文字単位か行単位か知りませんが、ファイルの一部についても自動認識/
自動変換を行っています。

FreeBSD+Netscape4、FreeBSD+Mozilla nightly build で上記 URL を
見ると、必ず片方は化けています。

No. 2440 # Bourbon 2002/01/23 (水) 20:19:26
68userさん
HCLは知っていましたが、見落としている部分がありました。
じっくり読んでみます。ありがとうございます。

No. 2441 # ぶぶ 2002/01/23 (水) 20:21:38
たびたびお世話になります。

おかげさまで、この前使えるようになったPPMで、ImageMagickモジュ
ールをinstallして、使おうと思ったら、何にも反応なしで困っていま
す。いろいろサイトを見て回りましたが、類似問題は見あたらず・・・。

環境は、Perl5.6.1(build631) Windows98です。

この環境に、PPMで、install Image-Magick してImageMagickを入れ
ました。

C:\>ppm
PPM>install Image-Magick
です。

その結果、c:\perl\site\libにはimageディレクトリができていて、
その中にはちゃんとMagick.pmというのもあるようです。

それで、下のを実行してみたのです。

use Image::Magick;

$i = Image::Magick->new;
$i->Read('test.jpg');
$i2 = $i->Clone();

$i->Scale(width=>100, height=>100);
$i->Write('test2.jpg');

すると、Perlそのものは正常に終了する(エラーは出ない)のですが、
test2.jpgはできてないのです。


ちなみに下のようなのも実行してみました。

use Image::Magick;

$img = Image::Magick->new;
$img->Read('test.jpg');
($w,$h) = $img->Get('width','height');

print "Content-type: text/html\n\n";
print "<html><head><title>TEST</title></head>\n";
print "<body bgcolor=\"\#ffffff\">\n";
print "$w / $h\n";
print "<br></body></html>\n";
exit 0;

こちらも、$wも$hも空でした。

test.jpgは存在しているし、どうしてうまく行かないのか、まった
く見当もつかないので、これだけの情報では不足かもしれませんが、
何か分かる方おられましたら、ご指導ください。どうかよろしくお
願いします。

No. 2442 # ふくし [E-mail] 2002/01/23 (水) 20:27:36
>>2439 68user
さん、どうも。

たしかに両方化けずに見えています。
FreeBSD 版では片方化けるんですね。

なるほど、Windows 版 NC はファイルの一部も自動変換、、
しかもブラウザーが渡す URL の文字列は必ず sjis。
これがわかんなくてホボ一日ハマりました。
パラメタはあらかじめ変換しておくのを原則にすればよかったのですが、
表示を見て正しく EUC で入ってくるものと思い込んでいたのです。

No. 2443 # ふくし [E-mail] 2002/01/23 (水) 22:44:03
>>2441 ぶぶ
さん:

1本目のプログラムですけど動きましたよ、、;;;
test.jpg がなくてもちゃんと動きますね。
その場合はおっしゃるような症状になります。
ということで、test.jpg があるディレクトリが
カレント ディレクトリな状態で実行してないとか、、。
test.jpg を C:\test.jpg とかフルパスで指定するとどうなります?

#これ便利だなー^^

No. 2444 # ぶぶ 2002/01/23 (水) 23:34:16
ふくしさん、お返事ありがとうございます。

C:\〜\test.jpg のように、フルパス指定したら動きました。
あと、DOS窓では./test.jpgでもうまくいきました。

でも、CGIとしてAN-HTTPD(ver1.37c/PerlISを利用)を通して
動作させると、CGI(test.cgi)と同じディレクトリにtest.jpg
がある時に、フルパスならうまくいくのに./test.jpgでは、やっ
ぱりうまくいきませんでした。

で、いろいろやっていると、PerlIS.dllを使うとうまくいかず、
Perl.exeを使うとうまくいくことが分かりました。
PerlISの問題だったようです。

でも、とりあえず動作させることができたので、解決です。
ありがとうございました。

#ちなみに同じような処理(画像の縮小拡大)はGDでもできますが、
#jpeg画像を縮小したときの画質はGDよりImageMagickの方が、
#なめらかできれいでした。

No. 2445 # 68user 2002/01/23 (水) 23:40:09
>>2444 ぶぶ
解決したようですが、ふつーは
    $i = Image::Magick->new or die "$!";
    $i->Read('test.jpg') or die "$!";
    $i2 = $i->Clone() or die "$!";
などと、エラーチェックをするものです。

と書こうと思ったら、Read は存在しないファイルを開いても
0 を返さないから、die じゃあダメなんですね。
    $ret = $i->Read('a.gifs');
とかして、$ret を調べて、
    Warning 330: Unable to open file (a.gifs) [No such file or directory]
とかを解析しないといけないらしいです。Image::Magick、ダメすぎ。

>>2443 ふくし
> しかもブラウザーが渡す URL の文字列は必ず sjis。
    http: //host/dir/hoge.cgi?ほげ
とかですか?

No. 2446 # ふくし 2002/01/24 (木) 01:22:45
>>2445 68user
            さん:

>> しかもブラウザーが渡す URL の文字列は必ず sjis。
> http: //host/dir/hoge.cgi?ほげ
> とかですか?

http://host/dir/hoge.cgi?hoge=ほげ
とかです。
CGI には sjis で渡るのに、表示は正常に行なわれます。

No. 2447 # yuji 2002/01/24 (木) 19:12:18
どうも、ご無沙汰しております。yujiです。^^
お世話になっております。

現在、windows2000+apache+activeperlの環境において、
CGI(perl)からapacheの再起動等を行いたいのですが、
apacheのパスにスペースが入っているためか、
コマンドを実行できず、困っております。^^;

具体的には、
パスが、
d:\Program Files\Apache Group\Apache\Apache.exe
のような形です。
実行部分は、
$cmd="d:\\Program Files\\Apache Group\\Apache\\Apache.exe -w -n \"Apache\" -k restart";
system($cmd);
のような形です。
パスのスペース部分をアンダースコアに変更して試してみたりも
したのですが、うまくいかないようでして。^^;

それぞれのフォルダ名にスペースを含めないようにすれば、
解決できるのかもしれませんが、スペースがあった場合に
対応できないものか、と思いまして。

みなさんなら、どうされますか?
もしよかったら、アドバイスを、
どうぞよろしくお願いいたします。

No. 2448 # 68user 2002/01/24 (木) 19:54:35
>>2447 yuji
Windows で perl スクリプトを作ったことがないのでアレですが、
    $cmd="\"d:\\Program Files\\Apache Group\\Apache\\Apache.exe\" -w -n \"Apache\" -k restart";
はどうですか?

>>2448 68user
> http://host/dir/hoge.cgi?hoge=ほげ
まぁ、規格で定まっていない部分ですから仕方ないですね。
IE だと (設定次第ですが) UTF-8 で送ることもありますし。

No. 2449 # 68user 2002/01/24 (木) 19:59:20
>>2448 68user
初めて ActivePerl といふものでプログラムを組んでみました。
やはり "" で囲めばよろしいようで。

DOS 窓から
    C:\> d:\\Program Files\\Apache Group\\Apache\\Apache.exe
とするとダメだけど、
    C:\> "d:\\Program Files\\Apache Group\\Apache\\Apache.exe"
なら OK、というのと同じですね。

No. 2450 # ふくし [E-mail] 2002/01/24 (木) 20:39:18
>>2448 68user
            さん:

>> http://host/dir/hoge.cgi?hoge=ほげ
>まぁ、規格で定まっていない部分ですから仕方ないですね。
>IE だと (設定次第ですが) UTF-8 で送ることもありますし。

えーそうなんだ、、それは困るな。
やっぱり世間の検索エンジンみたいに
hoge=%A4%BD%A4%B2 とかすべきですね。
日本語キーにするなって話もありますが。

No. 2451 # yuji 2002/01/24 (木) 23:10:53
68userさん、アドバイスありがとうございます。^^
おかげさまで、無事コマンドを実行することができました。

DOS窓でもスペースがある場合、実行できなかったため、^^;
スペースを、区切りではなく文字列の一部と認識させるために、
"で括る方法、とても勉強になりました。^^

No. 2452 # 68user 2002/01/28 (月) 05:54:06
>>2451 yuji
Windows 2000 とかだと、エクスプローラーでフォルダをドラッグし、
コマンドプロンプトにドロップすれば、
    "c:\WINNT\program files\"
などと "" 付きでフルパスが展開されます。エクスプローラーで
ファイルのフルパスを簡単に取得する方法はないのかなぁ。

>>2450 ふくし
> hoge=%A4%BD%A4%B2 とかすべきですね。
そうですね。ただ、詳しくは知らないんですが、遷移先にどんな文字
コードを使っているかを伝えられるような送信方法もあったはずです。
RFC になってたかなぁ。


今日の大発見:
    cd - で一つ前にいたディレクトリに戻れる! (sh, csh, tcsh で確認)
    これは知らんかったなぁ。

No. 2453 # 宮村 2002/01/28 (月) 18:40:51
file.1 file.2 ... file.9を一括で
file-1 file-2 ... file-9に変換したいのですがどうすればよいでしょう?
稚拙な質問で申し訳ありません
使ってるのは tera term です。

No. 2454 # 2002/01/28 (月) 21:59:57
>>2453 宮村
TeraTermにそんな機能はないだろ。

No. 2455 # CZ 2002/01/28 (月) 23:25:59
No. 2453 # 宮村
ここなど参考にしてみては。
http://www.nurs.or.jp/~asada/FAQ/UNIX/section2.6.html

No. 2456 # 68user 2002/01/29 (火) 07:06:40
>>2454
そういう物言いをしたいなら、2ch へどうぞ。

No. 2457 # 宮村 2002/01/29 (火) 14:56:23
できました。教えてくれた方、ならびにカキコ有無にかかわらず少しでも考えてくれた人とてもありがとうございました。これで単位がもらえます。

No. 2458 # とっしー 2002/01/29 (火) 19:21:26
はじめまして、とっしーです。
知っている人がいたら、何かいいお知恵をお願いします。

CGI上でソケット通信をして、他のサーバからデータを取り込み
ブラウザ上にてデータ表示をしているのですが。
ソケット通信をするサーバが2個あり1番目のサーバタイムアウト後
2番目のサーバに対してソケット通信をしたいのですが、
sub aaa{
    $SIG{ALARM} = sub{exit 1;};
    alarm($timeover);

    $socket = IO::Socket::INET->new();
            〜
}
上記のようなタイマでタイムアウトを検出しても、このサブルーチンの
起動元までリターンしません。(T_T)
起動元までリターンするような、プログラム方法等があればお教えください。

No. 2459 # 68user 2002/01/29 (火) 21:02:34
>>2458 とっしー
うーん、まずは exit してプロセスが終了してるんだから、
どこにも戻りようがない、というところから始めましょうか。

で、どう書くのが正しいのかなぁ。

No. 2460 # かいと [E-mail] 2002/01/29 (火) 21:25:35
はじめまして。かいとです。
こちらのサイトにある「HTTPクライアントを作ろう(C言語版)」を利用させていただきました。
ありがとうございます。そこで、1つ質問なのです・・・・
connect()でタイムアウト時間を指定したいのですが、できるのでしょうか?
ちなみにOSはSolaris2.7、コンパイラはWorkshopのccを使ってます。
どうぞよろしくお願いします。

No. 2461 # 68user 2002/01/29 (火) 21:42:36
>>2460 かいと
ノンブロッキングソケットを使うと、connect を呼ぶとすぐに
制御が帰ってきます。僕はノンブロッキングソケットを使った
ことがないので、これをキーに検索してみて下さい。

No. 2462 # snow 2002/01/29 (火) 23:14:02
初めまして。snowと申します。
今、8ビットJISで作成されたファイルをSJISのファイルに変換しようと思っているのですが、中々上手く行きません。どなたか教えて下さい。お願いします。
因みに今までは、Pro*Cのプログラム上で、単語毎にjis8touj関数を使用していました。

No. 2463 # 68user 2002/01/30 (水) 00:29:20
>>2462 snow
jis8touj って何かと思ったら
    http://ecip01.cc.kurume-it.ac.jp:8888/ab2/coll.141.9/JFPDEV/@Ab2PageView/2444?
これですか?

Solaris only の、しかもあまり利用者が多そうでない
ライブラリの話なのですから、何がどううまくいかないか
書かないと回答はもらえないでしょう。

No. 2464 # Bourbon 2002/01/30 (水) 09:38:42
基本的なことで、ほんとにすいません。どなたか、solaris8のGUIで
Windowsのような[Print]、[Alt]+[Print]のようなハードコピーを
するやり方をご存知の方は教えてください。よろしく

No. 2465 # CZ 2002/01/30 (水) 12:52:07
>>2464 # Bourbon
まったく知らない領域のことなのですが、恥を忍んで。

「Solaris ハードコピー」で検索をかけた限りでは
http://www.advac.co.jp/download/gpr_dl.htmlのような
プリントサーバソフトウェアにはそういった機能が
付いていることが多いようです。

こんなのも見つかりましたが、参考になるでしょうか。
http://www.aitech.ac.jp/ie/~milabo/unixmanual/man0.html#19

No. 2466 # ふくし [E-mail] 2002/01/30 (水) 14:06:07
>>2464 Bourbon
            さん:

solaris じゃなくって Linux でしたけど、
やはりハードコピーが必要になって gimp というペイントソフトの
機能を使ったらできました。
solaris で gimp は走ったかなー?

No. 2467 # ふくし [E-mail] 2002/01/30 (水) 14:09:50
Perl の質問です。
わけあって、プログラムの終端に goto で飛んでいます。
(CGI なので、exit だと、mod_perl に移植したときに
    mod_perl ごと死んでしまうと聞いたので)

で、

goto FIN if(事情);
...
FIN:

sub サブルーチン {
...
}

と書くと、サブルーチン定義のところで syntax error になるんですが、

goto FIN if(事情);
...

sub サブルーチン {
...
}

FIN:

だと大丈夫です。なぜでしょうか〜?

No. 2468 # 68user 2002/01/30 (水) 21:17:14
>>2464 Bourbon
xwd とかじゃあダメですか? あるいは Solaris と Windows
両方に VNC を入れて、Windows 側から Solaris の画面を
キャプチャ、とか。Solaris 標準の CDE でキャプチャする
方法は知りません。

>>2467 ふくし
perl の構文解析のバグなんでしょうね。

    FIN:
    ;
    sub サブルーチン {

なら OK のようです。

No. 2469 # へにか [URL] 2002/01/30 (水) 23:23:29
ちょっと脱線A^^;
>>2466 ふくし
会社のSolaris(多分8)では、gimpが立ち上がりました(親切な方がコンパイルしてくれたっぽい)。
とはいえ、
>>2467 ふくし
CDEは嫌いなので使ってないので、CDEの標準な方法は知りません・・・

No. 2470 # へにか [URL] 2002/01/30 (水) 23:25:44
>>2469 の、
>>2467 ふくし
は、
>>2468 68user
の間違いです。汚してしまって、すみません。

No. 2471 # ふくし 2002/01/31 (木) 02:07:24
>>2468 68user
                    さん:
お、バグですか!^^
最新バージョンで試してレポートしちゃる!^^

>>2469 へにか
                    さん:
gimp 走りますか! 最近 solaris が増えてきたので、
役に立つかも。Alt+ScreenShot 系のキャプチャーは
gimp に限ります。そぅとぅ〜便利です。
そのまま流れるように編集できるし。
最近なんか solaris の仕事多いんだけど気のせいかな?
ココの問い合わせも増えてますよね。

No. 2472 # 2002/02/02 (土) 21:40:44
>>2467 ふくし
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl1.html
ここの・・・


8. exit()は使用できない

exit()は使用できません。代わりに Apache::exit()関数が用意されています。 以下の判定でexit関数を他の関数にオーバライドできます。

use subs qw(exit);

*exit = $ENV{MOD_PERL} ? \&Apache::exit : sub { CORE::exit };

No. 2473 # ふくし 2002/02/04 (月) 05:47:44
>>2472
                さん:
ありがとうございます! それは使えそうですね。
use Apache するのかな。(あ、調べますしらべます ^^)

No. 2474 # fairytale 2002/02/04 (月) 11:52:21
いつもお世話になります。
solarisでマシンにSICIカードを取り付けテープデバイスに装着させる場合、マウントするにはどのようにすればよいでしょう?
簡単でよいので教えてください。

No. 2475 # 68user 2002/02/04 (月) 12:38:10
>>2474 fairytale
テープって mount できるんでしたっけ。

僕はいつも mount せずに
    % tar cf /dev/rmt/0 .
とかやってますが。

No. 2476 # tarbo 2002/02/04 (月) 19:00:04
tar cvf - . | ...と書いてある‘-‘の意味を教えて下さい。

No. 2477 # 68user 2002/02/04 (月) 19:08:09
>>2476 tarbo
標準入力 or 標準出力です。

大抵、man tar の -f オプションのところに書いてあります。

No. 2478 # まい 2002/02/06 (水) 19:43:27
始めまして。ツバサと申します。
さっそくですが、質問させて下さい。
こちらのネットワークプログラミングの基礎知識を元にFTP送信処理をC言語で作成しています。
あるマシンへの送信が上手く行かないのです。
PORTコマンドのレスを読み込む時にread関数でエラーになってしまいます。
レスが返って来ないという事があるのでしょうか?
ユーザーの認証などでは問題なくレスを取得できているようなのです。
それも、そのエラーが出るのはある特定のマシンへの時だけです。
何かお分かりになる事がありましたら、お願いします。
あいまいな質問で申し訳ありません。

No. 2479 # ツバサ 2002/02/06 (水) 19:46:28
すみません。
No.2478の書き込み時に遊び用のHNで送信してしまいました。
なので、内容で名乗っている名前と表題に出ている名前とが
違っています。
こんな理由なので、ご容赦下さい。

No. 2480 # ui 2002/02/07 (木) 11:51:20
質問があります。
solaris2.6で例えば自マシンの/dev以下に、他マシンの/etc以下を
mountする時の、書式を教えてもらえないでしょうか?すみません

No. 2481 # 68user 2002/02/07 (木) 12:12:02
>>2478 まい
> PORTコマンドのレスを読み込む時にread関数でエラーに
> なってしまいます。
「エラー」って具体的に何が起こるんですか?

>>2480 ui
> solaris2.6で例えば自マシンの/dev以下に、他マシンの/etc以下を
> mountする時の、書式を教えてもらえないでしょうか?すみません
NFS を使いたいわけですか? ならばこちらなど。
    http://www.google.com/search?hl=ja&q=mount+solaris2.6+nfs&lr=lang_ja

でも、/dev に /etc を mount するのは多分うまくいかないと
思いますよ。デバイスにアクセスできなくなるし。

No. 2482 # ui 2002/02/07 (木) 13:10:05
68userさん
ありがとうございます。
勉強します。

No. 2483 # まい 2002/02/08 (金) 13:39:50
68userさん、ありがとうございます。
read関数の戻り値が-1だったのですが、errnoを刈り取っていなかったので、
実ははっきりとしたエラー原因がわかっていないのです。
今、そのエラーが出るマシンでのテストができない状況にあるので、確認する
事もできずにいます。
何か情報がつかめましたら、また質問させていただきたいと思っていますので、
よろしくお願いします。

No. 2484 # 68user 2002/02/09 (土) 03:53:02
>>2483 まい
> read関数の戻り値が-1だったのですが、errnoを刈り取って
> いなかったので、実ははっきりとしたエラー原因がわかって
> いないのです。
そうですね。errno の値に加えて、再現性があるかどうかなども
はっきりしないので、もうちょっと調べてみて下さい。

No. 2485 # yuusuke 2002/02/11 (月) 09:06:06
いつも、お世話になっています。質問があるんですが・・・
「Solaris2.6」の環境で動画ファイル(.aviなど)をファイルに落とす
方法がありますか?
「spilt」をやってみても、膨大なファイルの量になってしまいます。
何か、良い方法があったら、教えてください。

No. 2486 # usr 2002/02/12 (火) 16:14:54
(質問)
テープ装置がない端末でテープ装置がある端末のテープ装置にマウントするにはどうしたらよいでしょうか?
どなたか教えてください、よろしくお願いします。
なお、端末同士の、mountは一応出来ます。

No. 2487 # ふくし [E-mail] 2002/02/12 (火) 16:39:06
いつもお世話になっています。質問です。
perlbug コマンドを使って Perl エンジンのバグを起票したのですが、

    Connected to ???.???.???.??? but sender was rejected.
    Remote host said: ???.???.???.??? Your site is blacklisted as a spam haven.

と言われて生成したメールが受け取られませんでした。

お前が使っているサーバーは spam の踏み台になるサイトとして
ブラックリストされているので、メールを受信しないということのようですが、
    http://www.ordb.org
で調べてもどこにも使っているサーバーを発見できませんでした。

また、サーバーの管理者にも連絡を取りましたが(Microsoft Exchange です)
そのようなクレームは見当がつかないと主張していました。

perl.com がどのような論理で上の拒否を行っているか知りたい、
できれば担当者にメールして聞きたいのですが、
どうすればいいかお分かりでしたらご教示ください。

No. 2488 # 名無し 2002/02/12 (火) 17:34:11
いくら現在は大丈夫だと主張していても、過去にそんなことが
あったのかもしれません。。

管理人に、不正中継をしないことをよーく確認してから、
削除要求を出すように言うしか方法はないと思うんだな。

どこかの不正中継リストに登録されちゃっているから拒否されるんだから、
perlbugやらのMLを探したら、どこを見ているかがわかるのかな・・

No. 2489 # 68user 2002/02/12 (火) 17:37:37
>>2485 yuusuke
> 動画ファイル(.aviなど)をファイルに落とす方法がありますか?
「動画ファイルをファイルに落とす」ってどういう意味ですか?

「動画ファイル」というからには既にファイルになっていると思うのですが、
split が出てくるところを見ると「フロッピーディスクに落とす方法」を
知りたいのですか?


>>2486 usr
mount する必要はなくて、
    http://www.wakhok.ac.jp/~maruyama/Super/section2.10.3.html
じゃあないでしょうか。


>>2487 ふくし
http://dbforums.com/archive/95/2001/08/1/116085
によると、perlbug@perl.org に手動で送ればよいのではないでしょうか。

http://archive.develooper.com/perl5-porters@perl.org/msg06972.html
によると、
    http://www.mail-abuse.org/
じゃないでしょうか。

# どちらもちゃんと英文を読んでいないので、違ったら失礼。

No. 2490 # CZ 2002/02/12 (火) 23:56:50
解答ではないですが。

>>2485 yuusukeさんの質問は、恐らくは動画から静止画を
抜き出したいということではないでしょうか。

No. 2491 # yuusuke 2002/02/13 (水) 11:26:55
>>2489すみません。その通りです。フロッピーに落とす方法を教えてください。
いろいろとご迷惑をお掛けしてすみません。(CZさんを含み)

No. 2492 # 68user 2002/02/13 (水) 22:53:32
>>2491 yuusuke
> フロッピーに落とす方法を教えてください。
ならば、split すればいいと思います。

「膨大なファイルの量」になってしまうのは、元ファイルが
大きければそれは仕方がないでしょう? 何に困っているのか
まだわからないです。

No. 2493 # Hiro [E-mail] 2002/02/14 (木) 06:02:05
はじめまして
Hiroといいます。

Solaris2.6上に、JAVAサーブレットの環境を構築したいと思っています。
j2sdk-1_3_1_02_solsparc.sh
を使ってインストールしました。
その結果
j2sdk1_3_1_02
というディレクトリが作成されインストールもできたようでした。
しかし、バージョンを確認するため
java -version
というコマンドを打ってみると
javaversion"1.1.3"
と返って来ます。
(javaversion"1.3.1"とかえってきてほしいのですが)
おかしいと思いよく確認したところ、2.6のインストールディスクにデフォルトでJAVA(の古いバージョン)が入っていたようで、
/usr/java1.1/
というディレクトリに古いバージョンがインストールされていました。
こういう場合、今からでも古いバーションをアンインストールする方法というのはあるのでしょうか?

No. 2494 # Hiro [E-mail] 2002/02/14 (木) 06:08:15
↓すみません、よろしくお願いします

No. 2495 # 68user 2002/02/14 (木) 10:55:59
>>2493 Hiro
/usr/local/ で j2sdk-1_3_1_02-solsparc.sh を実行すれば
/usr/local/j2sdk1_3_1_02/ ができますよね。で、
    /usr/local/j2sdk1_3_1_02/bin/
に PATH を通せばよいです (/usr/bin/ より前に)。

しかし、今後新しい JVM と置き換えることを考えると、
    - /usr/local/java -> /usr/local/j2sdk1_3_1_02 という symlink を張る。
    - PATH には /usr/local/java/bin を通しておく。
    - /usr/bin/java は /usr/java/bin/java への symlink で、/usr/java は
        /usr/java1.1 への symlink なので、誤って古いものが起動しないように
        /usr/java を削除。それでも心配なら /usr/java1.1 をリネームするか、
        ばっさり削除。
がいいんじゃないでしょうか。

No. 2496 # Hiro [E-mail] 2002/02/14 (木) 12:31:27
>>2495 68user
68userさん、ありがとうございます。

今、手元にSolarisがなく、夜にでも試してみたいと思います。
ところで、御回答いただいた内容からすると、ばっさり削除にひかれました(あまりスキルがないので、万が一誤動作したら自分で気づきづらいので・・)。
しかし、Solarisにおけるアンインストールの仕方というのは、わたしはよくわかっていません。アドバイスいただきましたように、/usr/java を削除し、/usr/java1.1をばっさり削除、というので、システムそのものへの影響というのはとくに考えなくともいいのでしょうか?
すみません、UNIXはよくわかっておらず、とんちんかんな質問をしているかもしれません。
わたしはWindowsの感覚でしかわかっていないので、少し気になってしまいました。

No. 2497 # yuusuke 2002/02/14 (木) 13:01:34
>>2492 68userさんへ

実は、動画ファイルをWindowsのパソコンで見れるようにフロッピーに
落とそうとしたのですが、splitをして出来たファイルがかなりの数に
なって、一つのフロッピーには収まりませんでした。こういう場合、ど
うすればいいのか。また、フロッピーに落としたファイルをWindows上
でどのように結合すればいいでしょうか。まだ、UNIXの経験が浅い為、
いろいろと面倒を懸けてすみません。

No. 2498 # : 2002/02/14 (木) 13:11:44
]

No. 2499 # ふくし [E-mail] 2002/02/15 (金) 01:22:46
>>2497 yuusuke
                さん:

はずしてたらすみません。
split というのはしらないんですけど、
lha かなんかで圧縮してから
tar の -M オプションでマルチボリュームに分割して
Windows 側で tar.exe(あるらしいです)で戻して
lha かなんかで戻すという作戦はいかがでしょう〜

No. 2500 # Hiro [E-mail] 2002/02/15 (金) 08:12:52
>>No. 2495

現状報告します。
まず、
/usr/java1.1
/usr/java
の二つは、ざっくり削除しました。
その後、
/usr/local/java -> /usr/local/j2sdk1_3_1_02 という symlink を張ると同時に
/usr/java -> /usr/local/j2sdk1_3_1_02 という symlink を張りました。
なのでパスは変更していません。
以上をしてからバージョンを確認したところ、きちんと1.3.1との表示がでました。
次にtomcatがちゃんと動くかどうか確認しようとしました。
そのためにhotjava(デフォルトで入っていたブラウザ)を立ち上げようとしたところ、これについては立ち上がらなくなっていました。
なので先ほどNetscapeをゲットしてインストールしようとしているところです。
以上、現段階のご報告まで。
もう少しすすんだらまたここでご報告します。

No. 2501 # tarbo 2002/02/15 (金) 10:38:15
tarでbackupを採る時にtapeを2本目につずけて採る事はできないのでしょうか?

No. 2502 # 68user 2002/02/15 (金) 15:31:40
>>2497 yuusuke
> splitをして出来たファイルがかなりの数に
> なって、一つのフロッピーには収まりませんでした。
ファイルサイズが問題なのではなく、ファイル数が多くなりすぎた
のが問題なのですか?

split -b 1400k などと、1ファイルごとのファイルサイズを指定
できますが、それは使いましたか? (1400k より小さくしないと
フォーマット済 1.44MB FD には入らないかも)

>>2500 Hiro
> /usr/java1.1
> /usr/java
> の二つは、ざっくり削除しました。
あら、消しちゃいましたか。念のため、/usr/java1.1.old などと
リネームしといた方がよいかと思ったのですが、まぁ問題ないですかね。
Solaris2.6 標準の重要なプログラムで java を利用するアプリはない
でしょうし。

うちの場合、1.3.1 のつもりで使っていた java コマンドが実は 1.2
だった (PATH の設定をミスっていた) という情けない失敗もあったりします。


ところで J2SE 1.4 リリースですね。
    http://java.sun.com/j2se/1.4/ja/index.html
Servlet 屋としては正規表現、XML、ロギング API あたりがよさげでしょうか。
まぁこれまでは Perl5Util や Log4j を使っていたのであまり変わりはない
ですけど、なんにせよ標準になるというのはよいことです。

No. 2503 # yashu 2002/02/15 (金) 23:02:05
テスト

No. 2504 # yashu [E-mail] 2002/02/15 (金) 23:04:11
↓ごめんなさい。間違えました。

話は変わりますが、いつも参考にさせていただいてます。
これからも参考にさせていただきます。

No. 2505 # Hiro [E-mail] 2002/02/16 (土) 09:05:39
No. 2502
あのう、ざっくり消した件ですが、hotjavaが立ち上がらなくなったのが影響といえば影響です。
どういう関連でこうなっているのか正確な原因は理解できていません。
明日の夜にまたSolarisをいじる予定です。

No. 2506 # 68user 2002/02/16 (土) 15:26:35
>>2505 Hiro
> どういう関連でこうなっているのか正確な原因は理解できていません。
HotJava は Java で書かれたブラウザで、実行するためには
JDK (というか JRE) が必要だからです。起動できなくなったのは、
    - JDK1.1 と J2SE 1.3 の仕様の違うから
    - 単に HotJava が (J2SE 1.3 の) java コマンドを見付けられないだけ
のどちらかでしょう。

JDK1.1 を入れ直したかったらこちらから。
    http://java.sun.com/products/jdk/1.1/
ただし、現在は 1.1 系列最新の 1.1.8 しか落とせないようです。

他のマシンか、インストール用 CD-ROM から java1.1 だけ
持ってくるのが早いかもしれません (CD-ROM から一部だけ
抜き出すことはできるのかな?)。

No. 2507 # Hiro [E-mail] 2002/02/17 (日) 12:12:28
>>No. 2506
HotJavaが立ち上がらない理由はそういうことなのですか。
JDK1.1を入れなおすと、わたしはまたパスの設定で混乱してしまうかも
しれないので、とりあえずはネットスケープを入れるよう努力してみます。
今晩Solarisをいじりますので、また明朝にでも報告します。

No. 2508 # 68user 2002/02/17 (日) 19:38:44
「ネットワークプログラミングの基礎知識」に「UDP を使ってみよう」を
追加しました。
    http://X68000.startshop.co.jp/~68user/net/

No. 2509 # Hiro [E-mail] 2002/02/18 (月) 10:23:43
ネットスケープですが・・
Some localized components (NetHelp, etc) can not be installed at this time.
Re-run this script if you'd like to try again.
というメッセージがでてインストールできませんでした。
ネットでいろいろ調べたところ、SunのEnglishサイトにバイナリ版
のネットスケープがあったので、ダウンロードしようとしたところ、
まず登録せよとでました。
で、登録して、ログインしようとしたら、できません(泣)
それでさきほどSunのカスタマーへ問い合わせのメールを送ったところ
です。ここまでで作業はとまっています。
また今晩いじる予定です。
しかし、なかなかすすまない。とほほ。

No. 2510 # 68user 2002/02/18 (月) 10:58:22
>>2509 Hiro
Netscape Navigator/Communicator 4.79 は
    http://sunsite.sut.ac.jp/pub/archives/WWW/netscape/communicator/english/4.79/unix/supported/
から落とせます。Solaris 2.6 用はありませんが、2.5.1 用が
そのまま使えるはず。

日本語化したければ、日本語リソースをこちらからどうぞ。
    http://www.imasy.or.jp/~mistral/netscape/download.html

上記ページには
> SunOS 5.5.1 用に はバージョンによっては直接 Netscape から
> 日本語化キットも出ていますので、これ をそのまま使うことも
> できます。
とありますが、見付けられませんでした。

No. 2511 # Hiro [E-mail] 2002/02/18 (月) 16:19:15
>>2510 68user
ありがとうございます。
日本語化の方は4.76が最新なんですね。
ということは英語の方も4.79じゃなくて4.76にしといたほうがいいのだろうか?
pkgではないので苦戦しそうですが(苦笑)今晩トライしてみます。

No. 2512 # Hiro [E-mail] 2002/02/19 (火) 10:25:20
結局、SunのEnglishサイトから紆余曲折の末ダウンロードすることが
できました。まだインストールはできていませんが・・
明後日の夜にまたいじる予定なのでその後また報告します。

No. 2513 # ふくし [E-mail] 2002/02/19 (火) 16:12:09
わけあって他人が書いた MacPerl のスクリプトを
明日までに Unix で動かして結果をレポートしなければならないんですが、
ある入力データセットだとなんとなくうまくいくのに、
別の入力データセットだと Out of memory! になります。
スクリプトの中を一生懸命見る時間がちょっとありません、、。

こんな状態でも、スクリプトをいじるだけですむ
Out of memory! の安直な回避法はひょっとしてあるでしょうか?
FreeBSD 2.2.8-release Perl 5.6.0 です。
確かに仕事のやり方がまずいんですけど、
ちょっとあせっているのでご教示くださいお願いします、、。

No. 2514 # 68user 2002/02/19 (火) 16:15:28
>>2513 ふくし
unlimit とか ulimit でメモリ制限を解除してみるとか。

それで無理なら、別バージョンの perl を使ってみて、
それでも無理なら地道にスクリプト修正します。僕の場合。

No. 2515 # 68user 2002/02/19 (火) 16:15:57
このサーバ、えらい時間がくるってるなぁ。

No. 2516 # ふくし [E-mail] 2002/02/19 (火) 18:57:42
>>2514 68user
            さん:いつもお世話になります。

unlimit で一発でした、、(^^)
誰にどう迷惑掛けてるか知らんけど、
今日は会社にぼくひとりなんでこれで乗り切ります。
大変助かりました!

No. 2517 # 名無し 2002/02/19 (火) 23:21:02
>>2515 68user
ntpdは動いてるの?

No. 2518 # 68user 2002/02/20 (水) 03:36:17
>>2517 名無し
動いていません。

で、さっき動かしましたが、うまく設定できませんでした。やれやれ。

No. 2519 # ふくし [E-mail] 2002/02/21 (木) 16:23:32
いつもすみません。また質問です。
FrameMaker という DTP ソフトの文書から
WebWorksPublisher というソフトウェアで自動生成した
HTML の一部が、Web ブラウザの中で改行してくれません。

|こんにちは、赤|
|ちゃん、私がマ|
|マよ     |
↑こうなってほしいのに

|こんにちは、赤|ちゃん、私がママよ
|       |
|       |
↑こうなってしまう、、

なにぶんにも機械が生成する HTML なので、
人間が肉眼で見ることは難しいのですが、以下のことがわかっています。
・NC で見たときは(スタイルシート有効無効に関わらず)正常に見える
・IE でもスタイルシートを有効にしたときのみ異常に見える

もし何かわかりましたらお教えください。

No. 2520 # ふくし [E-mail] 2002/02/21 (木) 16:54:50
>>2519 ふくし
また自作自演ですみません。
css のなかに
  .code {whitespace:pre}
と書いて、HTML の中に
  <span class="code">〜</span>
と1個でも書くと、
それ以外でも全部 pre 属性になるようです(IEでは)。
IE のバグ説です。

No. 2521 # ふくし [E-mail] 2002/02/21 (木) 18:26:03
>>2520 ふくし
もう少しspecificになりました。
次の条件が揃うと起きるようです。
・IE6 でブラウズする(NC、NE5以下ではオッケー)
・<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
    で始まる
・<table> の中で <span class="code">~</span> を使って文字を修飾している
・stylesheet(今回は content.css)の code クラス定義で
    white-space:pre;(ホワイトスペース文字で改行しない)が定義されている
この条件が揃うと、行がどんどんどんどん伸びていくという
不具合が発生します。

<span class="code">~</span> の変わりに
<code>~</code> だと大丈夫ですが、
それだと字がちょっとちっちゃくなります。

No. 2522 # Hiro [E-mail] 2002/02/22 (金) 08:28:21
うーん・・
けっきょくまだネスケをインストールできていません・・
データは入手できたのですが・・インストールの仕方がなんだかよくわからなくて・・
また今日の夜トライします。

No. 2523 # りんりん [E-mail] 2002/02/22 (金) 20:52:27
買い物カゴシステムでCGIを利用していますが、品目を選んで一度COOKIEにデータが送られた後、再度違う品目を選んでCGIにそのデータを送ると、前のデータが上書きされ、(?消え、)前に選んだ品目は無くなり新しいデータのみになってしまいます。複数のページから品目を選んだり、後から選んだ品目を追加できるようにしたいのですが良い方法はありませんか?また、反対に一度COOKIEに送られたデータはどういう仕組みで空になるのでしょうか?自分でも一応調べてみてはいるのですが、PEALにあまり詳しくないので、どなたかご存じの方がいらっしゃいましたら教えていただけませんか。よろしくお願いします。

No. 2524 # 68user 2002/02/23 (土) 01:57:00
>>2520 ふくし
僕は HTML とか SGML とかには全く詳しくないので、
ここで質問しても何も得られない可能性は高いですよ。
# 質問するなと言っているわけではありません。

>>2523 りんりん
マルチポストうざーい。
    http://www.parkcity.ne.jp/~chaichan/qanda/qa2516.htm

No. 2525 # ふくし [E-mail] 2002/02/23 (土) 12:17:07
>>2524 68user
            さん:
ええと、ここは68userさんにそれ以外の人が質問する部屋ではなくって ;;;
(時々そうなのかな、と錯覚しそうになりますが ;;;
一応みんなで意見の交換、知識の共有をする部屋ですよね。
あと、HTML/SGML は一応ここのお題に即してますよね。
ということで、書かせてもらいました。いつもお世話になっております。
ちょっとは答える方でも活躍しようといつも思っているのですが、
かえって半端な知識を披瀝してご迷惑を掛けているケースも
ままあるようで恐縮です。;;;
精進しますので、よろしくお願いいたします。

No. 2526 # 名無し 2002/02/23 (土) 13:14:01
http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
自分で情報の共有、とかなんやら言ってるんだから、
すべての投稿に対して、ここはおいらが管理人なんだーみたいに
レスしてるみたいだけど、それなら、メールで質問してもらって、
回答を掲載すればいいだけだな。

わざわざ、「掲示板」を設置しているんだから、みんなから情報を
集めようとしてるんでしょ?。

No. 2527 # 68user 2002/02/23 (土) 13:48:34
>>2525 ふくし
> ええと、ここは68userさんにそれ以外の人が質問する部屋ではなくって ;;;
> (時々そうなのかな、と錯覚しそうになりますが ;;;
> 一応みんなで意見の交換、知識の共有をする部屋ですよね。
それはその通りですが、今回の件に関してこの掲示板と、例えば
    http://www.parkcity.ne.jp/~chaichan/bin/qanda.cgi?modefg=9&dumy=0
のどちらで質問した方が解決しやすいかと言えば、後者の方だと
思います。ここの掲示板で深い HTML の話題になったことは一度も
なかったはずなので。

が、ネタ振りのおつもりでしたら いらぬおせっかいでした。

>>2526 名無し
> すべての投稿に対して、ここはおいらが管理人なんだーみたいに
> レスしてるみたいだけど
要は僕が「すいません、わかりません」と書くのがよろしくないと?

基本的に管理人が発言しないような質問・回答の場は (例えば 2ch)、
多人数の有識者が揃わないと成り立たないと考えています。極端な話、
少人数かつ有識者もほとんどいない場合は、結局誰も返答せず
閑古鳥が鳴く可能性が高いことはおわかりでしょう。

で、この掲示板は、管理人が放置プレイをするには規模が小さすぎると
考えているわけです。要は掲示板の規模・形式に応じた運営スタイルの
違いじゃないでしょうか。

それでもやはりうざいと感じておられるのでしたら、しばらく
「わかりません」的な発言は控えてみましょうか。

No. 2528 # ふくし 2002/02/23 (土) 19:28:16
>>2527 68user
                さん:

面白そうなボードの紹介をありがとうございます。
下記の件は本当に困っているので、マルチポストになりますが、
そっちで聞いてみます。

No. 2529 # 高井あた 2002/02/23 (土) 22:09:19
こんにちは。これからWindows98のPerlでソケットを
勉強しようとおもっています。ご厄介になります。
よろしくお願いします。
(手始めにdaytimeクライアントを作ろうと思ってます。)

FYA:手始めにWindows版のtcpdump、Windumpをダウンロードして、
ドキュメントも取ってきて翻訳をExciteに任せたら、すごいことに。

原文 http://netgroup-serv.polito.it/windump/docs/manual.htm

>Under SunOS with nit or bpf: To run tcpdump you must
>have read access to /dev/nit or /dev/bpf*.
>幼虫またはbpfを備えたSunOSの下で: 走ること tcpdump
>アクセスを読んだに違いありません、に /dev/幼虫 あるいは /dev/bpf* .

# SunOSには幼虫デバイスがぶら下がっているのでしょうか?!

>Primitives may be combined using:
>原始人は次のものを使用して組み合わせられるかもしれません:

# 英語も出来ないとだめみたいですね。

No. 2530 # CZ 2002/02/25 (月) 17:58:54
>>2529 高井あた さん

> 原文 http://netgroup-serv.polito.it/windump/docs/manual.htm
これはWinDumpのというよりtcpdumpのドキュメントではないでしょうか。↓に日本語訳があります。

http://www.linux.or.jp/JM/html/tcpdump/man1/tcpdump.1.html

No. 2531 # CZ 2002/02/25 (月) 18:02:30
おっと、WinDump独自の説明はやはり英文で読まなくてはいけないようですが。

No. 2532 # 高井あた 2002/02/25 (月) 22:00:49
ありがとうございます。
日本語のマニュアル頂きました。
より深く使えそうです。

私の環境は、メインマシンにWindows98+Apacheとサブマシンに
FreeBSD+ApacheがおうちLAN(10Base-Tをリバースケーブル)で、
つながっていて、実験につかってます。
それとは別に外界はWindowsマシンのPHS(H")ダイアルアップで
接続しているのですが、無指定でWindumpを起動したらいきなりPPPを
監視始めて、本当に監視して欲しかったLANの方はだんまり…。

それで調べていたのですが、-i で監視インターフェイスを指定するのは
tcpdumpと同じでした。
ただWindumpにはインターフェイスを探すオプション-D があり、
-D を使って使えるインターフェイスを表示して、
そこからインターフェイス名を拾って使うようです。

Telnetでいろいろ見ているんですが、
昨日はchargen に突っ込んでTelnetが固まってリセットする羽目に(笑)。

No. 2533 # Hiro [E-mail] 2002/02/26 (火) 07:57:42
こんばんは。
まだNetscapeのインストールにつまづいています。
経緯を記します(ちょっと長くなりますが・・)ので、なにかアドバイスいただけないでしょうか。
よろしくお願いします。

ーーー

http://www.sun.com/software/solaris/netscape/getnetscape476.html
からjapaneseをクリックし、そこからnetscape4.76をダウンロード

ダウンロードしたファイル名は
Japanese[1].tar.Z

解凍すると・・
NSCPjacom
NSCPjecom
NSCPjpcom
NSCPjucom
という四つのディレクトリができる。
中を見てみるとどれも構造は同じで
install pkginfo pkgmap reloc
というファイルやディレクトリの構成

ここで
pkgadd -d `pwd`
とすると

1 NSCPjacom Japanese(common)Netscape Communicator
                        (sparc)10.4.76,REV=2001.01.17.19.51
2 NSCPjecom Japanese(EUC)Netscape Communicator
                        (sparc)10.4.76,REV=2001.01.17.19.51
3 NSCPjpcom Japanese(PCK)Netscape Communicator
                        (sparc)10.4.76,REV=2001.01.17.19.51
4 NSCPjucom Japanese(UTF-8)Netscape Communicator
                        (sparc)10.4.76,REV=2001.01.17.19.51

とでます。
これら4つの違い?がよくわからず、とりあえず1のみインストールし、successfulはでました。

ただ、その後、起動をどうしてよいものやらわからず、
どこにどうインストールされたのかもよくわからず・・(苦笑)
とりあえずnetscapeをさがしました。

# find / -name netscape
/usr/openwin/lib/locale/ja/netscape
/opt/local/jakarta-tomcat-3.2.4-src/src/native/netscape
/opt/pkg/NSCPjecom/reloc/NSCPcom/lib/locale/ja/netscape
/opt/pkg/NSCPjpcom/reloc/NSCPcom/lib/locale/ja_JP.PCK/netscape
/opt/pkg/NSCPjucom/reloc/NSCPcom/lib/locale/ja_JP.UTF-8/netscape
/opt/NSCPcom/lib/locale/ja/netscape
/opt/NSCPcom/lib/locale/ja_JP.PCK/netscape
/opt/NSCPcom/lib/locale/ja_JP.UTF-8/netscape

全部、ディレクトリでした・・。
なにをしようとしたのかというと、
# netscape &
で起動できるかなあ・・?
と考えたのですが・・
一応、これらディレクトリのある場所でコマンドを打ってみましたが、起動はしませんでした。

その他、netscape 以外にNetscapeというのも見つけ・・

# find / -name Netscape
/usr/openwin/lib/locale/ja/app-defaults/Netscape
/opt/NSCPcom/lib/locale/ja/app-defaults/Netscape
/opt/NSCPcom/lib/locale/ja_JP.PCK/app-defaults/Netscape
/opt/NSCPcom/lib/locale/ja_JP.UTF-8/app-defaults/Netscape
# file /usr/openwin/lib/locale/ja/app-defaults/Netscape
/usr/openwin/lib/locale/ja/app-defaults/Netscape: ASCII テキスト
# file /opt/NSCPcom/lib/locale/ja/app-defaults/Netscape
/opt/NSCPcom/lib/locale/ja/app-defaults/Netscape: コマンドテキスト
# file /opt/NSCPcom/lib/locale/ja_JP.PCK/app-defaults/Netscape
/opt/NSCPcom/lib/locale/ja_JP.PCK/app-defaults/Netscape: コマンドテキスト

で、
/opt/NSCPcom/lib/locale/ja/app-defaults/Netscape
のある場所で
# Netscape &
などは実行してみましたが、やっぱり起動はなされませんでした・・

以上まででいきづまっております・・
どうすれば起動するのでしょうか・・
(というか、インストールができているのかもはっきりとはしておらず・・)
アドバイスのほど、よろしくお願い致します。

No. 2534 # 68user 2002/02/26 (火) 09:06:50
>>2533 Hiro
とりあえず
> 2 NSCPjecom Japanese(EUC)Netscape Communicator
を入れてみて下さい。

No. 2535 # Hiro [E-mail] 2002/02/26 (火) 10:24:59
>>2534 68user
ありがとうございます。
今晩またいじりますので、やってみます。

2点わかれば教えていただきたいのですが

1、その場合、いったんインストールした
1 NSCPjacom Japanese(common)Netscape Communicator
はアンインストールしたほうがいいでしょうか?

2、あと起動方法ですが、netscapeがある適当な場所をさがして
# netscape &
と打ってみる、という方法でいいでしょうか?

よろしくお願いします。

No. 2536 # 68user 2002/02/26 (火) 11:03:11
>>2533 Hiro
実際にやってみました。

> http://www.sun.com/software/solaris/netscape/getnetscape476.html
> からjapaneseをクリックし、そこからnetscape4.76をダウンロード
サイズは 0.99MB だと思うのですが、これは日本語パッケージというか、
日本語 locale 用の設定ファイルです。

この前に English を選ぶと 16MB くらいのパッケージが落とせますので、
これをインストールします。pkgadd すると
    1 NSCPcom Netscape Communicator
                                  (sparc) 10.4.76,REV=2000.11.07.14.36
と出るはず。

実行ファイルは /opt/NSCPcom/netscape。メニューが英語でよいなら
このままで。

メニューを日本語化したいなら Japanese.tar.Z の方を入れます。とりあえず
2 だけ入れて
    % env LANG=ja_JP.eucJP /opt/NSCPcom/netscape
と実行すると、一部フォントが欠けてしまいました。
# そういえば昔 Solaris+Netscape の環境を使ってたときは
# リソース設定してたような気も。

まともに見られなくなったので
    # rm -rf /opt/NSCPcom/lib/locale/ja
として英語版に戻しました (pkgrm の使い方を知らないので)。

2 を入れてから 1 を入れようとすると conflict するようなので、
ひとつだけ選んでインストールすればよいでしょう。

No. 2537 # Hiro [E-mail] 2002/02/26 (火) 16:51:37
>>2536 68user
ありがとうござます
先に英語版入れないといけなかったのですか(苦笑)。
今晩試してみます。その後また報告します。

No. 2538 # 小僧 2002/02/26 (火) 17:13:51
始めまして、小僧といいます。
ここのトップからいける、Unixコマンド集にはいつもお世話になって
いるのですが、掲示板は今日始めて見つけました。
本を読んでも、ネットで調べてもわからない事があるので質問させてください。

シェルで、Telnetを実行し、別のホスト(仮名:X)にログインし、
コマンドを実行したいのです。

方法は、ファイルにTelnetで実行したいコマンド等を
記述し、それをパイプ(or リダイレクト?)で
実行すればいいと思っているのですが・・・
あまりに簡単すぎる事だから、本にも載っていないのでしょうか?

実行環境は、AIX4.3です。
インストールしたばかりなので、何か設定ファイルみたいな
ものが必要なのかな、とも思っています。

アドバイス、宜しくお願いいたします。

No. 2539 # CZ 2002/02/26 (火) 19:28:54
No. 2538 小僧 さん

もしやるとすれば、
・`telnet' でホストに接続
・ユーザ名が要求されるまで待つ
・ユーザ名を入力
・パスワードが要求されるまで待つ
・パスワードを入力
・コマンドを入力
といったところでしょう。Tera Term Pro(Windows版のTelnetクライアント)では、そんなマクロで自動ログイン機能を実現しています。

利用可能であれば `rsh' でやったほうがずっと楽とは思いますが。

No. 2540 # 小僧 2002/02/26 (火) 19:55:15
CZさん

返信、ありがとうございます。
記載されたレスの中で、質問をさせてください。
・ユーザ名が要求されるまで待つ
と、ありますが、「待つ」というのは
Sleepコマンドで適当な時間待つ、という事でしょうか?

誠に勝手で申し訳ございませんが、
ソースレベルでご教示して頂ければ幸いです。
お粗末ですが、私が作成したファイルを掲載します。

-----実行ファイル Start-----

#!/bin/ksh
cat telnet_file | telnet

-----実行ファイル End -----

-----telnet_file Start-----

open HOST_NAME
UserName
Password
date

-----telnet_file End -----

-----実行結果 Start-----

telnet> 試行中...
HOST_NAME に接続されました。
エスケープ文字は '^]' です。
getwinsize:ioctl: 指定されたファイルは ioctl システム・コールをサポートしていません。
接続がクローズされました。

-----実行結果 End -----


もちろん、HOST_NAMEやUserNameなどは、実際の環境に則している
値を設定しています。

宜しくお願いいたします。

No. 2541 # こうた 2002/02/26 (火) 21:42:35
OCNのADSLアクセスIP8「フレッツ」のサービスでの
PPPOEのLAN型接続において、
固定グローバルIPを割り当てたPC(サーバー)に対して、
外部のPCから(インターネット経由で)アクセスすると、HOST検索にやたら時間がかかります。(約18秒)
時間がかかっているのは、WINSOCKのgethostbyaddrという関数です。
上記の不具合を解決する方法を知っていましたら、教えていただけないでしょうか?ブローバンド・ルータに原因があるのかと思い、買い替えましたが、結果は同じでした。ちなみに、pingは0.1秒以内に帰ってきます。

No. 2542 # こうた 2002/02/26 (火) 21:58:18
OCNのADSLアクセスIP8「フレッツ」のサービスでの
PPPOEのLAN型接続において、
固定グローバルIPを割り当てたPC(サーバー)に対して、
外部のPCから(インターネット経由で)アクセスすると、HOST検索にやたら時間がかかります。(約18秒)
時間がかかっているのは、WINSOCKのgethostbyaddrという関数です。
上記の不具合を解決する方法を知っていましたら、教えていただけないでし
ょうか?ブローバンド・ルータに原因があるのかと思い、買い替えましたが、結果は同じでした。ちなみに、pingは0.1秒以内に帰ってきます。

No. 2543 # 68user 2002/02/27 (水) 01:00:14
>>2540 小僧
> cat telnet_file | telnet
こういうふうに使える telnet ってあるんでしょうか。どこかに
書いてあったのを参考に作っておられますか?

で、普通 telnet というのは人間が操作しますので、
    Login:
と表示されてからユーザ名をタイプし、
    Password:
と表示されてからパスワードをタイプし、その後コマンドを実行して
実行結果を見るわけです。

なので、これを自動化するには
    Login:
という文字列が相手側から送られてきてからユーザ名を送り、さらに
    Password:
という文字列が送られてきてからパスワードを送り、コマンドを送り、
その結果を取得する。ただしプロンプトとコマンドの実行結果を選り
分ける、というなかなか面倒な話なのです。CZ さんは「ユーザ名が
要求されるまで」と表現しておられますが、実際は単に文字のやりとり
をしているだけで、「プロトコル」といった大層なものがあるわけでは
ありません。

面倒なこと一切抜きで手抜きするならこんな感じ。
    ( sleep 2 ; echo USER ;
        sleep 2 ; echo PASS ;
        sleep 2 ; echo date ;
        sleep 2 ) | telnet localhost

ちゃんと真面目にやるなら expect コマンドや p5-Telnet など。
>>1335-1340 参照。

もっとよいのは rsh。さらによいのは ssh って感じですかね。
# http://www.jp.FreeBSD.org/QandA/HTML/1576.html


>>2542 こうた
> 外部のPCから(インターネット経由で)アクセスすると、
> HOST検索にやたら時間がかかります。(約18秒)
どの外部の PC 経由からでも名前解決に時間がかかるのですか?
そのマシンのプライマリの DNS サーバはどこにありますか?
どのマシンからでもその現象が発生して、DNS サーバが外部に
あるなら DNS サーバの問題でしょう。

もし可能ならば、実際のホスト名を出して下さい。

No. 2544 # Hiro [E-mail] 2002/02/27 (水) 09:44:14
>>2536 68user
報告
おかげさまで、netscapeのインストール、できました。
なお、先に入れてしまった日本語 locale 用は、pkgrmコマンドでアンインストールしてから本体をインストールしました。それからnetscapeを立ち上げたら、なぜかメニューも日本語化されていました?pkgrmでの削除では、すべてを削除したわけではないのかもしれないので?残存ファイルで日本語されているのか・・?
とにもかくにも、前のhotjavaより軽いし、なんとか動いて嬉しいです^^
ありがとうございました。

その後、tomcatを起動してブラウザからみたところ、examplesの動作確認等、簡単なところまではできました。
取り急ぎご報告まで。

No. 2545 # 小僧 2002/02/27 (水) 10:14:12
>>2543 68user

返信、ありがとうございます。
>> cat telnet_file | telnet
>こういうふうに使える telnet ってあるんでしょうか。どこかに
>書いてあったのを参考に作っておられますか?
いえ、どこにも記述されていません。
FTPで同じ方法を使っているシェルがあったので、
それを参考にして作ってみました。

68uesrさんが言われた(echo 〜)の方法で
多分うまくいくと思います。
貴重なアドバイス、ありがとうございました。

rsh、sshが使えれば楽なんですが、
r系コマンドはセキュリティ上、
ssh等は自分の知識不足のため、お客様へ説明が出来なく
(セキュリティに関する部分)Telnetでシェルを
記述する事になっているのです。

過去ログの方も参考にしながら、後は自分で書いていこうと思います。
ありがとうございました。


掲示板のレスの表示がうまくいかないかもしれませんが、
ご容赦下さい。

No. 2546 # 小僧 2002/02/28 (木) 12:57:47
お世話になります、小僧です。

先日は、Telnetで質問させて頂き、ありがとうございました。
その後、仕様変更に伴い、rsh、rcpコマンドを使用する事になりました。
そこで、新たに疑問が発生したので、質問させて頂きます。


このホームページの"Unixの部屋"の.rhostsに関する内容の所です。
以下、抜粋させていただきます。

----- 抜粋 Start -----
それとは逆に、hoge.fuga.com の ~/.rhosts に

foo.bar.com user1

と書いておくと、foo.bar.com にログインしているとき、hoge.fuga.com に対して、
rcp・rsh・ノーパスワードでの rlogin を使うことができる。
----- 抜粋 End -----

記述してある条件のもと、上記の設定を行う場合、
~/のディレクトリは、User2に記述するとして、
その場合、User1がhoge.fugu.comホストに対して
rshを行った場合、実行ユーザはUser2になるのでしょうか?

説明が分かり辛いと思いますが、
ご教示して頂ければ幸いです。

No. 2547 # CZ 2002/02/28 (木) 18:51:51
先ほどUNIXの部屋で `ログ' を全文検索したのですが、
コマンドに本文がないと改行されないのが気になりました。

例)
        astrolog 占星術のプログラムらしい bison 構文解析パーサ生成プログラム

根本的な解決策は思いつきませんが、とりあえずは
本文がない場合は「お尻P」を付ければいいのかな?

# UNIXの部屋に長いことお世話になっていながら
# htmlファイルの存在を全く意識していなかった
# ことに気づいた今日この頃です。

No. 2548 # 68user 2002/03/01 (金) 01:28:31
>>2546 小僧
> その場合、User1がhoge.fugu.comホストに対して
> rshを行った場合、実行ユーザはUser2になるのでしょうか?
そうです。foo.bar.com に user1 としてログインし、
    % rsh -l user2 hoge.fuga.com /usr/bin/id
などとすれば確認できます。

>>2547 CZ
ご指摘ありがとうございます。</P> を付けるようにしました。
    http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/script/make-html

No. 2549 # CZ 2002/03/01 (金) 11:58:44
こんにちは。質問があります。

標準出力と標準エラー出力を画面に出力しつつ
エラー出力のみをファイルに保存したいのですが
shと標準的なUNIXのコマンドを使って実現可能な
ものなのでしょうか。

これまでに試したのは以下のような方法です。

--- test.sh ---
#!/bin/sh

echo stdout
echo stderr 1>&2
---

[その1]
        $ ./test.sh 2>error.log
    エラーが画面出力されないので×
    いざとなれば別の仮想端末で
        $ tail -f error.log
    としてもいいのですが。

[その2]
        $ ./tesu.sh 2>&1 | tee error.log
    エラー以外の出力も保存されるので×

No. 2550 # 68user 2002/03/01 (金) 12:44:49
>>2549 CZ
http://www.ainet.or.jp/~inoue/memo/sh-fd.html などを読みつつ
考えた結果、
    % (./test.sh > /dev/tty) 2>&1 | tee error.log
と、サブシェルを使わないとできないんじゃないか、という
結論になりましたがどうでしょう。

No. 2551 # CZ 2002/03/01 (金) 13:49:52
>>2550 68user さん
なるほど。
ttyでstdoutを出力してしまえば,
stderrが後に残るというわけですね。
(正しい表現が分かっていませんが。)

ありがとうございました。

No. 2552 # stone_free 2002/03/07 (木) 00:17:39
こんにちは。
今日、こちらのページをみて、suidというものを使えば、
とあるCGIを「nobodyじゃない権限で実行させたい」と
いう願いがかなうということがわかり、早速試してみました。
まず、こちらにサンプルでおいてあるwhoami.cgiをそのまま設置して
パーミッションをrwsr-xr-xとしたところうまく動きました。
その後、自作のCGI(nobodyでは動かしたことがあるもの)を同様に
nobodyでないユーザで動かそうと思ったら「Internal Server Error」
となってしまいました。

それで、うまくうごいた実績のあるwhoami.cgiを改造しながら原因を探した
ところ、どうやら「require 'jcode.pl';」を書いてしまうと
「Internal Server Error」となってしまうということがわかりました。
require 'jcode.pl';行をコメントアウトすれば動きます。

なんとか、この一行を含んでいるものも、setuidして動かすことは出来ない
ものでしょうか。
なにかよい方法がございましたらご教示ください。

宜しくお願い申し上げます。

No. 2553 # 68user 2002/03/07 (木) 13:33:42
>>2552 stone_free
まず、
    #!/usr/bin/perl
    require 'jcode.pl';
このスクリプトをコマンドラインから動かして下さい。カレント
ディレクトリに jcode.pl があればちゃんと動くでしょう。

suid したスクリプトを実行すると、perl は自動的に汚染モード
(taint mode) に切り替わります。いちいちスクリプトを suid して
web 経由で実行するのは面倒なので、perl に -T オプションを付けて
汚染モードで動作させます。
    #!/usr/bin/perl -T
    require 'jcode.pl';
今度は jcode.pl が見付からない、と言われるはずです。

require がライブラリを探すパスは @INC で設定されていますので、今度は
    #!/usr/bin/perl
    print "@INC\n";

    #!/usr/bin/perl -T
    print "@INC\n";
で違いを調べます。

#  perl -e 'print "@INC\n"'
#  perl -Te 'print "@INC\n"'
# としてもいいです。

すると、上の方では @INC の最後に `.' (カレントディレクトリ) が含まれて
いますが、-T を付けると `.' が含まれていないことがわかります。ドキュメント化
されていないのかもしれませんが、これは汚染モードの仕様なのでしょう。

というわけで、
    require './jcode.pl';
    require '/foo/bar/jcode.pl';
などと、@INC に頼らず require するか、require する前に
    push(@INC, '.');
すれば解決です。


その他、suidperl で動かすと PATH だとか umask だとかで文句を
言われることがあるかもしれませんが、いきなりブラウザ上で動作を
検証することはせず、必ず -T 付でコマンドラインから動作を確かめる
ようにして下さい。

No. 2554 # たこ。 2002/03/07 (木) 18:41:52
こんにちわ。早速なんですけど、教えて下さい。

以下のことを行った場合、
(1)javaのClassファイルをHP-UNIX上でコンパイル後、圧縮。
(2)windows2000にダウンロード後、CDに焼く。
(3)Solarisで解凍し、実行環境に投入。

で、Solarisで正常に動作するでしょうか?
javaだから出来るような気もするんですけど、やっぱりリコンパイルは必要な気もして。
よろしくお願いします。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2555 # CZ 2002/03/07 (木) 21:45:24
ひとつ気づいたこと。

これまでずっと,tar + gzip 形式のファイルを展開するのに
    % tar zxvf hoge.tar.gz
といった順序でオプションを指定していました。

ところが,GNU Tar のマニュアルを見ると,
こんなことが書いてありました。

<http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html>
| tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。
| この後にはどのオプション機能を指定する事も出来る。

最初の記述法は厳密に言うと間違いということに
なりそうなんですが,どんなものでしょうか。

No. 2556 # stone_free 2002/03/07 (木) 22:46:03
>>2553 68user
68userさん、有難うございました。
大変参考になりました。
おかげさまで、動かすことができました。
感謝感激です。

もうひとつ、教えていただいていいでしょうか。
今回の手順のひとつに
> perl に -T オプションを付けて汚染モードで動作させます。
> #!/usr/bin/perl -T
> require 'jcode.pl';
> 今度は jcode.pl が見付からない、と言われるはずです。
とありましたが、このとおりファイルに書いて
# perl test.cgi
としてコマンドラインで実行してみたのですが、
Too late for "-T" option at test.cgi line 1.
と出てしまいました。
#!/usr/bin/perlの後にオプションをつける場合は、クオートか
なにかでくくらないといけないのでしょうか。

また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。
やはり、本来のユーザと違う権限で実行できてしまうから危険である
ということでしょうか。

No. 2557 # 68user 2002/03/07 (木) 23:13:48
>>2554 たこ。
> で、Solarisで正常に動作するでしょうか?
Java のバージョンが合っていれば正常に動作するんじゃないでしょうか。

まぁ僕なら怖いので、Solaris でコンパイルして生成された class
ファイルを比較してみます。


>>2555 CZ
> tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。
原文は
    The first argument to tar must be one of the options: Acdrtux
なので誤訳だと思います。
    tar に与える最初の引数の中には、必ず Acdrtux のうちの 1つを
    指定しなければならない
あたりでどうでしょうね。って、自信はないのですが。

No. 2558 # 68user 2002/03/07 (木) 23:31:54
>>2556 stone_free
> #!/usr/bin/perlの後にオプションをつける場合は、クオートか
> なにかでくくらないといけないのでしょうか。
原理を書き出すとまた長くなってしまうので割愛しますが、
    #!/usr/bin/perl -T
と書いたスクリプト hogescript を実行するには
    % ./hogescript
とします。

これは
    % /usr/bin/perl -T ./hogescript
と等価であって、
    % /usr/bin/perl ./hogescript
とは等価ではありません。

> また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。
ラクダ本では「汚染モード」と訳してあります。詳しくはこちらなど。
    http://www-sampei.ctrl.titech.ac.jp/perldoc/perl_20.html

No. 2559 # stone_free 2002/03/08 (金) 01:30:44
>>2558 68user
なるほど!よくわかりました。
重ね重ねありがとうございました。

No. 2560 # Moo [E-mail] 2002/03/09 (土) 12:23:55
    こちらのページのお陰で、サーバプログラミングに入ることが出来ました。
    CP/M、DOS、Windowsとやってきたのですが、サーバプ
ログラミングに入れなくて困っておりました。
    仕事でサーバ側のプログラムを組む必要に迫られ、Unixも知らな
いし、サーバサイドの概念もつかめなくていたのに、今ではFTPや
HTTP、POPもcronも使えるようになりました。
    ついでにPerlまで覚えてしまいました。

    黙って読ませていただくばかりでは心苦しく、お礼を述べさせて頂き
に参りました。
    今後もUnix勉強の基本ページとして利用させていただきます。
    親切で分かりやすいページを作って下さり有り難うございます。
    心より感謝申し上げます。

No. 2561 # へんきち 2002/03/10 (日) 23:44:51
おっと、私もこのページにお礼を言いに来たのですが
プチ先駆者が(笑)
このページには大変お世話になっています
ネットワークプログラミングの部屋でファイルディスクリプターという
概念を初めて知りました、僕は学生なのですが将来こういう方面の仕事に
つきたいと思ってます。大変に参考になるページでした
このページの更新、たのしみにしてますm(。。)m

No. 2562 # たこ 2002/03/11 (月) 09:40:55
>> 2557

いろいろと調査してみた結果、windows上でコンパイルしたものを圧縮してsolarisに持っていっても、JAVA周りの環境さえ同じなら正常に動作するということなので、大丈夫だと思います。

ありがとうございました。

No. 2563 # 小僧 2002/03/11 (月) 17:50:55
お世話になります、小僧です。
AIX上での文字コードに関してお聞きしたい事があります。

ファイルの文字コードを確認するコマンドというのは
存在するのでしょうか?
例えば、「このファイルの文字コードはShift-JISだな」などの
判断を行えるようなコマンドの事なのですが。

それと、iconvを行う事が出来る文字コードは、
"/usr/lib/iconv"ファイルに登録されているようなのですが、
このファイルはデフォルトでは存在しないのでしょうか?

ご存知の方がいらっしゃいましたら、宜しくお願い致します。

No. 2564 # スナフキン 2002/03/12 (火) 00:09:57
kccなんてコマンドがありましたけど、AIXに存在するかどうかは
不明です。

Ex:
kcc -c kannji_file.txt

ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・

No. 2565 # sisya [E-mail] 2002/03/12 (火) 02:27:50
はじめまして、
現在色々とcgiを作成しており、
色々とよくわからないバグを調べている内
たどり着いた次第です。

他のサイトではあまり解説されていない
ヘッダの解説など大変助かりました。
これからも更新楽しみにさせていただきます。

No. 2566 # 小僧 2002/03/12 (火) 10:39:54
>>2564 スナフキン

kccコマンドですが、ちょっと無さそうですね・・・
現在使用しているAIXにmanコマンドが入っていないので
なんともいえませんが、ネットや手持ちの資料には
載って無さそうです。

ついでに、と言っては失礼ですが、iconvでもう一つ質問を。
iconvコマンドで、変換後に存在しない文字が存在した場合、
自動で"_"に変換されるようですが、この"_"を他の文字に
変更する事は可能なのでしょうか?

例えば"*"にしたりする事は可能なのでしょうか?
ご存知の方がいらっしゃいましたらアドバイスお願い致します。

No. 2567 # 68user 2002/03/12 (火) 11:35:58
>>2564 スナフキン
文字コードを判断する方法ですが、mule に付属している coco、
昔 fj に流れた kanjitype、jcode.pl の jcode::getcode、
mule/emacs のステータスバーに表示される E/S/J の文字。

僕が知っているのはこれくらいです。

No. 2568 # 小僧 2002/03/13 (水) 20:28:59
お世話になります、小僧です。

色々と調べて頂いてありがとうございます。
どうやら、私の環境で調べる方法はなさそうですね・・・

また分からない事がありましたら、アドバイスお願い致します。

No. 2569 # 68user 2002/03/14 (木) 01:37:04
>>2564 スナフキン
> ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・
こういう一般的な用途のコマンド (ファイルを読んでコード変換するだけ) で、
なおかつソースが公開されているものは、よっぽどのことがない限り Linux
専用ということはありません。

FreeBSD の port/package にもありますし、NetBSD の package には含まれて
ないようですがコンパイルすれば使えるでしょう。まぁ、それを言い出したら
多分 Windows でも Mac でも使えそうな気がしますが。

>>2563 小僧
そういえば最初にここを紹介すべきでした。
    http://www.jp.FreeBSD.org/QandA/HTML/1254.html

>>2566 小僧
> 自動で"_"に変換されるようですが、この"_"を他の文字に
> 変更する事は可能なのでしょうか?
多分できないです。できたとしても、その環境の iconv のみの独自拡張でしょう。

こういうのは考え方を変えて、
    % sed 's/&/&amp;/g' | sed 's/_/&ubar;/g' | iconv -f shift_jis -t euc-jp | \
            sed 's/_/\*/g' | sed 's/&ubar;/_/g' | sed 's/&amp;/&/g'
などとファイル中の _ を別の文字に置換してから iconv を通せば
なんとでもできます。

# &ubar; というのは、いま適当に考えた実体参照で、本当は存在しません。

>>2560 Moo
>>2561 へんきち
>>2565 sisya
どもども。できれば改善すればよい点も書いていただけると嬉しいです。
# と言っても、時間がなくて対応できない可能性が大なんですが。

No. 2570 # q19_77 [E-mail] 2002/03/14 (木) 13:57:43
お世話になっております。
シェルスクリプトが上手く動作せず困っています。

行っている方法は、
Linux7.1J sendmail-8.11.2-14 procmail-3.21-0.71で
ユーザ"XYZ"のホームディレクトリに.procmailrcファイルを置き、
XYZ宛てのメール受信時に条件が合えばシェルスクリプト"ABC"を
実行するようにしています。

メール受信時に条件が合い、シェルスクリプトを実行するところまでは
上手くできたのですが、実行するシェルスクリプトの中の一部分のみ
動作しません。

その部分とはユーザ"mono"に切り替え、さらにシェルスクリプトを実行する以下です。
su - mono -s /home/mono/mno.sh ---(1)
※ユーザ"mono"はパスワードなしです。

((なお、mno.shの記述は
scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt
ssh abc.world.co.jp sh /home/mono/mno2.sh
です。
他のLinuxサーバabc.world.co.jpへsshでファイルをコピーし、
他のサーバのシェルスクリプトmno2.shを実行))

(1)の部分に対してエラーでは、
standard in must be a tty
と表示されます。

他のサーバではこの記述通りで動作しました。
また、メール受信時にシェルスクリプト"ABC"を実行するユーザ"XYZ"
で手動でシェルスクリプトを実行すると(1)の部分も動作します。

Webで調べたところ、同じような現象になっている例もありましたが
解決策がありません。
そしてエラーの意味がよくわかりません。

勝手な推測ですが、実行しているサーバではセキュリティが強いため
パスワードなしとしている"mono"ユーザが原因ではないかと思います。

ですが、シェルスクリプトでパスワードも記述した形での"su"の実行は
可能かどうか分かりません。

申し訳ありませんが、何かよい策をお教えください。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2571 # ふくし [E-mail] 2002/03/14 (木) 15:29:42
タブ区切りテキストを split /\t/ で切って各フィールドを変数に読み込み、
join "\t" で戻そうとすると、
場合によってはデータが抜けていることがあるので困ります。
タブ区切りデータを a, b, c, d、タブを->であらわすと、
split /\t/, "a->b->c->d" => (a,b,c,d)
split /\t/, "a->->c->d" => (a,c,d)
split /\t/, "a->b->->d" => (a,b,d)
split /\t/, "a->->->d" => (a,d)
split /\t/, "a->b->->" => (a,d)
ということで、
  1 while $str =~ s/\t\t/\t♪\t/;
  @list = split /\t/, $str;
  for (@list) {
    s/♪//; # $_ は @list の要素を参照する。♪がデータにないと仮定
  }
とかやってるんですが、いかにもダサいですね。
もっと常道はあるんでしょうか?

Excel で編集すると a->b->->\n が a->b\r\n となってしまうのも
困る。

No. 2572 # 田中 [E-mail] 2002/03/14 (木) 21:27:33
<A href="javascript:x(1)">1</A>
をクリックすると最終的に
Nの値(abcの所)を計算し
document.location.href="http://www.a/cgi/a.cgi?N=abc";
としていたのですが、不便な所を感じ変えたいと思っています。

Submitボタンを押したらNを計算し
<FORM name="f" method="post" onSubmit="if(x() != true) {return false}" action="a.cgi">
<INPUT type=hidden name=N value=abc>
としてa.cgiを起動する方法は知っているのですが、
上のものと組み合わせた感じで
<A href="javascript:x(1)">1</A>をクリックして
最終的にNを計算し
<INPUT type=hidden name=N value=abc>
のようにpost/getで起動する方法はないでしょうか?
自分なりにやってみてもよくわからないのです。
どなたか教えて下さい。
お願いします。
ちなみに初心者です。難しいことは解らないので細かく教えていただくと
助かります。

No. 2573 # 68user 2002/03/14 (木) 21:33:39
>>2570 q19_77
> standard in must be a tty
su は端末 (tty) からのパスワード入力を求めているのに、
端末がないよ、という意味です。

端末というのは、キーボードで入力ができて、文字が表示されるもの、
たとえば kterm がそれです。procmail 経由で実行されると端末が
割り当てられないので (キーボードもないし、出力する画面もない)
エラーになっているわけです。

> 他のサーバではこの記述通りで動作しました。
本当ですか? どうして root でもないのに、パスワードなしで
su で他ユーザになれるのですか?

> su - mono -s /home/mono/mno.sh

気になる点は2つ。

なぜ -c でなく -s なのでしょうか?
    http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/su.1.html
によると、-s はシェルを実行するオプションですから、-s の場合端末が
あることをチェックしているのかもしれません。

あるいは環境変数 TERM などがセットされているので、端末を見にいってしまう
という可能性も考えられます。

ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由)
    echo PASSWORD | su root -c /usr/bin/id
でプログラムの実行ができました。


>>2571 ふくし
> 場合によってはデータが抜けていることがあるので困ります。
そんなことはないと思いますが、perl のバージョンは何ですか?
perl-5.005_03 ではそのような挙動を示しませんでした。

No. 2574 # ふくし 2002/03/15 (金) 02:10:38
>>2573 68user
                さん:

えっと、
  split /\t/, "a->b->c->d" => (a,b,c,d)
  split /\t/, "a->->c->d" => (a,'',c,d)
  split /\t/, "a->b->->d" => (a,b,'',d)
  split /\t/, "a->->->d" => (a,'','',d)
  split /\t/, "a->b->->" => (a,b,'','')
となってくれる、ということですか?
あれーおかしいなー、、。

実は、下の♪を使ったコードが動いたのでロクな検証をしてないのでした。
勝手な思い込みで外していたら申し訳ありません。
Excel による末尾のタブの削除等の現象かな?
うーんうーん。

No. 2575 # big 2002/03/15 (金) 12:14:22
皆さん教えてください。
DATのテープを新しく交換するときに、ラベリングを行おうとすると
I/O errorが出るんですけど、まさか、formatが必要とかそんなことですか

No. 2576 # 小僧 2002/03/15 (金) 12:26:42
お世話になります。

相変わらずiconvで困っています。
下記のように、コマンドを発行したのですが、
エラーが出てしまってiconvが出来ません。

----- コマンド発行 -----
$iconv -f shift_jis -t euc aaa

----- エラーメッセージ -----
iconv: 0791-004 コンバータがオープンできません

自分で調べたところ、必要なファイルだと思われるのは、
/usr/lib/iconvファイルだと思うのですが、
このファイルは存在しません。
もしこれが原因なら、中身のサンプルを教えていただければ幸いです。

宜しくお願い致します。

No. 2577 # 68user 2002/03/15 (金) 12:37:00
>>2576 小僧
> $iconv -f shift_jis -t euc aaa
euc という文字コードは存在しないような気がするので (ほんとか?)、
とりあえず -t euc-jp を試してみましょう。

>>2574 ふくし
> となってくれる、ということですか?
はい、そういうことです。

No. 2578 # 小僧 2002/03/15 (金) 13:51:51
>>2577 68user

>とりあえず -t euc-jp を試してみましょう。

----- 実行文 -----
iconv -f shift-jis -t euc-jp aaa

を行ってみましたが、同じ現象が発生しました。
当然の事ながら、ファイル"aaa"はきちんと存在します。

宜しくお願い致します。

No. 2579 # /tk 2002/03/15 (金) 14:25:26
>>2574 ふくし
> split /\t/, "a->b->->"
split /\t/, "a->b->->", -1
でわ?

No. 2580 # 68user 2002/03/15 (金) 16:00:03
>>2576 小僧
web で AIX のマニュアルを探してみました。
    http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/cmds/aixcmds3/iconv.htm
    http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixprggd/genprogc/convert_prg.htm#A197C1176
によると、AIX では euc-jp ではなく IBM-eucJP なのかもしれません。
Shift_JIS も同様に IBM-932 かもしれません。

> 自分で調べたところ、必要なファイルだと思われるのは、
> /usr/lib/iconvファイルだと思うのですが、
上記マニュアルを見ると、コンバータのファイルのありかは
    /usr/lib/nls/loc/iconv/
    /usr/lib/nls/loc/iconvTable/
と書いてあるように見えます。
# なぜ /usr/lib/iconv/ だと判断したかが第三者にわかるように書きましょう。
# 皆が AIX を使っているありませんので。

僕は AIX4.3 のマニュアルを見ましたが、あなたがお使いのバージョンが
わからないので、これが正しいかどうかはわかりません。ちゃんと OS の
バージョンを書きましょう。

>>2579 /tk
なるほど。その例では確かに -1 が必要ですね。僕は
    split /\t/, "a->->c->d" => (a,'',c,d)
のように真ん中に TAB がある例だけを試していて、気づきませんでした。

No. 2581 # q19_77 [E-mail] 2002/03/15 (金) 16:05:05
>>2573 68user
ご返答ありがとうございます。

>> 他のサーバではこの記述通りで動作しました。
>本当ですか? どうして root でもないのに、パスワードなしで
>su で他ユーザになれるのですか?
>> su - mono -s /home/mono/mno.sh
ユーザ"mono"にパスワードがないため、なぜか実行できました。

>なぜ -c でなく -s なのでしょうか?
よく分からずに指定したシェルを実行するとあったので、-s に
しました。また -c でも駄目でした。

>ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由)
> echo PASSWORD | su root -c /usr/bin/id
>でプログラムの実行ができました。
この場合、rootのパスワードが必要かと思いますが、そこはどのように
されているのでしょうか。

>そんなことはないと思いますが、perl のバージョンは何ですか?
>perl-5.005_03 ではそのような挙動を示しませんでした。
perlのバージョンは、perl-5.6.0-12ですが、
シェルスクリプトはどちらもperlを使用しておりません。

#!/bin/sh
su - mono -s /home/mono/mno.sh 
また、
#!/bin/sh
scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt
ssh abc.world.co.jp sh /home/mono/mno2.sh
と書いています。
そもそもこれが駄目なのでしょうか。

宜しくお願いします。

No. 2582 # 初心者マーク 2002/03/15 (金) 22:32:52
初めて書込みするんですけども、最近Cシェルを始めたんですが・・・
最初にログインした、IPアドレスから他のアドレスへログインする事ってできますか?

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2583 # 小僧 2002/03/16 (土) 21:52:23
>>2580 68user
返信ありがとうございます。

>web で AIX のマニュアルを探してみました。
わざわざ時間を割いていただいてありがとうございます。

># なぜ /usr/lib/iconv/ だと判断したかが第三者にわかるように
>書きましょう。
>僕は AIX4.3 のマニュアルを見ましたが、あなたがお使いのバージョン
>がわからないので、これが正しいかどうかはわかりません。ちゃんと
>OS のバージョンを書きましょう。
申し訳ございませんでした。
調べたのは「UNIX クイックリファレンス」という本です。
OSのヴァージョンは、AIX 4.3です。
次回からはきちんと記載するように致します。

お蔭様で、iconvが出来るようになりました。
本当にありがとうございました。

No. 2584 # persianopeh [E-mail] 2002/03/18 (月) 13:04:31
いつも参考にさせて貰っています。
ひとつ気づいた所があるのですが、Perlでのforkを使ったサーバプログラムの部分ですが、
親プロセスは子プロセスの終了ステータスを受けとらなければならないため、waitが必要だと思います。waitが無いと、子プロセスが終了してもdefunct状態のまま存在し続けてしまいます。
このwaitについて、下記の一行を追加するだけでうまくいきます。
$SIG{CHLD} = sub { wait };
(オライリーのらくだ本より)

以上、ご参考まで。

No. 2585 # 小僧 2002/03/18 (月) 16:26:50
お世話になります、小僧です。
連続の質問になるので、気が引けるのですが、
どうしても分からないので相談させて下さい。

AIX4.3.3 にてCDをマウントを行ったのですが、
CDのファイル名が全て小文字に変換されてしまいます。
Windowsで見ると大文字、小文字の区別がされています。

マウントを行うときに、オプション指定で
大文字、小文字を判定させる事は可能なのでしょうか?

#AIXでのマウントってちょっと特殊なんですよね?
#私が実行したマウントコマンドを記述しておきます。
#>mount -V cdrfs -r /dev/cd0 /mnt

アドバイス、お願い致します。

No. 2586 # 超初心者 2002/03/18 (月) 19:47:46
はじめまして。
サンプルプログラムをいつも参考にさせていただいている者です。
「C言語で ftp クライアントを作ってみよう (1)」のプログラムを
参考にFTPプログラムを作成していますが、プログラム中で、
cdコマンド、putコマンド相当の処理を行う場合はどのような記述を
すればよいか教えていただけないでしょうか(_0_)
user、passwd、quitの入力を、USER、PASS、QUITを使用して
コマンドをしているように見えます。これ相当の処理を、cd、putで
行う場合のプログラミングを調べております。
申し訳ありませんが御覧になっていたらアドバイスをお願いします
(_0_)

No. 2587 # pyu 2002/03/18 (月) 22:06:34
はじめまして。*
システムコール・ライブラリルーチンのページをよく見させて
いただいている者です。
ふと、気がついた部分がありまして生意気にも
指摘の投稿させていただきました。
http://x68000.startshop.co.jp/~68user/unix/pickup?usleep
において、マイクロ秒:百万分の一秒 であり、
0.001 秒単位ではなく、
例の説明も違っていると思います。
既に指摘があったらすいません。

No. 2588 # 狂態公開 2002/03/19 (火) 00:51:18
こんにちは。
http://X68000.startshop.co.jp/~68user/が正式なURLとの事ですが、OmniWeb4.0.6というブラウザを使うとアドレスを読み込み出来ない旨が表示され以下のようなエラーが表示されます。
http://www2.startshop.co.jp/~68user/では正常に表示されます。

Mar 19 00:45:16 http://X68000.startshop.co.jp/~68user/(HTTP): Host not found: u30dbu30b9u30c8 x68000.startshop.co.jp u306fu3042u308au307eu305bu3093
Mar 19 00:45:16 http://X68000.startshop.co.jp/~68user/ (HTTP): Host not found: ホスト x68000.startshop.co.jp はありません

ブラウザのバグかもしれませんが、一応ご報告まで。
ネットワークプログラミングの基礎知識、とても参考になります。

では。

No. 2589 # 名無しさん 2002/03/19 (火) 13:42:33
>>2588 狂態公開
う〜ん。
;; ANSWER SECTION:
x68000.startshop.co.jp. 17h56m14s IN CNAME ww2.startshop.co.jp.
www2.startshop.co.jp. 17h56m14s IN A 210.249.139.22

CNAMEか・・

狂態公開さんの所のDNSサーバーがおかしいんだと思うぞう。

No. 2590 # 名無しさん 2002/03/19 (火) 13:43:31
x68000.startshop.co.jp. 17h56m14s IN CNAME www2.startshop.co.jp.
だな。wを一つ消してもた

No. 2591 # あや [URL] [E-mail] 2002/03/20 (水) 02:12:38
初めまして、こんばんわ。
ブックさせて頂いて、お勉強させて頂いております。m(_ _)m

レンタルサーバを1台借りて、色々しているのですが
今回IPアドレスを2つ追加したのはいいけれど、設定に途方にくれて
書き込みさせて頂いております。

ifconfig_fxp0="inet 210.224.181.hhh netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 210.224.177.ttt netmask 255.255.255.255"

現状に、追加 210.188.eee.6/31 (7も有効)ということで

ifconfig_fxp2_alias0="inet 210.188.eee.6 netmask 255.255.255.254"

を、追加した次点ではpingでもちゃんと返って来てたのが・・

ifconfig_fxp3_alias0="inet 210.188.eee.7 netmask 255.255.255.254"

も、追加したら 6では パケットエラー、7では1行出てそれ以降は
いつまでたってもうんともすんとも状態になってしまいました。

が、これはtera term menu で自分サーバー内からのことで、外から
TELNET使用すると普通にpingで返ってくるのですが、これはどう考えたらよいものなのでしょうか。

ご存じの方いらっしゃいましたら、アドバイスを頂きたく書き込みさせて頂きました。宜しくお願い致します。

No. 2592 # 68user 2002/03/20 (水) 02:49:00
>>2591 あや
まず、OS 名とバージョンを書きましょう。FreeBSD っぽいので
FreeBSD として回答します。

fxp0, fxp2, fxp3 ということは、NIC 3 枚差しなのですか?
ifconfig -a で fxp0, fxp2, fxp3 それぞれの情報がちゃんと
出てきます?

> ifconfig_fxp2_alias0="inet 210.188.eee.6 netmask 255.255.255.254"
> を、追加した
もし /etc/rc.conf を編集してリブートしているのでしたら、それは
やめて、コマンドラインから
    # ifconfig fxp2 inet 210.188.eee.6 alias netmask 255.255.255.254
などとして、その後
    # ifconfig -a
で確認するようにして下さい。

で、要は
    # ifconfig fxp0 inet 210.224.181.hhh netmask 255.255.255.0
    # ifconfig fxp0 inet 210.224.177.ttt alias netmask 255.255.255.255
    # ifconfig fxp2 inet 210.188.eee.6 alias netmask 255.255.255.254
    # ifconfig fxp3 inet 210.188.eee.7 alias netmask 255.255.255.254
とした、ということですか?

fxp2 と fxp3 にそれぞれ重複して IP アドレスを振ってないならば、
「alias」を削って
    # ifconfig fxp0 inet 210.224.181.hhh netmask 255.255.255.0
    # ifconfig fxp0 inet 210.224.177.ttt alias netmask 255.255.255.255
    # ifconfig fxp2 inet 210.188.eee.6 netmask 255.255.255.254
    # ifconfig fxp3 inet 210.188.eee.7 netmask 255.255.255.254
じゃないかなと思います (ifconfig の実装によっては OK なのかも)。

> も、追加したら 6では パケットエラー、7では1行出てそれ以降は
> いつまでたってもうんともすんとも状態になってしまいました。
エラーの内容を具体的に書きましょう。

で、ping が通らないということは、インタフェースが認識されていないか、
ルーティングテーブルがおかしいか、arp テーブルがおかしいのでしょう。
netstat -a、netstat -r、arp -a の結果はどうなってますか?

No. 2593 # 68user 2002/03/20 (水) 03:22:22
>>2587 pyu
> マイクロ秒:百万分の一秒 であり、0.001 秒単位ではなく、例の説明も
> 違っていると思います。
ご指摘ありがとうございます。早速修正しました。
    http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/org/func.src

僕はマイクロ=ミリ (ミリはマイクロの略称) だと完全に勘違いしていたのですが、
    ミリ秒=1/1,000 秒
    マイクロ秒=1/1,000,000 秒
なのですね。よく考えれば1ミリメートルと1マイクロメートルが同じ長さなはずが
ない、と。

>>2588 狂態公開
> OmniWeb4.0.6というブラウザを使うとアドレスを読み込み出来ない旨が
> 表示され以下のようなエラーが表示されます。
うーむ、僕も DNS がおかしいのではないかと思うのですが…。
もし Mac OS X をお使いでしたら、ping や nslookup を
試してみて下さい。

No. 2594 # 68user 2002/03/20 (水) 03:30:39
>>2586 超初心者
> 参考にFTPプログラムを作成していますが、プログラム中で、
> cdコマンド、putコマンド相当の処理を行う場合はどのような記述を
> すればよいか教えていただけないでしょうか(_0_)
perl 編で、FTP プロトコルそのものの解説をしておりますので、ご一読下さい。
    http://x68000.startshop.co.jp/~68user/net/ftp-1.html
    http://x68000.startshop.co.jp/~68user/net/ftp-2.html
    http://x68000.startshop.co.jp/~68user/net/ftp-3.html
    http://x68000.startshop.co.jp/~68user/net/ftp-4.html

>>2584 persianopeh
> 親プロセスは子プロセスの終了ステータスを受けとらなければならないため、
> waitが必要だと思います。
ごもっともです。wait をすっかり忘れておりました。
ただ、解説も一緒に付けたいので、少し時間を下さいませ。

No. 2595 # 68user 2002/03/20 (水) 03:54:17
>>2585 小僧
> マウントを行うときに、オプション指定で大文字、小文字を判定させる
> 事は可能なのでしょうか?
まず基礎知識。CD-ROM にはいくつかフォーマットの種類があります。
    http://www.zdnet.co.jp/magazine/pcjapan/0105/sp2/09.html
    http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/cmds/aixcmds1/toc.htm

ISO9660 は大文字・小文字を区別しません (たぶん全て大文字で記録される)。
Joliet は、MS-DOS の 8.3 形式とロングファイルネームの2つのファイル名を
持ちます。UNIX のように大文字・小文字を区別するには RockRidge
(ロックリッジ) というフォーマットを使います。

よって、その CD-ROM が ISO9660 で作られているなら、大文字小文字の
区別はできません。ただし Windows で大文字小文字が区別されている
ということは、その CD-ROM は Joliet か RockRidge なのかもしれません。

Windows で見て、8.3 形式とロングファイルネームの両方が表示されるなら、
それは Joliet 形式かもしれません (本当かなぁ)。

なお、AIX は Joliet には非対応ですが、RockRidge には対応しているようです。
    http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixbman/admnconc/fs_overview.htm
これらのファイルタイプを mount のオプションで指定する方法は、web の
マニュアルからは読みとれませんでした (むしろ cdrfs を指定すれば
自動認識してくれそうに思える)。

というわけで、残念ながら解決法はわかりませんでした。

>>2852 mattu
> 最初にログインした、IPアドレスから他のアドレスへログインする
> 事ってできますか?
質問の意味がわかりません。

No. 2596 # 68user 2002/03/20 (水) 04:01:50
>>2581 q19_77
> ユーザ"mono"にパスワードがないため、なぜか実行できました。
なるほど、納得です。

>> echo PASSWORD | su root -c /usr/bin/id
>>でプログラムの実行ができました。
> この場合、rootのパスワードが必要かと思いますが、そこはどのように
> されているのでしょうか。
echo PASSWORD の部分に root のパスワードを書いています。

> perlのバージョンは、perl-5.6.0-12ですが、
> シェルスクリプトはどちらもperlを使用しておりません。
それは、ふくしさんに対しての回答です。今回の問題で perl のバージョンを
疑っているわけではありません。

一番簡単なのは root 権限で
    su - mono -c /home/mono/mno.sh
とすることです。root 権限なら何の問題もなくできるはず。

また、問題を切り分けましょう。
> ssh abc.world.co.jp sh /home/mono/mno2.sh
ここで tty を要求している可能性もないとは言えませんので、まずは
    su - mono -c /usr/bin/id
から始めるべきです。

No. 2597 # あや 2002/03/22 (金) 18:45:18
お世話になります。m(_ _)m
FreeBSD 3.5.1 を 利用しております。
すみません、前回書き込みが間違っていました。
NICは1枚です。IPは計4つの状態です。

rc.conf の中身は現在下記のようにしています。
ifconfig_fxp0="inet 210.224.171.ttt netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 210.224.177.hhh netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 210.188.fff.6 netmask 255.255.255.254"
ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.254"

ww# ping 210.188.fff.6
PING 210.188.fff.6 (210.188.fff.6): 56 data bytes
ping: sendto: Can't assign requested address


と、続いて
www# ping 210.188.fff.7
PING 210.188.fff.7 (210.188.fff.7): 56 data bytes
この行のみしか出ません。


ww# ifconfig -a
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                inet 210.224.171.ttt netmask 0xffffff00 broadcast 210.224.171.ttt
                inet 210.224.177.hhh netmask 0xffffffff broadcast 210.224.177.hhh
                inet 210.188.fff.6 netmask 0xfffffffe broadcast 210.188.fff.7
                inet 210.188.fff.7 netmask 0xfffffffe broadcast 210.188.fff.7

www# netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp 0 6823 210.224.177.hhh.http TKTcd-01p91.ppp..1696 FIN_WAIT_1
tcp 0 0 210.224.177.hhh.http TKTcd-01p91.ppp..1694 TIME_WAIT
tcp 0 0 210.224.177.hhh.http 203.139.83.201.4518 FIN_WAIT_2
tcp 0 0 210.224.177.hhh.http 210.225.27.166.13100 FIN_WAIT_2
tcp 0 0 210.224.177.hhh.http 210.225.27.166.13088 FIN_WAIT_2
tcp 0 4 www.telnet c85242.tctv.ne.j.1872 ESTABLISHED
tcp 0 0 *.http *.* LISTEN
tcp 0 0 *.smtp *.* LISTEN
tcp 0 0 *.pop3 *.* LISTEN
tcp 0 0 *.telnet *.* LISTEN
tcp 0 0 *.ftp *.* LISTEN
tcp 0 0 *.sunrpc *.* LISTEN
udp 0 0 *.sunrpc *.*
udp 0 0 *.syslog *.*
Active UNIX domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
c89aaf80 dgram 0 0 0 c89a0fc0 0 c89aafc0
c89aafc0 dgram 0 0 0 c89a0fc0 0 0
c89a0fc0 dgram 0 0 c899f680 0 c89aaf80 0 /var/run/log

www# netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default oscrt1e-L5.gw.saku UGSc 26 1593573 fxp0
localhost localhost UH 0 112 lo0
210.188.fff.6 0:e0:18:e0:10:2b UHLWb 0 10 lo0 =>
210.188.fff.6/31 link#1 UC 0 0 fxp0
210.188.fff.7 ff:ff:ff:ff:ff:ff UHLWb 0 141 fxp0
210.224.171 link#1 UC 0 0 fxp0
oscrt1e-L5.gw.saku 0:0:5e:0:1:16 UHLW 26 0 fxp0 1200
oscrt2e-L5.gw.saku 0:e0:80:2f:1d:0 UHLW 0 0 fxp0 1199
210.224.177.hhh/32 link#1 UC 0 0 fxp0

www# arp -a
? (210.188.fff.6) at 0:e0:18:e0:10:2b permanent [ethernet]
? (210.188.fff.7) at ff:ff:ff:ff:ff:ff permanent [ethernet]
oscrt1e-L5.gw.sakura.ad.jp (210.224.171.1) at 0:0:5e:0:1:16 [ethernet]
oscrt2e-L5.gw.sakura.ad.jp (210.224.171.2) at 0:e0:80:2f:1d:0 [ethernet]

このようになっております。宜しくお願い致します。

No. 2598 # q19_77 [E-mail] 2002/03/22 (金) 19:22:07
>>2596 68user
ご返答ありがとうございます。
su - mono -c /usr/bin/id
として試してみましたが、やはりmonoユーザになれないようでした。

68userさんの言われる通り、以下のようにroot権限で処理を行うように
しましたところ、上手く動作しました。

sudorsファイルにmonoユーザがroot権限で"su"できるよう記述
mono ALL= NOPASSWD: /bin/su

シェルスクリプトファイルに以下のように記述
sudo su - mono -c /home/mono/mno.sh

上手く動作しなかった原因と対処法は分かりませんでしたが、
動作するようになりましたので、よかったです。
どうもありがとうございました。

No. 2599 # hsj [E-mail] 2002/03/23 (土) 11:13:54
>>2597 あや
> ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.254"
ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.255"
だと思います。
// 以下参照
http://www.freebsd.org/ja/handbook/configtuning-virtual-hosts.html

No. 2600 # あや 2002/03/23 (土) 15:00:17
早速ありがとうございます。
210.188.fff.6/31 として 6と7がIPとして有効。
/31と言うことで255.255.255.254としていたのですが、
7の場合は255.255.255.255とする理由をご伝授頂ければ勉強になります。

ww# ping 210.188.fff.6
PING 210.188.fff.6 (210.188.fff.6): 56 data bytes
ping: sendto: Can't assign requested address


と、続いて
www# ping 210.188.fff.7
PING 210.188.fff.7 (210.188.fff.7): 56 data bytes
ping: sendto: Can't assign requested address


と、続くようにはなりましたが。

何度もすみません。宜しくお願い致します。

No. 2601 # 68user 2002/03/24 (日) 01:23:52
いまさらながら気づいたのですが、
>>2597 あや
> ifconfig_fxp0_alias1="inet 210.188.fff.6 netmask 255.255.255.254"
> ifconfig_fxp0_alias2="inet 210.188.fff.7 netmask 255.255.255.254"
これは根本的に無理でしょう。210.188.fff.6/31 ってことは、
    210.188.fff.6 … ネットワークアドレス
    210.188.fff.7 … ブロードキャストアドレス
となってしまい、IP アドレスを1つも振ることはできません。ネットワーク
アドレス部は 30 ビット以下でないとおかしい。

うちの FreeBSD 4.4-RELEASE でも
    # ifconfig vr0 inet 10.1.1.1 alias netmask 255.255.255.254
とすると、
    ping: sendto: Can't assign requested address
となりました。

>>2599 hsj
> http://www.freebsd.org/ja/handbook/configtuning-virtual-hosts.html
に従って、
    # ifconfig vr0 inet 10.1.1.1 alias netmask 255.255.255.252
    # ifconfig vr0 inet 10.1.1.2 alias netmask 255.255.255.255
としたら OK でした。

No. 2602 # 小僧 2002/03/25 (月) 10:10:07
>>2595 68user
お世話になります。

色々調べて頂いてありがとうございます。
その後、調査をした結果、方法がわかりました。
#mount -V cdrfs -r -o nocase /dev/cd0 /mnt
コマンドで、大文字、小文字を判定してくれました。
必要なオプションは"-o nocase"だったようです。

時間を割いて調査して頂き、ありがとうございました。

No. 2603 # hsj [E-mail] 2002/03/26 (火) 01:31:37
>>2601 68user
> これは根本的に無理でしょう。210.188.fff.6/31 ってことは、
> 210.188.fff.6 … ネットワークアドレス
> 210.188.fff.7 … ブロードキャストアドレス
> となってしまい、IP アドレスを1つも振ることはできません。ネットワーク
> アドレス部は 30 ビット以下でないとおかしい。

あ、そりゃそうですね・・・。
設定にだけ目がいって基本的な部分を見落としてました(苦笑

そういえば、本題とは関係ありませんが件のページの、
> システムは 10.1.1.0 には 10.1.1.1 として, 202.0.75.20 には
> 202.0.75.17 として現れるようにします.
は、やっぱり「202.0.75.16 には202.0.75.17 として〜」と
書きたかったんでしょーか。

>>2600 あや
> 255.255.255.255とする理由をご伝授頂ければ勉強になります。

これはFreeBSDの場合はそう言うモンだとしか。
ちゃんと調べたわけではありませんが、ルーティングとかの絡みでの
単なる実装上の都合ではないでしょうか。

No. 2604 # 68user 2002/03/26 (火) 10:46:40
>>2603 hsj
> 「202.0.75.16 には202.0.75.17 として〜」と書きたかったんでしょーか。
原文は
    http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-virtual-hosts.html
        We want the system to appear at 10.1.1.1 through 10.1.1.5 and
        at 202.0.75.17 through 202.0.75.20.
なので、
    10.1.1.1 から 10.1.1.5 まで、202.0.75.17 から 202.0.75.20 まで
てなところではないでしょうか。

誤訳かなぁと思うのですが、自信なし。

No. 2605 # あや 2002/03/26 (火) 23:30:03
ご教授、本当にありがとうございました。m(_ _)m
今回、全部ではないですが理解出来た部分が増えました。m(_ _)m

元々のレンタサーバからの設定が通常とは違うのか、かなりの時間を
経て本日回答は 255.255.255.255 設定にして下さいとのことでした。
ping すると 返ってくるので、こういう設定もあるのかと 又 少し頭を
かかえたりもですが。(ーー;

本当にほんとうに、ありがとうございました。m(_ _)m m(_ _)m m(_ _)m

No. 2606 # ふくし [E-mail] 2002/03/27 (水) 13:20:44
ActivePerl について質問です。
(ActivePerl-5.6.1.631-MSWin32-x86.msi を使っています)
Windows 2000 から`拡張子 pl を使うと、
    C:\> foo.pl
のようにコマンドのように実行できるようになりましたが、
<> を使ってコマンドラインからファイルを入力すると、
引数にファイル名を渡すと OK ですが
(C:\> foo.pl bar.txt のような状態)
インプットリダイレクションすると NG です。
(C:\> foo.pl < bar.txt のような状態)
症状は、1行も読み込みません。
これはこういう現象なのでしょうか?
内部的になにが起こっているのでしょうか?
もしなにかわかりましたらご教示ください。

No. 2607 # 小僧 2002/03/28 (木) 12:52:57
お世話になります。
また質問をさせて頂きます。

AIXサーバ(ver 4.3.3)から、ファイルを3490テープに出力し、
そのファイルをホスト(S/390)が受取り、処理を行う、
という運用があるのですが、AIXサーバからファイルを3490テープに
出力する方法がまったくわかりません。

上記質問とは関係のない、3490テープに関する情報でも構いませんので、
ご存知の方がいらっしゃいましたら、情報をアナウンスして頂ければ幸いです。

また、必要な情報が何なのかも分かっていません。
「これを読んで勉強してこい」という情報でも構いませんので、
宜しくお願い致します。

No. 2608 # sio 2002/03/30 (土) 18:27:52
POP3についての質問です。

Webメールクライアントに興味があり、
初めてFreeBSDをインストールしたのですが
事ある毎に何日も嵌り続けています(^^;
今回、問題の切り分けも自力で出来ずに悩んでいます。
何か良いアドバイスを頂ければと思い書き込みさせて頂きます。

FreeBSD + checkpassword を使いPOPサーバーを起動しています。
例えば User@bsd.com 宛のメールを閲覧するのにPOP3Client.pmを使った
perlスクリプトなのですが何故か、私の組んだサーバーを含むいくつかの
サーバーで「ユーザー認証が出来ません」
ただ、どのサーバーも telnet で 110ポートへ接続して
> USER User
> PASS Pass
> LIST
とすると認証され一覧も表示されます。

Web上で見つけた他のクライアントソフト(peepmail)で試したのですが
同じように特定サーバーで認証エラーが発生します。

その後SOCKET部分の問題かと思い
参考文献によくあるような
            〜 略 〜
            select(SOCKET); $|=1; select(STDOUT);
            print SOCKET "USER $username\r\n";
            print SOCKET "PASS $passwd\r\n";
            print SOCKET "LIST\r\n";
            〜 略 〜
では
+OK <8182.1017479300@bsd.com>
といった返事しか得られなかった為に
            〜 略 〜
            select(SOCKET); $|=1; select(STDOUT);
            print SOCKET "USER $username\r\n";
            $tmp = <SOCKET>;
            print SOCKET "PASS $passwd\r\n";
            $tmp = <SOCKET>;
            print SOCKET "LIST\r\n";
            $tmp = <SOCKET>;
            〜 略 〜
又は
            〜 略 〜
            select(SOCKET); $|=1; select(STDOUT);
            print SOCKET "USER $username\r\n";
            print SOCKET "PASS $passwd\r\n";
            sleep(1);
            print SOCKET "LIST\r\n";
            〜 略 〜
とした所、サーバーからの応答が得られました。

この事と関係しているのでしょうか?
POP3Client.pm の内容も見たのですが全然分かりません。。。

原因はどの辺りにあるのか、アドバイスを頂けないでしょうか。

No. 2609 # sio 2002/03/30 (土) 22:44:58
自己レスです。

POP3Client の呼び出しで
> TIMEOUT => 60
というタイムアウト指定項目がありこれを
設定した所、無事に動作致しました。

結局の所、反応の遅いサーバーではタイムアウト指定を
してあげないといけなかっただけのようです。

1週間以上悩んでいた事が
BBSへ書き込んで数時間で解決しました(^^;

No. 2610 # 68user 2002/03/31 (日) 01:23:01
>>2609 sio
DEBUG=>1 としておけば気づきやすかったかもしれませんね。

No. 2611 # hama 2002/04/09 (火) 16:35:16
SOCKETを使ったHTTPクライアントソフトで認証のページに
アクセスする方法はどうするのでしょうか?

No. 2612 # 68user 2002/04/09 (火) 18:23:32
>>2611 hama
認証が必要なページを読むと、Basic 認証が必要なページならば
    HTTP/1.1 401 Authorization Required
    WWW-Authenticate: Basic realm="This URI is required authentication"
というようなレスポンスが返ってきます。

もしユーザ名が USER、パスワードが SECRET なら、クライアントは
    USER:SECRET
という文字列を作り、それを base64 でエンコードした
    VVNFUjpTRUNSRVQK
という文字列を「Authorization: Basic 」に続けて送ります。つまり
    GET / HTTP/1.0
    Authorization: Basic VVNFUjpTRUNSRVQK
こんな感じ。

Digest 認証ならば、web サーバは
    WWW-Authenticate: Digest realm="testrealm@host.com",
          nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
          opaque="5ccc069c403ebaf9f0171e9517f40e41
という感じのを返してくるので、クライアントは
    GET / HTTP/1.0
    Authorization: Digest username="hoge",
        realm="testrealm@host.com",
        nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
        uri="/",
        response="e966c932a9242554e42c8ee200cec7f6",
        opaque="5ccc069c403ebaf9f0171e9517f40e41"
こんな感じで。

詳細はこちらを。
    http://www.ietf.org/rfc/rfc2617.txt

No. 2613 # kouhei [E-mail] 2002/04/10 (水) 11:44:27
はじめまして、いつも勉強させて頂いております。
バージョン管理ソフトのCVSについて質問です。
ソースをレポジトリにインポートすると「ファイル名,v」となります。
,vが管理されていると言う事だと思うのですが、この管理している
ソースを直接WEBに反映したいのですが,vがある事でもとのファイルがみつからないとのエラーがブラウザに表示されてしまいます。
CVSROOTの中(loginfo等)はそれぞれ、元のファイルと,vのファイルがあり、チェックアウトしてソースを修正して戻すと両方のファイルが
更新されています。このようにする方法は無いのでしょうか。
以上、宜しくお願いします。

No. 2614 # kouhei [E-mail] 2002/04/10 (水) 11:46:46
申し訳ないです。下の質問わかりにくいですね。
例えばindex.htmlをインポートするとindex.html,vとなってしまう為
ブラウザーでindex.htmlを表示できないという事です。
宜しくお願いします。

No. 2615 # 68user 2002/04/10 (水) 12:48:27
>>2614 kouhei
目的は、履歴 (index.html,v) を表示することですか? それともコンテンツ
(index.html) を表示することですか?

No. 2616 # 68user 2002/04/10 (水) 12:59:54
>>2615 68user
追加。

もし後者だとしたら、リポジトリを直接ブラウザで見ようとして
いるのはなぜですか?

No. 2617 # kouhei [E-mail] 2002/04/10 (水) 13:07:10
素早いレスありがとうございます。
目的はコンテンツ(index.html)を表示したいということです。
参考にトップページのソースを拝見させていただきました。
1行目に<!--$ID:index.html,v 〜 があるというこはindex.htmlを
管理しているという事ですよね。これはチェックアウトした物を表示
しているのですか。
私がやりたいのはインポートしたindex.htmlを表示したいという事です

以上、宜しくお願いします。

No. 2618 # kouhei [E-mail] 2002/04/10 (水) 13:27:09
追加。
もしかして普通はこんな事しませんか。
テスト用サーバでcommitと同時に画面に反映されたらテストが楽に
なると思ったので。動作確認ができたら本番サーバにリリースする
というような事を考えていました。
実現できるのでしょうか。

No. 2619 # 68user 2002/04/10 (水) 15:37:20
>>2618 kouhei
> テスト用サーバでcommitと同時に画面に反映されたらテストが楽に
> なると思ったので。動作確認ができたら本番サーバにリリースする
> というような事を考えていました。
運用の問題になりますが、commit しないとテストできないというのは
面倒ではないですか?

普通、ちょっと作ってはブラウザで確認、不具合を修正し、確認し…と
修正・確認を繰り返して、まぁ問題ないだろうというときになったら
commit するものだと思います。

よって、
    - CVSROOT が /home/user/cvsroot
    - テスト環境を置くディレクトリが /home/user/public_html/
    - 本番環境を置くディレクトリが /usr/local/www/data/
だとしたら、
    % cd /home/user/public_html
    (ここで修正・確認を繰り返す)
    % cvs commit
    % cd /usr/local/www/data/
    % cvs update (本番環境に反映。あるいは再度 checkout しなおしてもよい)
とするのがよいと思います。

CVSROOT/loginfo をいじれば、commit した瞬間に本番環境へ反映させる
ことは不可能ではありませんが、常に本番環境に即時反映されるのも困る
場合があるんじゃないでしょうか?

また、本番環境への自動反映であれば、cron で定期的に更新するという
手もあります。loginfo で凝ったことをするより、cron で小回りのきく
単純なシステムを作った方がいいかもしれません。

No. 2620 # kouhei 2002/04/10 (水) 18:23:41
ありがとうございます。
チェックアウト先をWindowsのローカルにと考えていたのが
悪かったようです。Unix上にチェックアウトしてSambaで編集すれば
良いのですね。開発がサーブレットとjspとオラクルだったのもので
気軽にローカルでテスト環境を作るというのが難しかった為、サーバに
戻してテストしようと考えていました。
cronは便利そうですね。使った事ないですが勉強しようと思います。
以上、ありがとうございました。

No. 2621 # 68user 2002/04/10 (水) 22:16:27
>>2620 kouhei
> 開発がサーブレットとjspとオラクルだったのもので気軽にローカルで
> テスト環境を作るというのが難しかった為
なるほど。

でも、開発を各マシン上で行えると便利ですよ。
    開発環境は各マシンで
        Windows+JBuilder+Tomcat+PostgreSQL 用 JDBC ドライバ
        (テスト用サーバで PostgreSQL が稼働)
    テスト & 本番環境は
        UNIX+Tomcat+Oracle
てな感じで やっているところを見たことがあります。

Oracle と Tomcat を違いではまらないように、開発者は SQL を
直接書かず、DB 担当者が SQL を一括管理していましたが、そのかわり
    「今から開発マシン落としま〜す」
    「なんだ開発できねぇじゃねーか」
とかいうことがなくなりますし、同じファイルを同時にいじくって
しまう危険もないですね。

まあ、ある程度の規模にならないとメリットも出てこないので、
kouhei さんの環境でもそうするべきかどうかはわかりませんが、
参考まで。

No. 2622 # あやの 2002/04/11 (木) 11:36:21
2つのファイルの比較について、
hogeとfooという2つのファイルが場合、
この2つのファイルから、同一の内容)行を出力するコマンドは
どのようなものがありますか?

No. 2623 # あやの 2002/04/11 (木) 11:38:54
2つのファイルの比較について、
hogeとfooという2つのファイルがある場合、
この2つのファイルから、同一の内容の行を出力するコマンドは
どのようなものがありますか?

No. 2624 # あやの 2002/04/11 (木) 16:34:01
下記で同じ質問をしたところ、回答をいただいて解決しました。
http://www.parkcity.ne.jp/~chaichan/qanda/qa2652.htm

No. 2625 # 名無しさん 2002/04/11 (木) 20:11:06
マルチポストですか・・・>あやの

No. 2626 # kouhei 2002/04/12 (金) 10:49:47
お世話になってます。すみませんがもう一つ質問させてください。
CVSでコミットと同時にメールで複数人に通知したいのですが、設定がよくわかりません。
一応、以下の内容をloginfoに加えればメールは送られるのですが
コミットに1分以上、時間がかかってしまい使えません。
ALL (echo ""; id; echo %{sVv}; date; cat) | mail メールアドレス

パールを使う以下の方法も試したのですがパールの中でエラーが出てしまいます。
DEFAULT /usr/local/lib/cvs/contrib/log %s -m メールアドレス -f $CVSROOT/CVSROOT/commitlog

エラー内容は 〜/user/local/lib/cvs/contrib/log line 172. です。
-----------------------------------------------------------
/user/local/lib/cvs/contrib/log
-----------------------------------------------------------
close(OUT);
die "Write to $logfile failed" if $?;

close(MAIL);
die "Pipe to $mailcmd failed" if $?; ← 172行目
-----------------------------------------------------------

環境はLINUXです。
メール自動送信の方法をご伝授して頂けないでしょうか。
宜しくお願いします。

No. 2627 # 68user 2002/04/12 (金) 11:15:54
>>2626 kouhei
> コミットに1分以上、時間がかかってしまい使えません。
> ALL (echo ""; id; echo %{sVv}; date; cat) | mail メールアドレス
普通に考えると、commit に時間がかかる場所は mail コマンド以外には
考えられないので、まずはコマンドラインから
    % mail メールアドレス
で試してみるべきでしょう。

> パールを使う以下の方法も試したのですがパールの中でエラーが出てしまいます。
こちらも
    % Mail -s 'CVS update: $modulepath メールアドレス

    % /usr/local/lib/cvs/contrib/log %s -m メールアドレス -f $CVSROOT/CVSROOT/commitlog
などをコマンドラインから実行して、再現するかどうか試しましょう。

うちでは
    http://www-vox.dj.kit.ac.jp/nishi/cvsbook/ の mailto-committers.pl.txt を
使っています。
    - CVSROOT に jcode.pl を cvs add。
    - CVSROOT に mailto-committers.pl を cvs add。
    - CVSROOT/checkoutlist に
            mailto-committers.pl
            jcode.pl
        を追加し、commit。
    - CVSROOT/mailto-committers.pl を以下のように変更
                --- CVSROOT/mailto-committers.pl 2001/04/05 07:05:28 1.1
                +++ CVSROOT/mailto-committers.pl 2001/04/17 04:12:00 1.8
                @@ -1,23 +1,24 @@
                  #!/usr/bin/perl
                  #
                -# $Id: mailto-committers.pl,v 1.1 2001/04/05 07:05:28 mat Exp $
                +# $Id: mailto-committers.pl,v 1.8 2001/04/17 04:12:00 mat Exp $
                  # Copyright (C) 1998 Hajime BABA. All rights reserved.
                  #
  
                -require 'jcode.pl';
                +require '/MASTER/cvs/CVSROOT/jcode.pl';
  
                -$cvs = "/usr/bin/cvs";
                -$rcsdiff = "/usr/bin/rcsdiff";
                -$sendmail = "/usr/sbin/sendmail";
                +$cvs = "/usr/local/bin/cvs";
                +$rcsdiff = "/usr/local/bin/rcsdiff";
                +$sendmail = "/usr/lib/sendmail";
  
                  sub parse_args {
                          my(@tmp, $tmp);
  
                - $CVSROOT = ENV{'CVSROOT'};
                + $CVSROOT = $ENV{'CVSROOT'};
                + $CVSROOT =~ s/.*://;

                          print $ARGV[0], "\n" if $debug;
                          $ARGV[0] =~ s/ - New directory//go;
                @@ -49,6 +50,7 @@
                  sub set_header {
                          my(@h, $file, @tmp, $date);
  
                          open(HISTORY, "$tail -$files $CVSROOT/CVSROOT/history |") || die;
                          @h = <HISTORY>;
                          close(HISTORY);
                @@ -84,8 +86,8 @@ sub todate {
                  sub mail_notification {
                          my($file, $fullname, $old, $new, $tmp);
  
                - open(MAIL, ">> /tmp/commitlog");
                + open(MAIL, "| $sendmail -odb -oem -t");
                          print(MAIL "$subject");
                          print(MAIL "$header");

    - loginfo に
            DEFAULT $CVSROOT/CVSROOT/mailto-committers.pl %{sVv} $USER メールアドレス
        を追加し、commit。

No. 2628 # kouhei 2002/04/12 (金) 14:06:41
mailto-committers.plの方法を試しましたが結果は同じで1分以上待ってから送信されます。
%mail メールアドレスは普通に送信されました。
もう少し調べてみます。

No. 2629 # john 2002/04/13 (土) 23:20:13
はじめまして、メールサーバの管理をしているのですが、
最近サーバがpopユーザ数に対応しきれず、
pop.lockがかかってメールが取れない事が頻繁に発生しています。
popデーモンはqpopperをつかっています。

そこで、このロックの解除方法で疑問があります。

qpopperが起動すると、まず、/var/mai/.user-id.popファイルにコピーを作成。
無事にコピーが終わると、/var/mai/user-idはサイズ0に切り詰められる。
POPサーバーは、このコピーと、解析した結果を元にクライアントとやりとりします。
  
ネットで調べると、.user-id.popファイルを削除する方法をよく見かけますが、
途中でセッションが切れてロックファイルが残ってしまったような場合、
この方法では受信し切れなかった分のメールはなくなってしまうのでしょうか?
ほっとけば30分でロックファイルはなくりますが、
これもただ強制的にロックファイルを削除しているだけなのでしょうか?

また、popのプロセスをkillする方法もありますが、この場合のロックファイルは
どう処理されるのでしょうか?

ご指導、宜しくお願いします。

No. 2630 # 68user 2002/04/15 (月) 07:54:54
>>2629 john
一口に qpopper と言っても、2.5x 系、3.x 系、4.0.x 系 などがあります。
ちゃんとバージョンを書きましょう。

> qpopperが起動すると、まず、/var/mai/.user-id.popファイルにコピーを作成。
> 無事にコピーが終わると、/var/mai/user-idはサイズ0に切り詰められる。
> POPサーバーは、このコピーと、解析した結果を元にクライアントとやりとりします。

4.0.3 では、
    認証完了
    → user-id.lock 作成
    → user-id を .user-id.pop にコピー
    → user-id を 0 バイトに
    → user-id.lock 削除

でした。「pop.lock」ってどのことを指してますか? あるいは本当に
「pop.lock」というファイルがあるのでしょうか?

No. 2631 # 小僧 2002/04/15 (月) 21:40:53
お世話になります、小僧です。
質問をさせてください。

あるシェルをバックグランドで実行させ、
その後Window を閉じる、という処理を行おうとしています。

過去ログなどを参照した結果、実行コマンドは
nohup ???.sh &
でいいと思うのですが、終了のさせかたに疑問が残ります。
と、言うのも logout コマンドは受け付けてくれるのですが、
exit コマンドは 1 回目は受け付けてくれません。
( 2 回叩くと exit してくれます・・・)

本で調べた結果、exit は「シェルスクリプトを終了」し、
logout は「ログインシェル」を終了させると書いてありましたが、
この意味するところがわからなく、困っています。

この 2 つのコマンドの違いが分かるか方がいらっしゃいましたら、
アドバイスをお願い致します。

−−−
OS は AIX 4.3
シェルは ksh
調べた本は「UNIX クイックリファレンス」
です。

宜しくお願い致します。

No. 2632 # 68user 2002/04/16 (火) 16:31:53
>>2631 小僧
> logout コマンドは受け付けてくれるのですが、
> exit コマンドは 1 回目は受け付けてくれません。
それはまた謎な話ですね。
    % nohup sleep 100 &
    % exit
でも再現しますか?

単に (nohup を実行せずに)
    % exit
だと?

また、「受け付けてくれない」とはどういう状況を指してますか?
何かエラーメッセージは出ますか?

No. 2633 # 小僧 2002/04/16 (火) 17:25:42
>>2632 68user
お世話になります、小僧です。
早速の返信、ありがとうございます。

68user さんが記述されているコマンドを実行してみました。
以下、結果です。

---------- Start
# nohup sleep 100 &
[1] 37802
# nohup の出力を nohup.out に送信します。

# exit
実行中のジョブがあります。

---------- End

情報が足りなかったのですが、
「受け付けてくれない」というのは
"実行中のジョブがあります。"メッセージが
表示されて、終了されないことを指しています。

ちなみに、上記の状態でもう一度「exit」を実行すると、
上手く画面が消えてくれます。

宜しくお願い致します。

No. 2634 # 68user 2002/04/16 (火) 19:33:09
>>2633 小僧
> "実行中のジョブがあります。"
それはシェルが
    「実行中のジョブがあるけど、本当に exit で抜けてよいのか?」
と親切に聞いてくれているのです。

これはただの警告であって、抜けようと思えばいくらでも抜けられます。
二度目の exit は
    「警告したにもかかわらず再度 exit しようとした」
ということで、今度は抜けることができます。

FreeBSD や Solaris では、端末を持たないコマンド (?) をバック
グラウンドで実行している場合は、素直に exit させてくれるん
ですけど、AIX はそうではないようですね。

No. 2635 # 小僧 2002/04/17 (水) 10:06:41
>>2634 68user
お世話になります、小僧です。

早速の回答、ありがとうございました。
別に exit と logout のコマンドが
違う訳ではなかったのですね。

今後も宜しくお願い致します。

No. 2636 # Yasuo Y 2002/04/17 (水) 10:58:30
はじめまして。検索していてここに辿り着きましたよろしくお願いいたします

SunOS 5.7 cshでファイルをテープにバックアップする時に
tarでやっているのですが、ファイル数が多くなって出来なくなって
しまいました(argument too long)

echo /パス/ | xargs tar cvf
としても、だめみたいです(xargsは外部コマンドでした)。

ファイル数を減らすという他に何か良い方法はないでしょうか。
お忙しいところ誠に恐縮ですが、宜しくご教示ください

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2637 # 68user 2002/04/17 (水) 22:11:21
>>2636 Yasuo Y
> echo /パス/ | xargs tar cvf
> としても、だめみたいです(xargsは外部コマンドでした)。
xargs tar cvf /dev/XXX ですよね?

で、「だめ」とはどういう意味ですか? 少なくとも Argument too long は
出ないはずですが。

ただしこの場合、
    % tar cvf /dev/XXX file1 file2 file3 ....
    % tar cvf /dev/XXX file1500 file1501 file1502 ....
    % tar cvf /dev/XXX file4000 file4001 file4002 ....
と複数回 tar が実行されますが、それでいいのですか?

解決策は tar の -I オプションじゃないかと思います。

No. 2638 # 68user 2002/04/17 (水) 22:15:04
>>2635 小僧
> 別に exit と logout のコマンドが違う訳ではなかったのですね。
違いますよ。logout はログインシェルを終了させるとき、exit は
シェルを終了させるときに使います。ログインシェルというのは、
    Login:
    Password:
というような認証の直後に起動したシェルのことです。

No. 2639 # Yasuo Y 2002/04/18 (木) 11:13:39
>>2637 68user
68Userさん、ありがとうございます。
tar cvf /dev/XXX -I /パス名1 -I /パス名2 -I /パス名3
として実行してみたのですが、変な文字がコンソールにいっぱい出てきて
すぐ止めました。
それから、Argument Too Longも相変わらず出ています。
せっかく教えていただいたのに解決できませんでした……。
たくさんあるファイルをテープにバックアップしている
ところは、一体どうやってやっているんでしょうか??

No. 2640 # 68user 2002/04/18 (木) 11:35:29
>>2639 Yasuo Y
> tar cvf /dev/XXX -I /パス名1 -I /パス名2 -I /パス名3
man tar しました? -I の意味を調べました?

あと、別解としては、
    % echo * | xargs tar rvf /dev/XXX
かなぁ。うまくいくかどうかはわかりませんが。

No. 2641 # あき 2002/04/19 (金) 10:57:34
はじめまして
UNIXについて質問なのですが、a.txt と b.txt というファイルがあり
aの中には abcdefg という内容があり bの中には hijklmn という内容があります。そこで a の中に b の内容をコピーしたいのですが、どのようにコピーしたらよいのですか、教えてください。
行のコピーの仕方ってあるんですか?

No. 2642 # Yasuo Y 2002/04/19 (金) 19:22:04
>>2640 68user
とりあえずうまくいってるようです。
Cシェルの実行中に出てきたエラーメッセージなのですが
Argument Too longは、他のところで出ているもののようでした。
どうもお騒がせしました。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2643 # ある厨 2002/04/19 (金) 21:49:30
ども初めまして。
http://x68000.startshop.co.jp/%7E68user/cgi-bin/<script>alert("----")</script>
のエラーページでいま話題のクロスサイトスクリプティングの脆弱性を確認出来ました。
たぶん、error.cgiの原因と思われます。
私も利用させてもらっていますがperlのことは分かりませんので
Fixされるようお願いします。

No. 2644 # 名無しさん 2002/04/19 (金) 23:32:37
>>2643 ある厨
なるほど。外部からの情報をちゃんとチェックしてないな。
ふむふむ。賢い

No. 2645 # 68user 2002/04/23 (火) 01:51:41
File System full で、しばらくこのサーバにアクセスできない状態に
なってました。

>>2643 ある厨
> のエラーページでいま話題のクロスサイトスクリプティングの脆弱性を確認出来ました。
ご指摘ありがとうございます。< > を &lt; &gt; に置換するようにしました。
あと、Host: ヘッダにも全く同じ脆弱性がありましたので直しました。

http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/error.cgi

>>2641 あき
いまいちやりたいことがわかりません。例をあげて説明して下さい。

No. 2646 # knockout 2002/04/23 (火) 13:09:04
はじめまして。
UNIXを始めたばかりの初心者なんですが、
あるフ゜ロク゛ラムから、その日の日付の入ったファイル名を持つファイル
自動生成させたいのですが、
どうもうまく出来ないんです。

というのも、僕はdateの情報をcutもしくは、date +%y%m%d"などで、
その日の日付を抜き取り、変数に入れた後、
touch $[変数名] と、そんな感じでやってみたんですが、
これって、パイプを使っても変数の中に日付って入らないですよね?

出来れば、[日付入りファイル名]の作り方を教えて頂けませんか?
ぜんぜん違うアプローチでその方法があるならそちらでも一向に構いませんのでm(__)m

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2647 # 68user 2002/04/23 (火) 13:25:36
>>2646 knockout
言語は何ですか。

No. 2648 # knockout 2002/04/23 (火) 14:16:58
返答どうもです。
ksh見たいです(w

No. 2649 # knockout 2002/04/23 (火) 14:22:24
返答ありがとうございます。
えっと、「echo $SHELL」と入力して、
/usr/bin/ksh
と出ますので、kshですね。
すいません、こんなふざけた返答で(^^;

No. 2650 # 68user 2002/04/23 (火) 14:28:07
>>2648 knockout
    nowdate=`date +%y%m%d`
    echo $nowdate
と `` を使います。

パイプを使うこともできなくはありませんが、無駄に長くなります。
複数行を処理する必要がないなら `` でよいでしょう。
    date +%y%m%d | while read line
    do
        echo $line
    done

No. 2651 # knockout 2002/04/23 (火) 14:32:05
出来ました!!
なるほど``ですね。
早速、ホンチャンのプログラムに組み込んできます。
ありがとうございましたm(__)m

No. 2652 # knockout 2002/04/23 (火) 14:54:14
度々すいません。
えっと、さっきの返答してもらった最後の記述
        date +%y%m%d | while read line
        do
                echo $line
        done
は、何を行っているんでしょうか?
僕の解釈ではdateで表示したのを、変数lineに代入、
その後がいまいち理解が、
echo $lineは分かるんですけどね、
doとdoneを使っている意味が
はっきり分からないんです。
それぐらい調べろっていわれそうですが、
どうか一つ宜しくお願いします(^^;

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2653 # H.M [E-mail] 2002/04/23 (火) 17:53:18
はじめまして。LINUXをはじめたばかりのものです。
c言語用FTPクライアントのプログラムを
ダウンロードしたのですが、
実行方法がいまいちわかりません。
他のサイトでサーバ、クライアントのファイルは
それぞれで実行すればよかったのですが、
今回の分はFTPサーバを自分で作らなければ
ダメなのでしょうか?
かなり初歩的な質問だと思いますが
教えてください。

No. 2654 # 田中 [E-mail] 2002/04/23 (火) 20:28:04
リンク先があるかどうか知るにはどうすればいいですか?
具体的には他人に書き込んでもらったアドレスの、
例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。
それと、絵の大きさも知りたいです。
それで大きすぎたら表示しないようにしたいのですが。
よろしくお願いします。

No. 2655 # apex 2002/04/24 (水) 12:07:31
はじめまして、apexと申します。
今、Cシェル(OSは、ソラリス8)で、簡単なプロセス管理ツールを作成しています。
この時、以下のことでうまく動作せず悩んでおります。
もし、おわかりになれば教えてください。

1:Cシェル内で、rootユーザになる方法。
            要するに、パスワードをシェル内に記述して、コマンドラインに渡せ  るかどうか?

2:awkにて、プロセスを切り出す方法
            「ps -ef | grep ABC」からABCを認識させ、ABCプロセスが存在しな   ければ、起動する。
                この時、ps-efコマンドを実行した時の、第2パラメータが      ”root”で、第9パラメータが”ABC”であるものを切り出したい。

以上、お手数ですが、よろしくお願いします。

No. 2656 # sys [E-mail] 2002/04/24 (水) 13:40:11
>>2655 apex
1についてですが、
expectというコマンドがあれば、これを使ってみてはどうでしょうか。
ここにサンプルがありますね。
http://www.math.s.kobe-u.ac.jp/~kodama/tips-expect.html

No. 2657 # 68user 2002/04/24 (水) 17:57:37
>>2652 knockout
> doとdoneを使っている意味がはっきり分からないんです。
while 〜 do 〜 done でひとまとまりのループです。なぜループを使うかと
言うと、複数行の出力を1行ずつ取り出して処理しているからです。


>>2653 H.M
> c言語用FTPクライアントのプログラムをダウンロードしたのですが、
> 実行方法がいまいちわかりません。
    http://X68000.startshop.co.jp/~68user/net/c-ftp-1.html
ですか? このページに書いてある通りに実行すれば、引数で指定した
FTP サーバに接続しにいくはずですが…。


>>2654 田中
> 具体的には他人に書き込んでもらったアドレスの、
> 例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。
リンクチェッカやダウンローダを使います。

> それと、絵の大きさも知りたいです。
ヘッダを解析します。各種ライブラリやコマンドを使ってもいいです。

> それで大きすぎたら表示しないようにしたいのですが。
if 文で判断します。

# 環境も何もわからないと、この程度のことしか言えません。


>>2655 apex
> パスワードをシェル内に記述して、コマンドラインに渡せるかどうか?
できなくはないです。
>>2573 68user
を参照。

が、コマンドラインからだと (端末を握っている場合、という意味) うまく
いかないので、やめといた方がよいでしょう。sudo や expect を使うのが
一番いいです。

> この時、ps-efコマンドを実行した時の、第2パラメータが”root”で、
> 第9パラメータが”ABC”であるものを切り出したい。
    ps -ef | awk '$2=="root" && $9=="ABC" {print}'
    ps -ef | awk '$2~/^root$/ && $9~/^ABC$/ {print}'
あたりでしょうか。

No. 2658 # 田中 [E-mail] 2002/04/25 (木) 12:35:59
2654番の田中です。
お答え有難うございました。
言葉足らずですいません。
perlでcgiを勉強しながら製作中です。
でもう一度、
リンク先があるかどうか知るにはどうすればいいですか?
具体的には他人に書き込んでもらったアドレスの、
例えばhttp://www.a.com/a/a.gifの絵が存在するかどうか
知りたいのです。
それと、絵の容量も知りたいです。
それで大きすぎたら表示しないようにしたいのですが。
よろしくお願いします。

No. 2659 # 68user 2002/04/25 (木) 23:36:37
>>2658 田中
> リンク先があるかどうか知るにはどうすればいいですか?
wget などのダウンローダやリンクチェッカを使います。現在のサーバに
それらのソフトが入っていなければインストールします。あるいは
libwww などの perl モジュールをインストールするのもよいでしょう。
それもできないなら、
    http://www.studyinghttp.net/Hyd_HTTP.html
がお勧めです。

> それと、絵の容量も知りたいです。
「容量」とはファイルサイズのことですか? 前の質問では「大きさ」と
あったので縦横のサイズかと思ったのですが。

ファイルサイズなら Content-Length ヘッダを見ます。Content-Length
ヘッダが付かない場合もあるので、その際は実際にダウンロードして
そのサイズを調べる)。

縦横のサイズなら、file コマンドや ImageMagick 付属の identify
コマンドを使います。
    % file hoge.jpg
    hoge.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), 72 x 72
    % identify hoge.jpg
    hoge.jpg JPEG 25x40 DirectClass 8-bit 912b 0.0u 0:01

> それで大きすぎたら表示しないようにしたいのですが。
「表示」というのも曖昧です。一度サーバ側にダウンロードしてから
表示させるのか、あるいは <img src="..."> を出力するだけなのか。

どちらにせよ、ファイルサイズなり縦横のサイズなりを if 文で
判断すればよいでしょう。

No. 2660 # 68user 2002/04/26 (金) 00:01:47
>>2658 田中
また無駄な回答をしてしまった。
    http://script.lovely.to/bbs/infolng.cgi?print+200204/02040010.txt
もうこないでね。

No. 2661 # しなくろ 2002/04/28 (日) 01:38:21
大学でUNIXを勉強しているのですが…
ただ教授の命令どおりにコマンドを入力して実行しているだけで、
何をやってて何をするためにUNIXを勉強しているのか分かりません。

大体パソコンをかまうのにも慣れてない自分は、
「この〜〜〜を、〜〜〜して」  ※〜〜〜→聞きなれない英語
といわれ続けちんぷんかんぷんです。

どうしたら上手くUNIXを学べれるのでしょうか?
もしアホでも分かるお勧めの本とかあれば紹介していただきたいのですが…

No. 2662 # 68user 2002/04/28 (日) 12:20:59
>>2661 しなくろ
興味がなければ学ばない。でも単位を落とさないように暗記だけする。
ってのがいいんじゃないでしょうか。興味がわかないことを勉強しても
時間の浪費にしかならないと思います。

興味はあるけどわからないって場合は…どうしたもんでしょうかねぇ。

No. 2663 # ある厨 2002/04/29 (月) 23:15:47
Fixども。
設定完了しましたのでお礼まで。

No. 2664 # なは 2002/04/29 (月) 23:26:36
はじめまして。とても参考になります。

telnetのところでWindowsではtelnetでホームページはみれないのでしょうか?

No. 2665 # 68user 2002/05/02 (木) 00:06:53
>>2664 なは
> telnetのところでWindowsではtelnetでホームページはみれないのでしょうか?

http://x68000.startshop.co.jp/~68user/net/win-telnet.html では
どうでしょうか。

と言っても Windows 2000 の telnet.exe では設定方法が違う
んですけどね。

No. 2666 # a-jmj 2002/05/03 (金) 09:59:32
perlについてですが、無名のハッシュ又は配列のレファレンスに、配列要素を追加する方法を教えてください。ついでに配列の参照の仕方も教えもらえると有りがたいです。

以下のソースは変数を@line_0 .. 9までと変数を9個使っていますが、これを$line_{0} .. {9}と一つの変数にさせたいと思っています。

while (<IN>) {
  local($date) = (split /<>/)[0];
  push (@{'line_'.$date},$_);
}
foreach (0..9) {
  foreach $line (@{'line_'.$_}) {
    print $line;
  }
}

No. 2667 # 68user 2002/05/03 (金) 12:24:15
>>2666 a-jmj
ん〜、$line_{2} で 2 行目のデータが得られればいいのですか?
そのとき得たいデータは日付 ($date) と行全体?

No. 2668 # a-jmj 2002/05/03 (金) 13:20:04
説明不足ですいません。
1<>aaaa<>
1<>bbbb<>
2<>cccc<>
というデータがあったとしたら、
$line_{1}[0] = '1<>aaaa<>'
$line_{1}[1] = '1<>bbbb<>'
$line_{2}[0] = '2<>cccc<>'
といった風にしたいのですが、以下のソースではエラーが出てしまいます。
open(IN,"file");
while (<IN>) {
    local($date) = (split /<>/)[0];
    push (@line_{$date},$_);
}
colse(IN);
これをする目的は下のように全体のデータを何度も回転させたくないので、
データを分別しときたいのです。
open(IN,"file");
@lines = <IN>;
colse(IN);
foreach (0..9) {
  print $_;
  foreach $line (@lines) {
    my($i,$data) = split /<>/,$line;
    print $data if ($i == $_);
  }
}

無名のリファレンスを使いたい理由としては、@{'line_'.$date}といった感じの変数を使いたくないのと、効率を考えたらリファレンスが使えないことです。

No. 2669 # 68user 2002/05/03 (金) 17:19:29
>>2668 a-jmj
こんな感じでしょうか。

    open(IN,"file");
    while (<IN>){
        chomp;
        local($date) = (split /<>/)[0];
        push(@{$line_{$date}}, $_);
    }
    close(IN);
    
    foreach $date (sort keys %line_ ){
        foreach (@{$line_{$date}}){
            print "$_ ";
        }
        print "\n";
    }

実行結果:
    1<>aaaa<> 1<>bbbb<>
    2<>cccc<>

No. 2670 # a-jmj 2002/05/03 (金) 20:44:32
どうもありがとうございます。
ええそうです、求めていたのはこれです。
無名も普通のリファレンスみたいに使うのですね。
なかなかリファレンスを詳しく書いた資料がないものですね。
実際の運用には8桁の日付で、分別させているのですが、以前の方法でしたら、
use strict;を使おうにも変数名が不規則なうえ、指定してやらなければ成らな
い変数が膨大な数になってしまうことが問題でした。
その他に良い分別方法があったら教えていただけたら、幸いです。

No. 2671 # 68user 2002/05/03 (金) 23:30:27
>>2670 a-jmj
> その他に良い分別方法があったら教えていただけたら、幸いです。
データ構造を変えていいなら、各行に一意の番号を付けて
    $data{123}{DATE} = '20020101';
    $data{123}{NAME} = 'hoge';
    $data{123}{MAIL} = 'foo@bar';
などとするのが好みです。

データ構造を現行のままにするなら案の通り
    $data{20020101}[0] = '1<>aaaa<>'
とするのも悪くないでしょう。

あるいは最初に <> を解析しておいて
    $data{20020101}[1]->{NAME}
といった形でアクセスできるようにするという手もあります。以下サンプル。

        my %data;
        open(IN,"file");
        while (<IN>){
                chomp;
                my ($date,$name,$mail,$content) = split /<>/;
                my %hash;
                $hash{NAME}=$name;
                $hash{MAIL}=$mail;
                $hash{CONTENT}=$content;
                push(@{$data{$date}}, \%hash);
        }
        close(IN);

        foreach $date (sort keys %data ){
                print "$date: ";
                foreach my $ref_hash (@{$data{$date}}){
                      print "$ref_hash->{NAME} $ref_hash->{MAIL} $ref_hash->{CONTENT} ";
                }
                print "\n";
        }

        print "おまけ: $data{20020101}[1]->{NAME}\n";


    データファイルの内容:
        20020101<>名前1<>メールアドレス1<>発言内容1
        20020101<>名前2<>メールアドレス2<>発言内容2
        20030203<>名前3<>メールアドレス3<>発言内容3

    実行結果:
        20020101: 名前1 メールアドレス1 発言内容1 名前2 メールアドレス2 発言内容2
        20030203: 名前3 メールアドレス3 発言内容3
        おまけ: 発言内容2


ただし、perl でちょっと凝ったリファレンスを使い出すと、とてつもなく
ソースが汚くなるので、クラスを使いたくなるかもしれません。そして
クラスを使い出すと、perl の OO に嫌気がさして ruby を使い出すかも
しれません。

なので、ほどほどのところでやめておく方がいいのかも。

No. 2672 # Shino [URL] [E-mail] 2002/05/07 (火) 00:59:24
始めまして。C-CGI システム構築をHTMLのタグレベルで実現するツール
の紹介ページが shino.server-club,net/index.htm にあります。皆様の
御参考になればとCMまがいの書き込みを致しました。

No. 2673 # 名無しさん 2002/05/07 (火) 18:02:44
>>2672 Shino
こんなもので金が取れると思ってるの??

なんか最初からあやしげな臭いがプンプンしてたけど、やっぱり。。
http://shino.server-club.net/cgi-bin/DS.cgi?COMMAND=Html&HTML=../../../../../../../etc/passwd
注:Referer。

汚染チェックしてね。

No. 2674 # Shino [E-mail] 2002/05/07 (火) 23:47:36
名無しさん様、大変失礼を致しました。

No. 2675 # ふくし [E-mail] 2002/05/08 (水) 00:27:08
おひさしぶりですみません。質問です。
よく、インターネット(Web、メール)で
(いわゆる)半角カナを使ってはいけないといわれますが、
この理由が、
・インターネットは ASCII 以来、7ビットしか通さない伝送路が
    使われてきたので、7ビットコードを使うのが望ましい
・日本の場合 ISO-2022-JP が標準
・ISO-2022-JP は、4つの面に(いわゆる)半角カナ以外の
    コードが割り当てられている。
・つまり、ISO-2022-JP には半角カナが「ない」
・ないものは使ってはいけない
という風に覚えていましたが、
UNIX の mule や Windows の xyzzy で ISO-2022-JP を指定して
(いわゆる)半角カナを入れるときの、
「ESC)I がエスケープシーケンスで(いわゆる)半角カナ」
というコード系は、何に規定されているものなのでしょうか。
こんなの、ちょっと調べろよって話だと思うんですが、
調べ方が悪いのかこれだ、という情報に当りません、、。

No. 2676 # 68user 2002/05/08 (水) 01:05:41
>>2675 ふくし
> 「ESC)I がエスケープシーケンスで(いわゆる)半角カナ」
> というコード系は、何に規定されているものなのでしょうか。
何にっていうのは、どの規格で定められているかってことですよね。

http://www2d.biglobe.ne.jp/~msyk/charcode/jisx0201kana/ には
    JUNET方式のエンコーディング方式を素直に拡張すれば、この
    エンコーディング方式になる。
とありますが、何をどう素直に拡張すればこうなるのか (僕の知識
不足のため) 理解できません。

http://www.kanzaki.com/docs/jis-mail.html には
    RFC1468には記載されていませんが、定義からESC ( I が7ビットの
    カタカナを指示(designate)するエスケープシーケンスとなるので、
とありますが、どこをどう読めば ESC ( I が 7bit カタカナを指示する
ことになるのか これまた (僕の知識不足のため) 理解できません。

わかったら僕にも教えて下さい。

No. 2677 # 68user 2002/05/08 (水) 01:27:53
>>2675 ふくし
> よく、インターネット(Web、メール)で(いわゆる)半角カナを
> 使ってはいけないといわれますが、
おっと、見逃してた。ここで「web」を挙げているのは誤りです。

インターネット (≒ TCP/IP) は 8bit を通します。FTP も HTTP も
8bit through です。過去 7bit しか通さない実装が多かったのは
SMTP で、7bit しか通らないところに日本語を通そうという苦肉の
策が、後の ISO-2022-JP につながる JUNET コードです。

よって、web で半角カナ使用禁止という話はありません。もちろん web で
    Content-type: text/html; charset=ISO-2022-JP
としているならば半角カナは使えませんけれども。

ちなみに、個人的には半角カナは嫌いでしたが、2ch で AA を見てると、まぁ
半角カナもいいかなと思い始めていました。が、半角カナは EUC-JP と
Shift_JIS でバイト長が違うため、項目長を事前に決めておかなければ
ならない DB では何かとトラブルの元です。よって、やっぱり半角カナ
嫌いに戻ってしまいました。

No. 2678 # ふくし [E-mail] 2002/05/08 (水) 01:29:20
そっかー。68user さんもわからないと聞いて
少なくともつまんない質問ではなかったとわかって
なんかホッとしました(^o^)
マルチポストになりますが、別所で聞き、なにかわかったら
また書きます。ありがとうございます。
他の方も、なにかありましたらご教示ください。

No. 2679 # へにか [URL] 2002/05/08 (水) 08:16:13
>>2675 ふくし
>>2676 68user
お久しぶりです。
http://euc.jp/i18n/charcode.ja.html
によると、
>終端文字と文字集合の対応は登録制になっており、 ECMAという組織が登録簿を管理して います。
(略)
>・94文字集合
(略)
>I
> JIS X 0201カタカナ
>J
> JIS X 0201ローマ文字
とあります。
先にECMAが決めたのか、誰かが既に決めたのをECMAが登録したのかは、
わかりませんが。

No. 2680 # 68user 2002/05/08 (水) 22:39:05
>>2679 へにか
なるほどなるほど。
    http://www.ecma.ch/ecma1/STAND/STANDARD.HTM
のどれかにその記述があるのでしょうか。PDF しかないようなので
中身は見ていませんけれども。

ちなみに G0 とかロッキングシフトなども理解してないんですが (どこの
解説を読んでもよくわからん)、初心者向けの解説がどこかにないもので
しょうか。

No. 2681 # ふくし [E-mail] 2002/05/09 (木) 02:51:01
へにかさん、ありがとうございます。
わたしも xyzzy ユーザーズMLで質問を投げました。
いまメーラーが使えないので、記憶でサマリーすると、

・ふくしが ISO-2022-JP の4つの面にそれぞれ半角カナ以外の
    コードが入っていると思っているのはカン違いで、
    ISO-2022-JP は G0 集合だけを使い、エスケープシーケンスで
    切り替えて使う(G1〜G3 は使用禁止)

・そこに割り当てられるコードが
(RFC 1468 より引用)
> Esc Seq Character Set ISOREG
> ESC ( B ASCII 6
> ESC ( J JIS X 0201-1976 ("Roman" set) 14
> ESC $ @ JIS X 0208-1978 42
> ESC $ B JIS X 0208-1983 87
    の4種類で、7ビットカナ(JIS X201 の右半分)は
    意図的にはずされている

・JIS X201 のコード表と、終端記号の I は、
    へにかさんも書いておられますが ISO の登録簿にある。
    http://www.itscj.ipsj.or.jp/ISO-IR/
    で登録されているものは確認できる。

・登録を行う=>終端記号が割り当ててもらえる、
    という流れで、登録作業は
    ISO/IEC JTC1/SC2 の事務国である日本(!)

ということだそうです。
ESC(I の歴史は ISO-2022-JP より古く、
ISO-2022 のフルセットを使えば半角カナが使えるように
(だと思うんですが、、)
定義されているようです。

他にもいくつか ISO-2022-JP の半角カナ拡張はありますが
(G1 集合に半角カナがあるとみなして、
    往年の ISO 646 のように SI/SO で切り替えたり。
    これは Microsoft Internet Mail 方式?)
・G0 のみしか使わない
・ISO の登録簿にあるコード表と終端文字を使う
という点で、最も正当で自然な方法と ESC(I 式が
みなされているそうです。

で、推奨される文献としては
http://euc.jp/i18n/charcode.ja.html#chap4
が上げられていました。
xyzzy の ML はアーカイヴが公開されているので、
教えてくださった方との実際のやりとりはそこで読めると思います。

いかがでしょうか。
こんなところでぼくは満足ですが、、。

で、2ch の AA ってなんですか?(^^)

No. 2682 # ぐっさん 2002/05/09 (木) 21:56:25
もう、だめ・・・
CPU使用率の確認でsar -vってのあるんだけど、そのなかの
file-szはシステムファイルテーブルの現在サイズ、および最大サイズ
ってとこまではわかってるんですけど、
システムファイルテーブルって何を管理してるテーブルなの?
だれかおしえて・・・
システムファイルだよっていうのは無しで。

No. 2683 # へにか [URL] 2002/05/09 (木) 23:42:19
>>2680 68user

あいにく、僕もpdf-readerを持っていないので、代わりに以下の文書を見つけました。

http://www.io.com/~kazushi/encoding/cslist.html
http://homepage1.nifty.com/emk/halfkana.html

http://web.kyoto-inet.or.jp/people/tomoko-y/biwa/wnn/iso2022.html
>最新のエスケープシーケンス一覧と、それに対応する各文字集合表は、
>ECMA から直接、入手可能である。スイス連邦にあるECMA の連絡先は、以下の
>とおりである。

>  メールアドレス:helpdesk@ecma.ch

>住所: ECMA   RUE DU RHONE 114
> CH-1204 GENEVE SUISSE

また、僕は全部読んでないし、また、僕が理解できるかどうかは怪しいですが、
http://euc.jp/i18n/charcode.ja.html
よりも良さそうな解説は、あいにくながら、見たことありません。

>>2681 ふくし
記憶に頼っているとはいえ、見事な纏めですね。あとでxyzzyのメーリングリスト、
あさってみますね。

No. 2684 # 68user 2002/05/10 (金) 02:49:35
>>2681 ふくし
> で、2ch の AA ってなんですか?(^^)
こんなのです。
    http://members.tripod.co.jp/maruheso/aadic/
Ascii Art と言っても、全然 Ascii じゃないですけど。

>>2682 ぐっさん
> システムファイルテーブルって何を管理してるテーブルなの?
その時点で使用 (open) している i-node の数、じゃなかった
でしょうか。違ったっけ。

No. 2685 # サト [E-mail] 2002/05/12 (日) 03:24:18
はじめまして、サトと申します。
unixについて知識のある方、お助け下さい。。
会社のunixサーバを壊してしまいました。。
とある理由で、/usr/lib/libdl.so.1 が何者かも知らずに
mv libdl.so.1 libdl.so.1.org などと実施してしまいました。
(osパッチを当てた後くらいから、コンパイルのリンクエラー
でlibdl.so.1うんぬんと出てきたので、このライブラリだけ旧版に
戻してもみうと思って行ってしまいました。。)
そしたら、それ以後のユーザーコマンドが一切実行できなくなりました。。
ユーザーコマンドのほとんどが libdl.soをリンクしていたようです。
よって、mvで戻そうとしてもmvもcpも起動できなくなって戻せない状態です。。
OSの再インストールを覚悟していますが、この状態で何か対処方法は
ありますでしょうか?
どなたかお助け下さい。。よろしくお願いします。。。

No. 2686 # 68user 2002/05/12 (日) 06:16:57
>>2685 サト
OS は何ですか? 「UNIX」と言ってもいろいろありますので。

Solaris ならこんな感じで。
    http://www.google.com/search?q=solaris+%95%9C%8B%8C+CD-ROM+mount&hl=ja

また、HDD を別の UNIX マシンにつないで、適当な場所 (/hoge とか) に
mount して、
    # mv /hoge/lib/libdl.so.1.org /hoge/lib/libdl.so.1
などとする手もあります。

No. 2687 # サト [E-mail] 2002/05/12 (日) 16:02:04
>>2686 68user
68user様、レス大変ありがとうございます。
どうにもならないのかと思っていたので、少し安心しましたです。
昨日から相当凹んでましたので。。
OSはソラリスで、マシンはSUNウルトラだっと思います。
(ソフト開発専門なのでマシン環境などはうとくて。。)
週明けにマシン環境の担当と相談してみます。
ありがとうございました。

No. 2688 # さとるる 2002/05/13 (月) 12:34:52
HP−UNIXでman sarを実行したところオプションvのところで
”text-sz (該当しません)”となっていましたがtext-szは
もともと何の監視のためにあったのか知ってたら教えてください。

No. 2689 # moto 2002/05/16 (木) 06:46:43
お世話になります。トータルで3回目の質問になるのですが、
perl で例えば

<>aa<>bb<>cc<>dd<>  ←1行目
ee<>ff<>gg      ←2行目

このようなデータがあった場合
<>aa
<>bb
<>cc
<>dd
<>ee
<>ff
<>gg
のように出力させるコードを教えてください。
よろしくお願いします。

No. 2690 # ふくし 2002/05/16 (木) 07:09:08
<> が区切り文字だと事前にわかっていれば、
chomp で改行を除き、
<> で split して、<> を改めて付加して出力、ですね。

通常のフィルターの書き方はわかりますか?
chomp、split の使い方は man perlfunc か、
ラクダの本を見てください。
(どっかで日本語の man perl が公開されてたな)

<>が区切り文字だとわかっていなければ、無理だと思います。
というのは、たとえば 1 行目で、<> が区切りなのか、
<>a なのか、<>aa なのか、機械には不明だからです。

No. 2691 # aaa 2002/05/16 (木) 13:00:16
以下はどうでしょうか?

#!/usr/local/bin/perl

my(@array) = ( "<>aa<>bb<>cc<>dd<>", "ee<>ff<>gg" );

foreach $aref ( @array ) {
        $str .= $aref;
}

$str =~ s/\</\n\</g;
$str =~ s[ ^\n ]{}gsx;
print "$str\n";

No. 2692 # moto 2002/05/17 (金) 06:37:10
ふくしさん、aaaさん、
お二人のコードを参考にして解決できました。
ありがとうございました。

No. 2693 # 名無しさん 2002/05/17 (金) 14:02:00
>>2691 aaa
これはちょっと参考になりませんねぇ。。(aaaさんゴメン)
ちょっと間違ってます。

("[*1]<>aa<>bb<>cc<>dd<>[*2]", "[*3]ee<>ff<>gg"
与えられた配列の、*1〜3の所に項目が一つ増えただけで思ったようには動かないと思う。。

1つの変数にぶち込んだ時点で、*2 *3の区別ができなくなる。
そして、
$str =~ s[ ^\n ]{}gsx;
ですが、、^\nでマッチするところは、s(単一行として扱う)が付いてるから、頭の所("\n<>aa...")の\nが取れるだけだし、、gを付ける必要は無い
ここでまた一つ問題がある。。多分、motoさんの発言を見ると、*1の部分にも項目が来ると思われる。。"xx<>aa<>bb..."
そうすると、1行目に<>が入らず、、
xx
<>aa
...
ってなる。。。
あともう一つ。@arrayは配列だって分かるから括弧を付ける必要は無い
my @array = (...)こんな感じ

No. 2694 # 名無しさん 2002/05/17 (金) 14:21:57
自分で書いてみた。

my @target = ("<>aa<>bb<>cc<>dd<>", "ee<>ff<>gg");

my @result = map {
                my @tmp = split(/<>/);
                shift(@tmp) if $tmp[0] eq '';
                @tmp;
        } @target;


foreach (@result) {
        print "<>$_\n";
}

No. 2695 # G 2002/05/17 (金) 20:32:00
HP-UNIXで過去の日付を表示させる方法しりませんか?
ちなみにenv TZ=JST-9 dateでは1日分しかさかのぼれないので、
他の方法で知っている人がいれば教えてください。

No. 2696 # 68user 2002/05/18 (土) 01:39:02
>>2695 G
shellutils で GNU 版 date をインストールするか、perl で
    localtime(time()-60*60*24)
などとするのがお手軽なんじゃないでしょうか。

No. 2697 # G 2002/05/18 (土) 02:45:24
>>2696 68user
返答ありがとうございます。
なにぶん初心者なもので、アドバイスの意味があまりわからないの
ですが、これから調べてやってみようと思います。
会社の環境ゆえ、インストールはできないのでperlの方を参考に
させていただきます。自力でわからなかったときはまた、よろしく
お願いいたします。

No. 2698 # KL 2002/05/18 (土) 06:31:39
>>2689-2694

〜嫌がらせ編〜 「暗黙の初期化? 怖いけどイイ!」

while (length($a = substr("<>aa<>bb<>cc<>dd<>" . "ee<>ff<>gg", $b++, 1))) {
    uc($a) ne $a && length($c .= $a) == 2 && print "<>$c\n", $c = ''
}

〜お気楽編〜 「パターンマッチマンセー!」

$a = "<>aa<>bb<>cc<>dd<>" . "ee<>ff<>gg";
while ($a =~ /(\w\w)/g && print "<>$1\n"){}

〜メモリ倹約編〜 「入力元即処理!」

(push @x, "<>aa<>bb<>cc<>dd<>"), push @x, "ee<>ff<>gg";
map {while ($_ =~ /(\w\w)/g && print "<>$1\n") {}} @x;

#またはファイルから読み込む場合
while (<FILEHANDLE>) {while ($_ =~ /(\w\w)/g && print "<>$1\n") {}}

No. 2699 # KL 2002/05/18 (土) 06:41:44
よく拝見すると"Perl"とは入ってないですね 笑
>UNIX、CGI、ネットワーク、Java Servlet についての掲示板

No. 2700 # パルテノ [E-mail] 2002/05/22 (水) 01:07:34
はじめまして
HTTPプロトコルを利用したファイル転送について教えて下さい。

私はグラフィックデザインに関わっているので、インターネットを介して
画像や映像など比較的大きなデータを日常的にやり取りしています。
今は、ICQやMSNメッセンジャーのファイル転送を利用しているのですが
相手のファイアーウォールやルーターの設定から接続出来ない事もあります。

また接続が切れてしまった場合、続きから再開できるレジューム機能についても解説して戴けないでしょうか?

宜しくお願いします。

No. 2701 # 石田安弘 [E-mail] 2002/05/23 (木) 15:48:08
はじめまして。石田と申します。
★件名★「UNIXの部屋」公開ありがとうございます。

*現在、私はlinux(Unix)のシェルプログラミングを勉強中です。
*ところが、manコマンドでは全然分からないので、
  GoogleやMLアーカイブ検索して調べていましたが、

*こちらのUNIXの部屋は非常に分かりやすく参考になります。

*分かりやすいポイントは、
    1)パラメータの意味が日本語で分かりやすく書いてある
    2)具体例がメッセージなど併せて書いてある。
ところが非常に分かりやすいです。

*私が今作っているスクリプトは
  1)redhatのupdateのFTPサイトと自分のpcの
      rpmパッケージリストを持って来て、マッチングして、
  2)不足分のファイル一覧を作成
      この中から必要なファイルをFTPでダウンロード

*とにかく、パッケージのアップデートは手間がかかるので、
  なるべく自動化しようと思っています。

* これからも「UNIXの部屋」がんばってください。

No. 2702 # 68user 2002/05/24 (金) 23:33:00
>>2699 KL
> よく拝見すると"Perl"とは入ってないですね 笑
もちろん Perl は UNIX であります (^^

>>2700 パルテノ
> 続きから再開できるレジューム機能
HTTP にはレジュームのような高級な機能はありません。二回目以降の
接続時に、単にデータの開始バイトを指定しているだけです。

接続が切れた場合は、ローカルに落したファイルサイズを見て、
たとえば 1000バイトまでダウンロードできているなら
    GET / HTTP/1.0
    Range: bytes=1000-
とします (ファイル先頭は 0 バイト目)。

http://www.studyinghttp.net/rfc_ja/2616/sec14.html#sec14.35

>>2701 石田安弘
> *こちらのUNIXの部屋は非常に分かりやすく参考になります。
ありがとうございます。改善点などありましたら指摘して下さい。

No. 2703 # くろう 2002/05/25 (土) 13:00:33
はじめまして、くろうです
C言語初心者がいきなりソケットプログラムを作っているのですが
どんな本を見ても、いまいちわからないことがあるので質問します。

UNIXで最大1Mハ゛イトの可変ファイルソケットで受信しているのですが
ソケットで受信する時、recvのバッファーのサイズはどのくらいとるのが適正値なのでしょう。

        char buf[4096];
        rtncd = recv(sockid,buf,sizeof(buf),0);

受信したテ゛ータは連結編集してます。
よろしくおねがいします。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2704 # 68user 2002/05/25 (土) 13:24:13
>>2703 くろう
100 バイト単位で値を変えて、転送速度を計りましょう。

それが面倒なら 4096 でいいんじゃないでしょうか。
# 僕は面倒なので 4096。

No. 2705 # ゆくま 2002/05/27 (月) 21:04:19
皆さんはじめまして。ゆくまといいます。
いつも「UNIXの部屋」を活用させて頂いております。

現在、UNIXの*について調べているのですが、
もしご存知の方がいらっしゃったら教えていただけますでしょうか?

たとえば、

>ls
file01.dat file02.dat
>cat *

としたとき、catの表示順は必ず、
file01.dat の次に file02.dat
である(つまりソート順)、と決まっているのでしょうか?
もしくは不定なのでしょうか。

よろしくお願いいたします。

No. 2706 # 68user 2002/05/27 (月) 22:10:29
>>2705 ゆくま
> file01.dat の次に file02.dat である(つまりソート順)、
> と決まっているのでしょうか?
はい、ソートされます。sh・csh・tcsh・bash・zsh・ksh
など全てのシェルでソートされるはずです。

ただし cat *2* *1* だと file02.dat file01.dat の
順になります。

No. 2707 # ゆくま 2002/05/28 (火) 10:08:28
>>2706 68user
レスありがとうございます。

これってやはり考えるまでも無い当たり前のことなんですかね。
これまで何年かUNIXを使ってきて、そうだとは思っていた
のですが、改めて調べてみたところ、そのことを明記している
ようなドキュメントを見つけることができなかったのです。

おそらく何らかのパブリックなドキュメントには明記してある
ことだとは思うのですが。。。
ご存知の方はいらっしゃいますでしょうか?

No. 2708 # 68user 2002/05/28 (火) 11:14:07
>2707
> おそらく何らかのパブリックなドキュメントには明記してある
> ことだとは思うのですが。。。
手元にあるマニュアルを調べてみました。

FreeBSD 4.5-RELEASE の tcsh(1)
      ファイル名置換
              単語が `*', `?', `[', `{' のいずれかの文字を含む場合、また
              は 先頭が `~' で始まる場合、その単語はファイル名置換 (ある
              いはグロブ (globbing) と呼ばれます) の候補になります。この
              ような単語をパターン (グロブパターン) と見なし、そのパター
              ンにマッチするファイル名のリストをアルファベット順で整列し
              たもので置き換えます。

FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず

Solaris2.6 の sh(1)
    [ファイル名の生成]
          コマンド実行に先立ち、各コマンドワードは、 *、?、および [ を
          含んでいないかチェックされます。これらの文字のいずれかがある
          と、そのワードはパターンとみなされます。このワードは、パター
          ンと一致する、辞書編集方式の順にソートされたファイル名に置換
          されます。

Solaris2.6 の csh(1) ・・・発見できず

bash-2.0.5a
      Pathname Expansion
              After word splitting, unless the -f option has been set,
              bash scans each word for the characters *, ?, and [. If
              one of these characters appears, then the word is regarded
              as a pattern, and replaced with an alphabetically sorted
              list of file names matching the pattern.

No. 2709 # 68user 2002/05/28 (火) 11:35:03
>>2708 68user
> FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず
FreeBSD 4.5-RELEASE の sh(1) ・・・発見できず

の間違いです。

No. 2710 # ゆくま 2002/05/28 (火) 11:49:20
>2708
>手元にあるマニュアルを調べてみました。

わざわざありがとうございます。
なるほど!灯台下暗しでした(申し訳有りません、、、)。

ちなみにこちらの手元も調べてみましたところ、

Solaris7 のcsh(1)
[ファイル名置換]
          *、?、[、または { のうちのいずれかの文字を含むクォートされ
          てい な い ワード、または ~ で始まるワードは、以下のように
          アルファベット順にソートされたファイル名のリストに展開 (グ
          ロビングとも呼ばれる) されます。

とありました。

お手数をおかけしました。
助かりました!

No. 2711 # ゆくま 2002/05/28 (火) 11:59:36
>2710
追記です。
当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。
ということは、68userさんの環境と異なるのでしょうか?

No. 2712 # G 2002/05/28 (火) 13:44:33
HP-UXのawkコマンドのパターン指定ではシェル変数は使えないのでしょうか?下記のような条件で、いろいろ形を変えて試して見たのですがまったくうまくいきません。分かる方教えてください。

例:awk '$1<=${hensuu}{print $0}' file.txt
※${hensuu}=1,2,3,4,5・・・・・・

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 2713 # 68user 2002/05/28 (火) 16:18:16
>>2711 ゆくま
> 当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。
こちらの Solaris2.6 にも同じ記述がありました。流し読みしたので
見逃していたようです。

>>2712 G
シェル変数は、シェルのための変数であって、シェル以外からはどうやっても
参照できません。よって、
    % env MAX=123 awk '$1<=ENVIRON["MAX"]{print $0}' file.txt
などと環境変数を使うか、
    % awk -v max=123 '$1<=max {print $0}' file.txt
で変数を指定しましょう。

No. 2714 # G 2002/05/28 (火) 18:56:58
>>2713 68user
ありがとうございました。教えていただいたコマンドで上手くいきました。

No. 2715 # STP 2002/05/31 (金) 17:13:59
こんにちは、時々見させてもらってます

PerlでIO::Socketを使っているのですが、
HTTPのPersistent connectionの様な、「サーバーから一旦データが
送られてきた後のコネクションは維持しつつも無通信な状態」
といった状態をプログラム側で判別できずに困ってます

この間にsysreadなどを使うとデータが送られてこないためずっと
待ってしまいますので…

IO:Selectのcan_read($timeout)も試してみたのですが、
この様な状態ではしっかりとソケット識別子を返してしまう
みたいで結果としてsysreadの所に行ってしまってそこで止まってしまう
様な感じでした。

何か良い知恵はないでしょうか??
まあHTTPならcontent-lengthを見て1オブジェクトの受信の終わりを判別すれば良いんでしょうけど…

No. 2716 # 68user 2002/05/31 (金) 17:54:38
>>2715 STP
> この様な状態ではしっかりとソケット識別子を返してしまうみたいで
ということはないと思いますが、問題が発生する最小限の
プログラムを見せていただければ何かわかるかもしれません。

# あと、OS や perl のバージョンなども。

No. 2717 # よー 2002/05/31 (金) 18:10:14
こんにちは、時々見させてもらってます。

PerlでHTTPSクライアントを作成したいのですが
サンプルありますでしょうか

No. 2718 # 名無しさん 2002/05/31 (金) 20:11:59
>>2717 よー
LWP?

No. 2719 # 68user 2002/05/31 (金) 22:18:28
>>2717 よー
何をどう書いたのか全く覚えていませんが、LWP と Crypt-SSLeay で
できるようです。
>>1848 d-jiro
>>1849 68user
>>1854 d-jiro
>>1855 68user

No. 2720 # よー 2002/06/01 (土) 08:28:35
Socketを用いたPerlでHTTPSクライアントのサンプルは
ありませんか?

No. 2721 # 68user 2002/06/01 (土) 15:11:21
>>2720 よー
http://www.thomas-fahle.de/pub/perl/LWP/HTTP/HTTP_Get.html#https

No. 2722 # Netboy [E-mail] 2002/06/01 (土) 20:20:51
68userさん,こんにちは.
失礼ながらご連絡事項をこちらでお伝えします.

このサーバーがポートスキャンの踏み台にされたそうです.
カーネルも古いし本格的な対策は無理だと思いますが
そちらでできる対策があれば試していただけませんか.

> 早速ですが、サンライズシステムズ 様の配下にある
> 210.249.139.22 というホストから
> ポートスキャンが行われた模様との連絡が入りました。

連絡経路はTTCNパワードコムの鎌田さん->両毛の新堀さん->私の順です.

No. 2723 # Netboy [E-mail] 2002/06/01 (土) 20:29:35
実は5/30に胆嚢摘出の手術を受けまして,入院中なのです.
動くに動けない感じで,今も看護婦の目を盗んで携帯でつないでいます.
何かありましたらお気軽にメールください.

No. 2724 # 68user 2002/06/01 (土) 23:39:56
>>2722 Netboy
現在対応中です。ひととおり終わりましたら作業項目を書き
込みます (メールの方がよろしければメールします)。

> 実は5/30に胆嚢摘出の手術を受けまして,入院中なのです.
大変ですね。御大事に…。

No. 2725 # 68user 2002/06/02 (日) 03:49:47
>>2722 Netboy
メール送りました。

No. 2726 # Netboy 2002/06/06 (木) 14:07:25
ただ今再起動しました

No. 2727 # 68user 2002/06/06 (木) 15:44:25
利用者の方へ。

サーバを置いてあるところの管理者の方が、2002/06/02 にマシンの
電源を落とされたため、しばらくアクセスできない状態になっていました。

No. 2728 # yun [E-mail] 2002/06/07 (金) 14:05:48
PerlでのFTP接続を行いファイル転送をしたいのですがうまくいかず
困ってます。
$proto = getprotobyname('tcp');
$port = getservbyname('ftp', 'tcp');
$iaddr = inet_aton($hostname) or die "$hostnameのアドレス取得失敗";
$paddr = pack_sockaddr_in($port,$iaddr);
socket(SOCKET,PF_INET,SOCK_STREAM,$proto) or die "socket失敗";
connect(SOCKET, $paddr) or die "connect失敗";
# ファイルハンドル COMMAND をバッファリングしない
select(SOCKET); $|=1; select(STDOUT);
#---------- ユーザ認証 ----------------------
print SOCKET "USER $username\r\n";
print SOCKET "PASS $password\r\n";
#------------------------------------------
と、ユーザー認証まではいけるでのすがその後で
エラーとなってしまいます。
ちなみにユーザーとパスともにあっているはずなんですが・・・。
情報不足かと思いますが何か思い当たることがありましたら
指導のほどお願いいたします。

No. 2729 # yun [E-mail] 2002/06/07 (金) 16:39:14
↓のNo.2728の件です。
接続まで何とかできたのですがファイルをアップロードしたいのですが
どのようにすればいいのかわからなくて・・・。
教えていただけませんか??

No. 2730 # 68user 2002/06/07 (金) 16:42:28
>>2729 yun
2729 は 2728 の補足ですか? それとも 2728 の件は解決したのですか?

エラーが出るのですか? やり方がわからなくて先に進めないのですか?

No. 2731 # yun 2002/06/11 (火) 10:43:01
接続後のPUTの仕方がわからないので先にすすめないんです。
ん〜情報が少なくて申し訳ないです。
何かわかることがありましたらお願いします。

No. 2732 # ふくし [E-mail] 2002/06/11 (火) 10:56:35
いつも唐突な知るもんですいません。
「日本語情報処理」という本を読んでいたら、
EUC を内部コードとして使うコンピューター(?)か
ソフトウェア(?)として
「焼き獣ホスト(YKH)」というのが出てきたんですが、
焼き獣ホストで Google しても見つかりません。
これ、何かご存知の方はいらっしゃいますか?

No. 2733 # 68user 2002/06/11 (火) 11:53:35
>>2731 yun
> 接続後のPUTの仕方がわからないので先にすすめないんです。
http://X68000.startshop.co.jp/~68user/net/ftp-1.html を読んでください。

>>2732 ふくし
>「焼き獣ホスト(YKH)」
これですかね。端末エミュレータみたいですね。

    http://www.geocities.com/Tokyo/Flats/7725/view_info.htm
        YKH is a small application of this kind, that emulates Japanese VT-320
        terminal under MS-DOS and is freely distributed under the terms of the
        GNU general public licence

No. 2734 # リュウ 2002/06/11 (火) 20:45:03
はじめまして。リュウと申します。

初心者で申し訳ないのですが、質問があります。
HP9000にHP-UX11.0のコールドインストールをしているのですが、
毎回リブート後にメニューが出るようになってしまいました。
メニューを出さずに通常に内蔵ディスクから起動されるようにするには、
どのようにしたらいいでしょうか?

あと、
Interact with IPL?>
で、'Y'を押して
IPL>
から抜け出せなくなってしまいました。
exit,quitともダメです。。。

あわせてよろしくお願いします。

乱文で申し訳ございません。

No. 2735 # だいすけ 2002/06/12 (水) 10:43:26
ほんとに初心者です、おしえてください
課題でechoサーバ及び、クライアントのプログラムをC言語とPerlで作成する。というのがでたのですが、echoサーバはこのHPでプログラムが掲載してあるのでなんとか自分でやってみようと思うのですが、この場合のクライアントとはどのようなプログラムになるのでしょうか?
よろしければおしえてください。
宜しくおねがいします。

No. 2736 # だいすけ 2002/06/12 (水) 10:51:23
もう一つ質問なのですが。
課題2
・chargenサーバ及び、クライアントのプログラムをC言語とPerlで作成する。
フリーなUnix系OSで動作する事。
chargenサーバはデーモンとして動作する事。
chargenサーバは、標準telnetコマンドとも通信可能な事。
chargenサーバは、ログ機能を有する事。
chargenクライアントは通信先がchargenサーバと判明した時点で通信を終了させる
事。
という課題もでています。初心者の僕にはまったく課題の意味がわかりません。どなたかおしえてくれないでしょうか?たびたびすいません。宜しくお願いします。

No. 2737 # 68user 2002/06/12 (水) 13:01:04
>>2734 リュウ
せっかく「Interact with IPL」というキーワードがわかっているのですから、
それで検索しましょう。ついでにキーワードに「HP-UX」も付けておきましょう。
そしたら一発でひっかかります。

    http://www.google.com/search?hl=ja&q=Interact+with+IPL+HP-UX&lr=lang_ja

>>2735 だいすけ
> この場合のクライアントとはどのようなプログラムになるのでしょうか?
    http://X68000.startshop.co.jp/~68user/net/sample/http-client.pl
をちょっといじれば、echo クライアントになります。

>>2736 だいすけ
chargen については RFC864 をどうぞ。
    http://www.goto.info.kanagawa-u.ac.jp/~horiyuki/rfc/rfc864j.txt

その他の疑問点については、まず基本となる雛型を作ってみてから、ですね。

No. 2738 # だいすけ [E-mail] 2002/06/12 (水) 14:21:21
たびたびすいません。このような課題のクライアントのことなのですが?
どのようなプログラムになるのでしょうか?

echoサーバ及び、クライアントのプログラムをC言語とPerlで作成する。
フリーなUnix系OSで動作する事。
echoサーバはデーモンとして動作する事。
echoサーバは、標準telnetコマンドとも通信可能な事。
echoサーバは、ログ機能を有する事。
以上は必須機能です。
余裕があれば、
サーバには大文字、小文字変換機能をオプションで持たせる。
クライアントは文字列をファイルから読み取り、送信するオプションを付ける。
等、面白い機能を付加して下さい。

No. 2739 # だいすけ [E-mail] 2002/06/12 (水) 14:26:17
ほんとうに初心者なのでchargenについてはプログラムを書き始めることもできません。どうかたすけてください。

No. 2740 # 68user 2002/06/12 (水) 15:32:06
仕組みやプログラムを理解する手助けならできますが、答えをそのままあげる
ことはできません (おもしろくないから)。

宿題スレなら、誰かがソースを書いてくれるかもしれません。
    http://pc.2ch.net/test/read.cgi/tech/1020785918/l50


てゆーか、高専生か大学生かと思っていたんですが、社会人なのですか?

自分なりにある程度調べた上で、
    「ここまでは理解できたけど、この部分がわからないから教えてくれ」
という質問の仕方を身につけた方がよいと思いますが、まぁいらぬお節介でしょうね。

No. 2741 # バクモン 2002/06/12 (水) 19:05:24
はじめまして。
UNIXのftpコマンドについて、お聞きしたいことがあります。

ftpコマンドを使用して、WinNTサーバからUNIXへデータを
getしているのですが、以下の事象が発生しています。
・対象ファイルが0バイトの時、getコマンド終了後、そのまま
    ftpのプロセスがハングアップしてしまうことがある。

シェル内で以下のように使用しています。
ftp -n <<EOF
open [IPアドレス]
user [ユーザ名] [パスワード]
binary
get [getするファイル名] [保存するファイル名]
close
quit
EOF

現象を見る限り、getコマンドまでは完了してるようです。
psコマンドにて、ftpのプロセスを検索すると、
ftp -n
が残ってしまっています。

UNIX側からタイマーなどでftpのセッションを切ることは可能
なのでしょうか?

No. 2742 # 68user 2002/06/12 (水) 21:34:08
>>2741 バクモン
それって、要は ftp か ftpd のバグですよね。
    ftp -n < input &
    pid=$!
    sleep 300
    if [ `ps -p $!` ]; then
        kill $!
    fi
的な監視をするのが普通でしょうか。

No. 2743 # バクモン 2002/06/13 (木) 10:35:47
>>2742 68user
早速のご回答、ありがとうございます。
確かにftpプロセスの監視しかないかな、と思います。
そこで、再度質問なんですが、このftpコマンドを使用している
シェルがCシェルで書かれています(すいません、先に言って
おくべきでした)。
Cシェルでは直前に実行したコマンドのプロセスIDを取得する
方法はあるのでしょうか?
($!はKシェル、Bシェルのみの文法と調べたら書いてありました)

No. 2744 # だいすけ 2002/06/13 (木) 10:59:34
echoサーバの
3: #include <stdio.h>
        4: #include <netdb.h>
        5: #include <sys/types.h>
        6: #include <sys/socket.h>
        7: #include <sys/uio.h>
        8: #include <unistd.h>
        9: #include <sys/param.h>
      10: #include <netinet/in.h>
      11: #include <arpa/inet.h>
この部分なのですが、#include <stdio.h>はわかるのですが、
他の物は参考書も見ても掲載されていません。
なんなのでしょうか?

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