68user's page 掲示板

Prev< No. 2549〜2639> Next  [最新発言に戻る] [過去ログ一覧]
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も相変わらず出ています。
せっかく教えていただいたのに解決できませんでした……。
たくさんあるファイルをテープにバックアップしている
ところは、一体どうやってやっているんでしょうか??

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