68user's page 掲示板

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

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>はわかるのですが、
他の物は参考書も見ても掲載されていません。
なんなのでしょうか?

No. 2745 # シゲ 2002/06/13 (木) 12:36:14
昨日から、UNIXを勉強しだしました。大変、初歩的な質問かもしれないのでごめんなさい。
アクセス状態が-rw-------のファイルをmoreで表示させたいのですが、私はファイルの所有者ではないので表示させることができません。chmodは使わないでアクセスを出来るようなのですが、どうすれば良いのですか?
どなたか教えてください。よろしくお願いします。

No. 2746 # シゲ 2002/06/13 (木) 14:24:42
>>2745 シゲ
すみません。解決しました。
パスワードが解ればrootで入れるんですね。

No. 2747 # 68user 2002/06/13 (木) 17:39:03
>>2743 バクモン
> Cシェルでは直前に実行したコマンドのプロセスIDを取得する
> 方法はあるのでしょうか?
$status です。

>>2744 だいすけ
例えば、関数 listen を使いたい場合は、man listen として、
include すべきファイルを調べます.同様に accept や bind など、
使用している関数全てについて調べていくと、それだけのファイルを
include する必要がある、ということです。

No. 2748 # 木場 2002/06/13 (木) 23:06:36
ここのサイトのC言語のHTTPクライアントを使わせてもらって色々勉強させてもらってます。そこで質問なのですが、imodeのURL例えば(http://mobile.yahoo.co.jp/)のレスポンスが返ってくるプログラムを作ろうとしているのですが、どうも、302 FOUND がでてしまい、うまくいきません。どのように解決したらよいでしょうか?

No. 2749 # 68user 2002/06/14 (金) 00:59:09
>>2748 木場
Locaiton: ヘッダに示されている URL を読み込めばよいです。

No. 2750 # だいすけ 2002/06/14 (金) 09:21:22
前回のことについての質問のつづきですが
僕のもっている参考書には掲載されてないのですが、
僕のもっている参考書が古いということでしょうか?

No. 2751 # バクモン 2002/06/14 (金) 09:39:50
>>2747 68user
ご回答ありがとうございます。
ただ、$statusは直前のコマンドのリターン値がセットされる
と認識しています。
Cシェルで直前のプロセスIDを取得するには、プロセスをバック
グラウンドで動かすようにして、その際に標準出力されるプロセス
IDをテキストファイルにおとして、grepなりをする方法しか
ないかな、と考えています。

そこで、以下を考えました。
ftp -n <<EOF &
open [IPアドレス]
user [ユーザ名] [パスワード]
binary
get [getするファイル名] [保存するファイル名]
close
quit
EOF

これを実行すると
[1] 10161
と言った形でプロセスIDが出力されます。
ただ、これをテキストファイルに落とす方法がわかりません。
多分、リダイレクトをするのだと思っているのですが、どこに
それをうめこめばいいのでしょうか?

No. 2752 # だいすけ 2002/06/14 (金) 09:50:04
それとも
C言語で新しくできた関数なのでしょうか?

No. 2753 # 68user 2002/06/14 (金) 12:46:53
>>2751 バクモン
ああ、そういう意味ですか。

tcsh だと $! で取れますが、csh では無理かもしれないですね。
jobs -l だと取れそうですが、どうでしょうか。

ただ、僕なら監視用プロセスを別に起こします。

例えば、
    mkdir /tmp/.ftp-lock
    ftp -n <<EOF
    open
    ..
    quit
    EOF
    rmdir /tmp/.ftp-lock
として、監視プロセスは n 秒前より過去に /tmp/.ftp-lock が作成されて
いたら、
    kill `ps -ef | grep get-file.sh | grep -v grep'
する、とか。

もちっと確実にするなら
    ln -s $$ /tmp/.ftp-pid
    ftp -n <<EOF
    open
としてプロセス番号を特定できるようにする方法もあります ($$ は sh の
プロセス番号なので、$$ の子プロセスを kill する必要がありますけど)。


>>2750 だいすけ
「何が」参考書に掲載されていないのですか? netdb.h? listen? accept?

ここらへんの関数については規格化されていません。よって、UNIX では
使えても Windows では関数そのものがなかったりします。

例えば
    「ANSI C マニュアル」
といった書名ならば、規格化された関数については網羅しているかもしれませんが、
規格外の関数については載っていなくても不思議ではありません。

No. 2754 # だいすけ 2002/06/14 (金) 14:10:21
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
これらが参考書に掲載されてないという意味だったのですが
manコマンドでしれべていくのですね。
どうもありがとうございます。

No. 2755 # ビギナー 2002/06/14 (金) 15:32:49
はじめまして。
まだ、UNIXをはじめたばかりの初心者です。
いま、windows環境のマシンからtera termを使ってUNIXマシンにpostgressqlをインストールしています。そこで、「カーネルのコンフィギュレショーションファイルをチェックする」と書かれているのですが、これってどうやるのですか?
どなたか教えてください。
よろしくお願いします。

No. 2756 # 68user 2002/06/14 (金) 17:20:34
>>2755 ビギナー
> 「カーネルのコンフィギュレショーションファイルを
> チェックする」と書かれているのですが、これって
> どうやるのですか?
OS によって違います。

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/kernel-resources.html
をどうぞ。

No. 2757 # ビギナー 2002/06/14 (金) 21:05:51
>>2756 68user
ありがとうございます。

No. 2758 # きば 2002/06/15 (土) 03:30:10
ご回答ありがとうございました。
今もちょっとわからないとこがあるのですが、
もうちょっと考えてわからなかったら、
聞きにきます。

No. 2759 # きば 2002/06/15 (土) 10:43:34
再び質問です。
先ほどの質問と症状は似ているのですが、imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)のリクエストを出すと

HTTP1.0 302 FOUND
DATE
Location http://mobile.yahoo.co.jp/error/404.html
Conection: close

のレスポンスが返ってきて、locationの部分を入れても実際のimodeのURLがゲットできなくて困っています。どのようにC言語のHTTPクライアント(1)
のソースをいじればちゃんとしたレスポンスが得られるでしょうか?
よろしくお願い致します。

No. 2760 # 黒木 2002/06/15 (土) 12:02:31
初めまして黒木と申します。UNIX初心者です。

/usr/dict/words という辞書ファイルからEが2個以上出て、AとDとTがそれ
ぞれ1個以上出て、最初がLで始まる単語が書かれてる行を見つけるには、
どういう1行コマンドを書けばよいでしょうか?よろしくお願いします。
(但し、文字は全て大文字・小文字を区別しない)

*ファイルは何でも良いので、見つける方法が知りたいのです。

No. 2761 # 68user 2002/06/15 (土) 21:45:19
>>2759 きば
> imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)
> リクエストを出すと
ブラウザで http://mobile.yahoo.co.jp/yahoo/index.html
見ると、404 not found になるので、

> Location http://mobile.yahoo.co.jp/error/404.html
当然そうなると思いますよ。

どこからこの URL が出てきたのでしょうか?

>>2760 黒木
grep -i 'E.*E' /usr/dict/words | grep -i A | grep -i D | grep -i T | grep -i '^L'
でどうでしょう。

No. 2762 # きば 2002/06/15 (土) 22:10:56
すばやいレスありがとうございます。
http://mobile.yahoo.co.jp/yahoo/index.html
↑はimodeの使える携帯端末で見ることの出来るヤフーのカテゴリ検索のサイトです。
上記のURLのリクエストを送ったら携帯端末で見ることの出来るサイトをレスポンスしてくれるようにしたいのです。


imode専用のHTTPクライアントを68userさんのC言語のHTTPクライアント(1)を参考に作ろうと思っていて、とりあえず上記のURLで実験して作ろうと試みているのですが、なかなかうまくいかないので、68userさんの力をかして頂きたいと思う次第です。

No. 2763 # 68user 2002/06/15 (土) 22:24:44
>>2762 きば
i-mode 端末のみで利用可能なページということですね?

なら、
    http://www.nttdocomo.co.jp/p_s/imode/tag/s2.html
を参考にして、
    GET /yahoo/index.html HTTP/1.0
    User-Agent: DoCoMo/1.0/N209i
などなど。

No. 2764 # きば 2002/06/15 (土) 22:34:50
はい。imodeのみ利用可能なページです。
なるほど、、
urlをみてもうちょっとがんばってみます。
貴重なご意見ありがとうございます。

No. 2765 # 黒木 2002/06/16 (日) 01:28:01
>>2761 68user
有難う御座いました。これで良いですね。

No. 2766 # バクモン 2002/06/17 (月) 12:05:12
>>2753 68user
ご回答ありがとうございます。
以下のようにロジックを変更しようかと思います。

・ftpをバックグランドで動かす
・jobs -lの結果をテキストファイルに落とす
・5分sleepする(※1)
・grepとawkを使用して、テキストファイルからftpのプロセスIDを取得する
・ps -p にて取得したプロセスIDのプロセス生存を確認
・ps -p のリターンコードが0以外であればkillするif文をおこなう(※2)

こんな感じかな、と考えています。
怖い部分は※1,2です。
※1:とりあえずユーザさんには現在の環境でgetが3分を越えることは
            ないといわれているので、安全を見て5分sleepさせるようにしたが
            本当に大丈夫か?
>>ユーザさんがOKと言っているので、問題なし・・・かな。
※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず
            0以外となる。逆にHITした場合は、必ず0となる。
>>このハンドリングは正しいのか、ちょっと自信なし。

色々とご回答ありがとうございました。

No. 2767 # ユウ 2002/06/18 (火) 19:36:45
はじめまして。
私は、最近linuxを使い出した初心者です。
最近、仕事でpostgresqlをインストールしました。
インストールには成功したようなのですが、
$ pg_ctl startで起動をするとpostgresql(postmaster?)は起動します。
しかし
$ postmasterでは、
    DEBUG ...
    DEBUG ...
    DEBUG ...
    DEBUG ...
と出力され、その後エラーメッセージも何も出なくて、反応が無くなってしまいます。(いつも、ctrl+cで抜けています)
どうしてでしょうか?
どなたかご存知の方、ご教授ください。

No. 2768 # ユウ 2002/06/18 (火) 19:44:07
書き忘れていました。
バージョン:postgresql-7.11
環境:open blocksというlinuxマシンです。
            (redhatでも同様でした)

No. 2769 # 68user 2002/06/18 (火) 21:26:29
>>2767 ユウ
> $ postmasterでは、
引数なしで実行したのですか? データベースクラスタの場所はどうやって
指定しているのですか? 環境変数 PGDATA?

> DEBUG ...
この ... というのは省略したのですか? 本当に ... と表示されたのですか?

> その後エラーメッセージも何も出なくて、反応が無くなってしまいます。

それはフォアグラウンドで起動しているだけで、正常起動じゃないんでしょうか?

        http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/postmaster-start.html
        > サーバを起動する一番簡単な方法例は、
        >  postmaster -D /usr/local/pgsql/data
        > となり、サーバをフォアグラウンドで走らせます。
        > バックグランドでpostmasterを起動する には通常のシェルの構文を使います。

また、
    % sh -x pg_ctl start
として、pg_ctl 内で実行される postmaster の引数を確認するのも
よいでしょう。


>>2766 バクモン
> ※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず
> 0以外となる。逆にHITした場合は、必ず0となる。
> >>このハンドリングは正しいのか、ちょっと自信なし。
問題ないと思いますが、それでも心配なら
    % ps -p [pid] | grep スクリプト名
などなど。

No. 2770 # せと [E-mail] 2002/06/19 (水) 09:55:45
はじめまして。
ネットワークプログラミングの知識を参考にさせてもらっています。
で、ひとつ作りたいプログラムがあって質問させてください。
現在PERLを利用して、TERATERMのマクロのようにプログラムの出力結果を分析して、
次のバッチの投入のような監視?ツールを作りたいと思っています。
で、ソケットをつかってポート23にアクセスしに行くのですが、
固まってしまいます。ポート80や110にはここのサイトの見本をまねて
アクセスすることは出来るのですが・・・。
shでやるというのも考えられるのですが、suではパスワードを聞いてきますし、
別のアプリ実行しても制御が完全にアプリ側に移るんで無理ですよね?

ポート23にアクセスして結果をやり取りするにはどうしたらよいのでしょうか?
どなたかお分かりでしたらヒントをお願いします。

No. 2771 # ユウ 2002/06/19 (水) 11:26:13
>>2769 68user
お返事ありがとうございます。
質問の書き方が下手で、申し訳がありません。
PGDATA=/usr/local/pgsql/dataを設定していて
$ postmaster
は引数なしで実行しています。(pg_ctl startもそうです)
DEBUG...はDEBUGのあとの出力を省略させていただきました。
UNIXに関しても、パソコンに関しても本当に初心者で、何がどうなってるのかわからない状態なのですが、長くなりますが詳しく書かせていただきます。
$pg_ctl startを実行すると
postmaster successfully started
と出力されたあとに
DEBUG...(省略しています)と5行でて、そこでreturnキーを押下すると
[postgres@AAAServer postgres]$
と次のコマンド入力が可能になります。
しかし
$ postmasterを実行しても
postmaster successfully started
というメッセージは出ないで、
DEBUG...(省略しています)と5行でてreturnキーを押下しても
[postgres@AAAServer postgres]$
とはならず、改行されるだけです。
(以上は、openblocks,redhat両方共の環境です)

いろいろ試してみると、
redhat環境では、/usr/local/pgsql/data/postgresql.confに
silent_mode = on
tcpip_socket = on
syslog = 2
と追記して
$ postmasterを実行すると
DEBUG...(省略します)とは出力されないで、
[postgres@AAAServer postgres]$
となり、postgresqlは起動しました。
そこで、openblocksでpostgres.confを上記のように変更して
$ postmasterを実行しました。すると
FATAL 1: 'silent' is not valid option name
とエラーが帰ってきました。
$pg_ctl startで実行した結果も、
postmaster successfully started
と出力された後に、同様のエラーが帰ってきました。
(postgres.confの変更内容のsilentをコメント化したらsilentの下に追記した、tcpip_socketで同様のエラーが起きます。)

申し訳がありませんが、ご教授ください。

No. 2772 # ユウ 2002/06/19 (水) 12:04:39
お返事ありがとうございます。
質問の書き方が下手で、申し訳がありません。
PGDATA=/usr/local/pgsql/dataを設定していて
$ postmaster
は引数なしで実行しています。(pg_ctl startもそうです)
DEBUG...はDEBUGのあとの出力を省略させていただきました。
UNIXに関しても、パソコンに関しても本当に初心者で、何がどうなってるのかわからない状態なのですが、長くなりますが詳しく書かせていただきます。
$pg_ctl startを実行すると
postmaster successfully started
と出力されたあとに
DEBUG...(省略しています)と5行でて、そこでreturnキーを押下すると
[postgres@AAAServer postgres]$
と次のコマンド入力が可能になります。
しかし
$ postmasterを実行しても
postmaster successfully started
というメッセージは出ないで、
DEBUG...(省略しています)と5行でてreturnキーを押下しても
[postgres@AAAServer postgres]$
とはならず、改行されるだけです。
(以上は、openblocks,redhat両方共の環境です)

いろいろ試してみると、
redhat環境では、/usr/local/pgsql/data/postgresql.confに
silent_mode = on
tcpip_socket = on
syslog = 2
と追記して
$ postmasterを実行すると
DEBUG...(省略します)とは出力されないで、
[postgres@AAAServer postgres]$
となり、postgresqlは起動しました。
そこで、openblocksでpostgres.confを上記のように変更して
$ postmasterを実行しました。すると
FATAL 1: 'silent' is not valid option name
とエラーが帰ってきました。
$pg_ctl startで実行した結果も、
postmaster successfully started
と出力された後に、同様のエラーが帰ってきました。
(postgres.confの変更内容のsilentをコメント化したらsilentの下に追記した、tcpip_socketで同様のエラーが起きます。)

申し訳がありませんが、ご教授ください。

No. 2773 # 68user 2002/06/19 (水) 13:48:40
>>2770 せと
> で、ソケットをつかってポート23にアクセスしに行くのですが、
> 固まってしまいます。
要は telnet クライアントを作りたいと。

接続後、telnet プロトコルに従ってネゴシエーションをする
必要があります。詳細は http://www.faqs.org/rfcs/rfc318.html
perl のモジュールを使うなら Net::Telnet がよいでしょう。

ただし、telnet クライアントができても、文字の送信/文字の
受信が可能になるだけです。エラー発生の判断などはやはり
プログラム側で行わなくてはいけません。

というわけで、素直に
> プログラムの出力結果を分析して、次のバッチの投入のような監視?ツール
を行うスクリプトを作った方がよいでしょう。

> suではパスワードを聞いてきますし、
> 別のアプリ実行しても制御が完全にアプリ側に移るんで無理ですよね?
危惧しておられることがよくわからないのですが、普通はスクリプトなどを
書けば実現可能です。


>>2772 ユウ
> $ postmasterを実行しても
> postmaster successfully started
> というメッセージは出ないで、
> DEBUG...(省略しています)と5行でてreturnキーを押下しても
> [postgres@AAAServer postgres]$
> とはならず、改行されるだけです。
それはそれで正常です。キーの入力をそのアプリが奪うような状況を
「フォアグラウンドで動作している」と言います。逆に、アプリが
裏で動いているような状況を「バックグラウンドで動作している」
と言います。
    http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/postmaster-start.html
にある通り、postmaster を実行すると、単にフォアグラウンドで
動くという仕様になっているだけです。postmaster を実行した後、
別ウィンドウで psql を実行すると、ちゃんと接続できるはずです。

> $ postmasterを実行しても
> postmaster successfully started
> というメッセージは出ないで、
postmaster successfully started という文字列を表示をしているのは
pg_ctl だからです。

postmaster をバックグラウンドで動かすには、
    - postmaster & として起動する。
    - postgresql.conf を修正して silent_mode=true とする。
    - postmaster -S とする。
    - postmaster -c silent_mode=true とする。
などの方法があります (true と on は同じ)。全てマニュアル
    http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/runtime-config.html
に書いてあります。

> FATAL 1: 'silent' is not valid option name
'silent_mode' is ... ならわかりますが、`silent' is ... となるということは、
postgresql.conf に
    silent=true
などと書いていませんか?

> tcpip_socketで同様のエラーが起きます。
ということは、その上にある行がおかしい可能性もあります。

とにかく、まずは postgresql.conf への追加時に修正ミスをしていないかを
疑うべきでしょう。

あとは、OpenBlockS にインストールされている PostgreSQL のバージョンと
RedHat にインストールされている PostgreSQL のバージョンが違うとか。

No. 2774 # ユウ 2002/06/19 (水) 14:38:00
>>2773 68user
ご指摘の通りでした。
silent_mode,tcpip_socketにのエラーは直りましたが、syslogでエラーが出る状態です。なぜか解らないですけど、redhatで成功しているpostgresql.confをコピーしてきます。
ありがとうございました。

No. 2775 # レイラ 2002/06/19 (水) 14:44:12
初めて投稿します。Solarisでハードウェアの診断をする機能があると聞きました。旧SUN OSでは、ダイアグというそうですが、オンボードやHDDの状態を診断して、異常個所をリストアップしてくれるような機能があれば、教えてちょんまげ!何卒よろしくお願いします。

No. 2776 # だいすけ 2002/06/19 (水) 14:48:26
echoサーバ(C言語)でのことですが
#include <sys/uio.h>
#include <unistd.h>
#include <sys/param.h>
#include <netinet/in.h>
#include <arpa/inet.h>
これらがなくても正常にコンパイルできるのですが、必要なのでしょうか?

No. 2777 # ユウ 2002/06/19 (水) 15:10:12
ご指摘の通りでした。
silent_mode,tcpip_socketにのエラーは直りましたが、syslogでエラーが出る状態です。なぜか解らないですけど、redhatで成功しているpostgresql.confをコピーしてきます。
ありがとうございました。

No. 2778 # 紅の猫 [E-mail] 2002/06/19 (水) 21:45:01
#2776
>これらがなくても正常にコンパイルできるのですが、必要なのでしょうか?
windowsでならば必要ないと思います。

No. 2779 # has 2002/06/19 (水) 21:51:05
こんばんは。
最近はお一人で回答をしておられるようでおつかれさまです >68user
とかいいつつ私も質問しに来てるんですが…。

で早速ですがどなたか知恵をお貸しください。

現在P4マシン上でRedhat7.1.94を利用しており、100BASEカードを使って
LAN経由でインターネットにアクセスしています。
IPはDHCPサーバから割り振られているのですが、Netscapeなど、
どうやらgethostbynameを呼んでいると思われるプログラムが
名前解決できずに困っています。

ただしnslookupやhostコマンドでは正しく名前解決できる上、
Netscape等からも数字のIPを直に打てばアクセスできています。
試しに/etc/hostsに[216.239.33.101 www.google.co.jp]を記述すると、
Netscapeからもアクセスできました。

dhcpのクライアントにはdhcpcd-1.3.18を[/sbin/dhcpcd -n eth0]で
起動していて、自ホストのIPは正しく取得できているようです。
/etc/host.confには[order hosts,bind]のみを記述しており、
resolve.confにはWin2k動作時に調べておいたLAN内DNSサーバの指定
[nameserver 192.168.0.1]を記述しています。

自分なりに無い知識をいくらかでも埋めようとgoogleで探し回ったのですが
全てに目を通すほどパワーが続きませんでした。
どうぞよろしくお願いします。

No. 2780 # aozora 2002/06/20 (木) 00:23:56
はじめまして。

あまりにも簡単な質問のようで申し訳ないのですが、
「ソケット」っていうのは、「IPアドレスとポート番号を組み合わせたもの」でしょうか?
どこで読んだのか、「ポート番号とプロセスIDを組み合わせたもの」という考えが頭を離れず、
自分でもいろいろ調べたのですが、解答は見つかりませんでした。
もしかしたら見当違いな質問なのかもしれませが、
ソケットの知識をお持ちの方がおりましたら、ご教授願います。

どうぞよろしくお願い致します。

No. 2781 # 68user 2002/06/20 (木) 05:30:37
>>2779 has
ども。最近会社でもやる気ゼロなので、回答なぞしてるんですわ。

もしかして Netscape を起動した後に dhcp クライアントを起動
してません? もしそうなら順番を逆にしてみるとか。

そうでないなら、tcpdump の結果を見せてくださいな。

あと、あらゆる gethostbyname が失敗してますか?
    % perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))"
もダメですか?

>>2780 aozora
> 「ソケット」っていうのは、「IPアドレスとポート番号を組み合わせたもの」
> でしょうか?
「IP アドレスとポート番号を組み合わせたもの」は相手を一意に特定するための
識別子で、たとえるなら電話番号です。
# ただし、それは IP の話。UNIX ドメインソケットでは、ファイルが識別子です。

「ソケット」は、通信路の端点で、たとえるなら電話機です。

これを同じものと考えてしまうと、例えば bind(2) が理解できなく
なります。bind(2) はたとえるなら電話機に電話線をつなぐという
感じでしょうか。

> 「ポート番号とプロセスIDを組み合わせたもの」
違います。1プロセスから複数のソケットを使うことができますから。

No. 2782 # shido 2002/06/20 (木) 11:32:14
初めて書き込みをします。
UNIXは、まだ初心者です。

お聞きしたい事を書き込みます。
現在、「share」コマンドでディレクトリを共有した後、「dfmount」コマンドで共有されたディレクトリにアクセス中のクライアント名を取り出そうとしています。
「dfmount」コマンドで情報が取れないのですが、どうしてなのでしょうか?
「share」の情報を書き込みます。
> /usr/sbin/share
- /share rw=client "File Service"
- /home rw=nini:gp7000s,root=gp7000s "File Service"
- /shared rw=osl:gp7000s,root=gp7000s "File Service"
>

No. 2783 # シド 2002/06/20 (木) 11:41:06
はじめて書き込みます。
UNIXの初心者シドです。
少し教えてほしいことが有ります。
知っていられる方は、お教え願えないでしょうか?
「share」コマンドを実行して、「dfmounts」コマンドを実行すると何も表示されません。なぜでしょうか?
「share」の情報と「dfmounts」コマンドを実行したときの表示部分を書きます。
> /usr/sbin/share
- /share rw=client "File Service"
- /home rw=nini:gp7000s,root=gp7000s "File Service"
- /shared rw=osl:gp7000s,root=gp7000s "File Service"
> /usr/sbin/dfmounts
>

No. 2784 # シゲ 2002/06/20 (木) 12:21:48
UNIX初心者(パソコンも初心者です)の私にどうか教えてください。

telnetを使って、redhat環境のマシンに接続して操作をしています。
$shutdown -r now
で再起動をしました。
すると、立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、立ち上がって普通は
[ユーザ名(マシン名)カレントディレクトリ]$
と出るところで、マシン名がnone(本来はmizuho)になっていました。そして、書き込み可能(-wrxwrxwrx)のファイルを操作しようとすると、読取専用とエラーメッセージが出て操作できなくなってしまいました。(全ファイルそうです)
  
いろいろやってみた結果、
$mount -o remount, rw /dev/hda5 /
で、書き込み可能にはなりましたが、再起動をすると読み込み専用に戻ってしまいます。
(boot.log,messageを見てみましたが、snmpd shutdown failedと出ています。これって関係ありますか?)
  
どなたか直し方を教えてください。
お願いします。

それと今、boot画面のメッセージをチェックしようとしているのですが、1行ずつ進める方法があるらしいです。これってどうやるのですか?

No. 2785 # うみ [E-mail] 2002/06/20 (木) 18:18:16
はじめまして。
現在どうしても解決できない問題があり、書き込みました。
どなたかご存知の方いらっしゃいましたら、レスよろしくお願いします。

WEBサーバにおいてLocationヘッダで指定したURLへリダイレクトさせて、
かつリダイレクト先へのHTTPリクエストにCookieを設定したいのですが、
設定できない状態になっています。

---------------------------------------------------------
HTTP/1.1 302 Found\n
Set-Cookie: test=a; domain=www.hogehoge.co.jp; path=/\n
Location: http://www.hogehoge.co.jp\n\n
---------------------------------------------------------

のようなレスポンスを返却するCGIを作成したのですが、上記レス
ポンスを返すサーバとリダイレクト先のサーバが異なる場合、次の
リクエストにCookieが付加されてきません。
Cookieを設定できるのは、自分と同じドメインのみなのでしょうか。

当たり前の事だったら申し訳ありません。
よろしくお願いします。

No. 2786 # 68user 2002/06/20 (木) 19:28:47
>>2785 うみ
> Set-Cookie: test=a; domain=www.hogehoge.co.jp; path=/\n
cookie で domain をセットしたことがないのでよく知りませんが、
無理なんじゃないでしょうか。これができるなら、任意のサーバの
cookie を外部からセットできることになります。

http://www2.studyinghttp.net/cookies.html を見ると、
    server-1.hogehoge.co.jp で
        Set-Cookie: test=a domain=hogehoge.co.jp
    という cookie を吐くと server-1.hogehoge.co.jp や
    server-2.hogehoge.co.jp に送り返されるようになる。
ということではないかと思います。

もし、「Location なしだとうまくいくが、Location ありだとダメ」
ということなら、上記の認識は間違っているんでしょうけど。

>>2784 シゲ
> 立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、
このときコンソールには何が出力されていますか? 症状からすると
何かしらのエラーが発生して、Read-only で mount され、シングル
ユーザモードで起動しているように見えますが、根本原因がコンソール
に表示されていると思います。

>>2783 シド
>>2775 レイラ
僕には全くわからない分野なので、お役に立てないようです。

No. 2787 # 68user 2002/06/20 (木) 19:32:56
>>2786 68user
>> 立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、
> 何かしらのエラーが発生して、Read-only で mount され、シングル
> ユーザモードで起動しているように見えますが
あ、10分待てば起動するのなら違うのかなぁ。

> snmpd shutdown failedと出ています。これって関係ありますか?
shutdown 時のエラーなので関係ないと思います (実は関係あったり
するのかもしれませんけど)。

> 1行ずつ進める方法があるらしいです。
少なくとも FreeBSD では、Scroll Lock を押せばスクロールが止まり、
カーソルキーで移動できます。Linux ではどうなのかはわかりません。

No. 2788 # aozora 2002/06/20 (木) 21:18:13
>>2781 68user
ソケットについてのご教授、ありがとうございました。
かなり間違って理解していたようですが、
お陰様でソケットの考え方について理解できるようになりました。

No. 2789 # シゲ 2002/06/20 (木) 21:21:47
>>2786 68user
お返事ありがとうございます。
早速、scroll lockで画面と止めながら(出来ました!)エラーを見てみました。
Updating /etc/fstab failed to open /proc/partitions:No such file or directory

Flushing all current rules and user defined chains:ipachains:incompatible with this kernel

Clearing all current rules and user and user defined chains:ipchains:Incompatible with this kernel

Starting system logger

Errot:MM:mm:core:failed to open semaphore file(read-only file system):OS:No such file or directory

mount:special device LABEL=/boot does not exisist

Starting crond:crond:can't open or create /var/run/crond/pid:Read-only file system

と7箇所でエラーが出てました。
これを見て私がわかったのは、
/proc/partitionsがない
/bootの何かがない
と言うことです。
見てみると、/proc,/boot両ディレクトリの中がまったく存在しませんでした。
何じゃコリャ!
UNIX初心者(パソコンも)にはまったく解りません。

どうか、ご教授ください。

No. 2790 # has 2002/06/21 (金) 02:14:05
こんばんは。
お仕事大変ですな。まあそう腐らずに頑張ってください >68user

さてガキの使いですんません。宿題やってきました。

まずdhcpcdですが、psで確認しても起動時から動いているようなので、
Netscapeの方が先ということはなさそうです。
次にperlスクリプトですが、残念ながら、
Bad arg length for Socket::inet_ntoa, length is 0, should be 4 at -e line 1.
と表示されます。要は正引きが失敗しているようです。
逆引きは引数の渡し方がわかりませんでした。
# なんせlinuxからはweb検索にも支障をきたしているもので(^^;)

最後にtcpdumpの出力です。tcpdumpを動かしてから、
% host www.jp.freebsd.org
のコマンドと、netscapeにてhttp://www.jp.freebsd.org
http://210.157.158.42/へのアクセスなどをしてみました。
# が、記録に残っているかは私にはわかりませんでした

# /usr/sbin/tcpdump
tcpdump: listening on eth0
01:47:38.943528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1226176673 win 8576 (DF)
01:47:38.943528 192.168.0.40.32797 > 192.168.0.1.domain: 29608+ PTR? 198.129.90.143.in-addr.arpa. (45) (DF)
01:47:38.963528 192.168.0.39.3276 > 143.90.129.198.http: S 22004303:22004303(0) win 8192 <mss 1460,nop,nop,sackOK> (DF)
01:47:38.983528 43.242.210.37.6699 > 192.168.0.33.1190: . 3236267430:3236268764(1334) ack 2911899325 win 17252 (DF)
01:47:38.983528 192.168.0.33.1190 > 43.242.210.37.6699: . ack 4294960438 win 17520 <nop,nop,sack sack 1 {4294961772:1334} > (DF)
01:47:38.993528 211.129.12.43.domain > 192.168.0.40.32797: 29608 1/2/2 (141)
01:47:38.993528 192.168.0.40 > 211.129.12.43: icmp: 192.168.0.40 udp port 32797 unreachable [tos 0xc0]
01:47:38.993528 211.129.14.134.domain > 192.168.0.40.32797: 29608 1/2/2 (141)
01:47:38.993528 192.168.0.40 > 211.129.14.134: icmp: 192.168.0.40 udp port 32797 unreachable [tos 0xc0]
01:47:39.003528 143.90.129.198.http > 192.168.0.39.3044: . 5897:6433(536) ack 0 win 32767
01:47:39.013528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1 win 8576 (DF)
01:47:39.013528 143.90.129.198.http > 192.168.0.39.3044: . 6433:6969(536) ack 0 win 32767
01:47:39.013528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1 win 8576 (DF)
01:47:39.023528 43.242.210.37.6699 > 192.168.0.33.1191: . 3298096123:3298097457(1334) ack 2981221337 win 17235 (DF)
01:47:39.023528 143.90.129.198.http > 192.168.0.39.3276: S 1909102369:1909102369(0) ack 22004304 win 536 <mss 536>
01:47:39.023528 192.168.0.39.3276 > 143.90.129.198.http: . ack 1 win 8576 (DF)
01:47:39.023528 192.168.0.39.3276 > 143.90.129.198.http: P 1:43(42) ack 1 win 8576 (DF)

No. 2791 # シド 2002/06/21 (金) 10:57:06
困っています。誰か助けてください。
UNIXのファイルシステムと他のファイルシステムの切り分けをどのコマンドを使用すればいいのかわかりません。(他のファイルシステムは、SafeFile/Globalファイルシステムです。)はじめは、fstypコマンドを使用すれば、良いと思ったんですが、UFS(UNIXファイルシステム)しか、出てきません。それにデバイス中です。と言うエラーが発生して、困っています。解決策を知っている方は、お教え願えないでしょうか?

No. 2792 # だいすけ 2002/06/21 (金) 11:45:26
echoサーバ(Perl)の5行目の
5: use Socket;
この文はどういう意味なのでしょうか?
おしえてください。

No. 2793 # だいすけ 2002/06/21 (金) 11:56:41
echoサーバのほうはプログラムに解説してくださっているので、読んでみてなんとか理解できそうなのですが、クライアントのほうを書けそうにありません。クライアントのほうもおしえていただけないでしょうか?

No. 2794 # シゲ 2002/06/21 (金) 12:07:10
>>2786 68user
お騒がせしました。出来ちゃいました。
boot画面を見ていると
can't execute rc.sysinit
となっていたので、rc.sysinitを見てみるとアクセス権が
-rw-r-xr-x
となっていました。これでは実行権がないので
-rwx-r-xr-x
とするとできました。
出来てしまえば簡単なことでした。

ありがとうございました。

No. 2795 # [E-mail] 2002/06/21 (金) 21:09:28
初めまして。大学の授業で初UNIXに相当困り果ててるものです・・・。どうか教えてください。
/usr/dict/words とうゆうファイルは単語の先頭の文字をアルファベット順に並べたものですよね??これを単語のおしまいで分類したものだすようにしたいのです。1行コマンドで・・・。ちなみに大文字と小文字は区別しないで!!!
よろしくお願いします(><)

No. 2796 # 68user 2002/06/21 (金) 23:55:31
>>2790 has
> 最後にtcpdumpの出力です。
Query 投げてないですねぇ。普通は
    23:36:51.920878 192.168.0.5.2275 > 192.168.0.1.domain: 4+ A? www.jp.FreeBSD.org. (36)
    23:36:52.003329 192.168.0.1.domain > 192.168.0.5.2275: 4 1/4/5 A updraft.jp.FreeBSD.ORG (251)
こんな感じのが流れるはずです。念のため、
    % strace dig www.jp.FreeBSD.org
で流れを追ってみてください。うちの FreeBSD では (*BSD は truss)
    % truss dig www.jp.FreeBSD.org|egrep 'socket|connect'
    socket(0x2,0x2,0x0) = 3 (0x3)
    connect(0x3,{ sa_len = 48, sa_family = 120, sa_data = } },16) = 0 (0x0)
となりますが、そちらではどういう結果になりますか?

もし socket さえ行っていないようなら、/etc/host.conf とか
/etc/resolv.conf の解析あたりでこけているような気がします。

なお、nslookup や host は /etc/hosts や /etc/host.conf を
参照せず、必ず DNS サーバに Query を投げるので、原因の
切り分けの際はご注意を。

> resolve.confにはWin2k動作時に調べておいたLAN内DNSサーバの指定
> [nameserver 192.168.0.1]を記述しています。
DHCP クライアントは /etc/resolv.conf を上書きすると思いますが、
上書き後の内容はどうなっていますか?

あとは、DHCP をやめて、手で IP アドレスなどを設定してみると何かに
気づくかも…という役に立たないアドバイスしかないです。


>>2793 だいすけ
> 5: use Socket;
> この文はどういう意味なのでしょうか?
Socket モジュールを使うという宣言です。利点は
    http://x68000.startshop.co.jp/~68user/net/perl4.html
をどうぞ。

>>2793 だいすけ
> クライアントのほうを書けそうにありません。
何がわからないのかわからないので、
    http://x68000.startshop.co.jp/~68user/net/
を読んでくださいとしか言えません。

>>2795
> これを単語のおしまいで分類したものだすようにしたいのです。
> 1行コマンドで・・・。ちなみに大文字と小文字は区別しないで!!!
じゃあヒントだけ。rev というコマンドがあるならそれを
使います。rev がない UNIX なら、わかりません (perl を
使えばできるけど、問題の趣旨とは違うような気がする)。

No. 2797 # HIDE 2002/06/22 (土) 18:05:25
あるログファイルに1行出力されるごとに、その行に特定のキーワードが
あるかどうかを判断して、あった場合はその行を別のログに出力する
といったことをUNIXコマンドでできないかと調べています。
イメージとしては、「tail -f」と「grep」の組み合わせみたいな
感じですが、二つのコマンドをパイプで結合してもダメでした。
何か良い手はないでしょうか? ご存知の方がいたら教えてください。
よろしくお願いします。

No. 2798 # 68user 2002/06/22 (土) 19:26:19
>>2797 HIDE
tail -f log | grep foo でできる環境もあります。FreeBSD と Solaris2.6/8
あたりはできるはず。

というか、できない環境をしらないのでアドバイスはできませんが、tail が
バッファリングしてるのかな?

tail 自体それほど複雑な機能ではないので、さくっと perl などで
自作するのがいいかもしれません。

No. 2799 # HIDE 2002/06/22 (土) 20:19:02
>>2798 68user
ご回答いただきまして、ありがとうございます。

>tail -f log | grep foo でできる環境もあります。FreeBSD と>Solaris2.6/8あたりはできるはず。
  こちらの環境はSolaris2.6です。
         tail -f log | grep foo
  だと意図した形で画面に表示されるのですが、
         tail -f log | grep foo >> log2
  とやるとlog2には何も出力されないんです・・・・・・
  何か環境が変なのかな?

>tail 自体それほど複雑な機能ではないので、さくっと perl などで
>自作するのがいいかもしれません。
  そうですね。実はこの処理は大容量の性能関連のログから必要な
  行を抽出/判定するための使用しようとしているのですが、Perl
  で作ったらログの行が多いからか、逆にそのツールが動いている
  時間はCPUが100%になってしまったのでUNIXコマンドでできないかと
  調べている次第です。(Perlはあまり詳しくないので私の作り方が
  マズイだけかもしれませんが)

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

No. 2800 # 68user 2002/06/22 (土) 21:36:23
>>2799 HIDE
> tail -f log | grep foo >> log2
なるほど。grep が出力をバッファリングしてるからですね。ちょっと調べて
みた限りでは、/dev/stderr にリダイレクトしてもダメだし、バッファリング
ありにするオプションはないようなので、
    % tail -f log | perl -ne '$|=1;print if m/foo/' >> log2
てな感じで。

でも、grep でなんとかなりそうな気もするなぁ…。

No. 2801 # 68user 2002/06/22 (土) 22:38:23
>>2800 68user
> /dev/stderr にリダイレクトしてもダメだし
あー、grep 自体は stdout に出力してるだけだから、シェルで
いくら stderr に振ってもどうにもならないですね。

というわけで、続きはここで。
    http://pc.2ch.net/test/read.cgi/unix/1022769156/l50
2ch で質問するのなら最初からそっちで聞けっつーの。

No. 2802 # HIDE 2002/06/22 (土) 22:47:54
>>2800 68user

% tail -f log | perl -ne '$|=1;print if m/foo/' >> log2
をやってみたら、うまくいきました!
いろいろ調べていただいたようで、ありがとうございました。m(__)m

>でも、grep でなんとかなりそうな気もするなぁ…。
微妙〜なとこでうまくいかないのが悔しいですね。(^^;)
でも、この件は急いでいたので大変助かりました。

No. 2803 # HIDE 2002/06/22 (土) 22:52:03
>>2801 68user

>2ch で質問するのなら最初からそっちで聞けっつーの。
至急性が高かったので両方に投稿しておりました。
大変失礼しました。すいません。

No. 2804 # 通りがかり 2002/06/23 (日) 09:16:15
ここまでまるごとパクリっていうのも...

http://www.apk.ne.jp/~yasya/ura/unix/index.html

No. 2805 # has 2002/06/23 (日) 12:10:54
>>2796 68user
digをstrace|egrepした内容です。

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented)
socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented)
socket(PF_INET6, SOCK_STREAM, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol)

一応ソケットを作りに行ってますが、connectはしてないみたいです。
あと設定ファイルですが、起動のたびに上書きされており、
% cat /etc/resolv.conf
nameserver 192.168.0.1
となっています。

固定IPを設定するのは気がひけるのでまだやってません(^^;)
でも毎回同じIPが割り当てられてる気もするし、MACアドレスとかで
決めてるようならいつものIPを指定してみようかな?

ついでに
>>2781のperlスクリプトをstrace|egrepしてみました。

socket(PF_UNIX, SOCK_STREAM, 0) = 3
connect(3, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or directory)
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0
お手数かけてますがどうぞよろしく。

No. 2806 # 68user 2002/06/23 (日) 17:06:51
>>2805 has
> digをstrace|egrepした内容です。
> socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
> socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented)
> socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented)
> socket(PF_INET6, SOCK_STREAM, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol)

> perlスクリプトをstrace|egrepしてみました。
> socket(PF_UNIX, SOCK_STREAM, 0) = 3
> connect(3, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or > directory)
> socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
> connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0
> socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
> connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0

なんか全然違いますねぇ。UDP/IP で、192.168.0.1:53 宛に connect
するはずなので、perl の場合の
    socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
    connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0
という結果は正しいと思います。perl の実行時に tcpdump してみたら
どうなるんでしょうか。

うちではこんな感じです。
    % truss perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))"
    socket(0x2,0x2,0x0) = 4 (0x4)
    connect(0x4,{ AF_INET 192.168.0.1:53 },16) = 0 (0x0)
    sendto(0x4,0xbfbfe464,0x24,0x0,0x0,0x0) = 36 (0x24)
    recvfrom(0x4,0xbfbfed64,0x400,0x0,0xbfbfe238,0xbfbfe1fc) = 251 (0xfb)
    close(4) = 0 (0x0)
    close(3) = 0 (0x0)

    % truss dig www.jp.freebsd.org
    socket(0x2,0x2,0x0) = 3 (0x3)
    connect(0x3,{ sa_len = 48, sa_family = 120, sa_data = } },16) = 0 (0x0)
    sendto(0x3,0xbfbff184,0x24,0x0,0x0,0x0) = 36 (0x24)
    select(0x4,0xbfbed694,0x0,0x0,0xbfbed60c) = 1 (0x1)
    recvfrom(0x3,0xbfbef184,0x10000,0x0,0xbfbed684,0xbfbed678) = 251 (0xfb)
    close(3) = 0 (0x0)

ただ、どうも strace から絞り込んでいく方向は遠回りかもしれません。
IPv6 を OFF にしてみるとか、DHCP を使わずにやってみる方が早道かも
しれませんね。

> でも毎回同じIPが割り当てられてる気もするし、MACアドレスとかで
> 決めてるようならいつものIPを指定してみようかな?
大抵の DHCP サーバは、どの MAC アドレスにどの IP アドレスを振った
かを数日間記憶していて (設定次第ですが)、できるだけ同じマシンには
IP アドレスを振るようにしているので、ちょろっと試す分には OKかと
思います。


>>2804 通りがかり
> ここまでまるごとパクリっていうのも...
> http://www.apk.ne.jp/~yasya/ura/unix/index.html
クレーム入れるのもダルいので、放置です。

ちなみに他にもありますよ :-)
    http://www.it.ice.uec.ac.jp/~furu/unix/kind.html
    http://noto.cc4-4.kanagawa-u.ac.jp/~jsato/helps/

コンテンツの引用や転載については
    http://x68000.startshop.co.jp/~68user/
を読んでください、ということで。

No. 2807 # 愛子 2002/06/24 (月) 11:22:04
こんにちは。愛子@UNIX1年生 です。
今回、Cシェルを作成することになり、Cシェルはじめて2週間といった
初心者です。どうぞ、宜しくお願いします。

さて、質問なのですが・・・

[ test.txt ]

apple 133 123
orange 133 123
candy 133 156
というファイルがあります。

このファイルの各行末に
変数 TEMPSTR に 格納されている文字列を連結するというCシェルを
作成しようとしています。

[ 作成したシェルスクリプト ]
#!/bin/csh

set TEMPSTR = "LIST"

sed 's/$/,123.45/' < test.txt
sed "s/^/${TEMPSTR},/" < test.txt
sed "s/$/,${TEMPSTR}/" < test.txt

[ 実行結果 ]

apple 133 123,123.45
orange 133 123,123.45
candy 133 156 ,123.45
LIST,apple 133 123
LIST,orange 133 123
LIST,candy 133 156
文法があいまいです。

となります。
行頭挿入は、出来るのに行末追加は出来ないのは何故でしょうか???
文法があいまい ということは、変数の指定がいけないと思うのですが
・・・
変数の中身は、固定でないので(各行違うデータを文末につけるので)
変数を用いなればなりません。
sed以外でも ファイルの各行の文末に文字列を連結することが
出来るコマンドがあれば、そちらの方法でも構いません。
(行数分LOOPを回してやるというLOOP処理では行数が1万行とかあるので
  NGですが)

質問の仕方が下手で申し訳ありませんが、宜しくお願い致します。
ちなみにバージョンは、UNIX(r) System V Release 4.0 です。
どなたか、ご教授いただければ大変、嬉しく思います。

No. 2808 # 愛子 2002/06/24 (月) 15:07:43
自己レスでごめんなさい。
10Hやって出来なかったので、質問したのですが、

インターネットで調べながらやっていたら、出来ました。
            sed 's/$/,'$TEMPSTR'/' < test.txt
でした。

また、1行目から2行目まで追加したい時は、
            @ RW = 2
            sed '1,'$RW's/$/'$TEMPSTR'/' < test.txt
のようです。
ご参考までに

#!/bin/csh
set TEMPSTR = "LIST"
@ RW = 2
sed 's/$/,123.45/' test.txt
sed "s/^/${TEMPSTR},/" test.txt
echo RW = $RW
echo TEMPSTR = $TEMPSTR
sed '1,2s/$/,GYOUMATSU/' test.txt
echo "-----------------------------------------------"
sed '1,'$RW's/$/'$TEMPSTR'/' test.txt
echo "-----------------------------------------------"
sed 's/$/,'$TEMPSTR'/' test.txt
どなたかが参考になるといいなぁ・・・
では、お騒がせ致しましたです。

No. 2809 # 68user 2002/06/24 (月) 19:33:01
>>2808 愛子
> sed 's/$/,'$TEMPSTR'/' < test.txt
もし "" でくくるなら、sed "s/\$/,$TEMPSTR/" ですが、
csh では "\"" とか '\'' というふうに
    - "" の中に " を入れる
    - '' の中に ' を入れる
ことはできませんので、\ でエスケープしているといつかは
破綻します。よって、

> sed 's/$/,'$TEMPSTR'/' < test.txt
のように必要なところのみ '' でくくるのはよいやり方だと
思います。

No. 2810 # りょうこ 2002/06/25 (火) 18:47:08
sendmailについての質問があります。

現在sendmailのバージョンは、8.9です。
現在使用しているドメインにもう1つドメインを追加したいのですが、

sendmail.cwファイルを作成して、そこを参照するように.defを
このようにしました。
USE_cw_FILECLASS=yes
cw_FILE_PATH='/etc/mail/sendmail.cw'

そして、sendmail.cwの中にドメイン名を記述したのですが、
これだけでは、だめなのでしょうか?

やりたい事は、1つのメールサーバーで2つのドメインのメールを受信
したいのです。

検討違いの事をやっているかもしれませんが、教えてください

No. 2811 # あおい 2002/06/26 (水) 01:22:52
はじめまして、こんにちは。
HPを開いているのですがご相談があります。
ネットに関してまだ未熟なもので
申し訳ないですがよろしくお願い致します。m(__)m

BBSを2つほどレンタルして設置しているのですが
管理人の記事管理モードなどを使うと
書き込み相手の【ホスト名】というのが表示されています。
これを使ってアクセス制限などをするようなのですが
私のBBSでは1つが【4つの数字】の表示(【IPアドレス】ですか?)で
もう1つは【〜jp】での表示です。
これら【ホスト名】とは、パソコン1つ1つで絶対に違うものになるのでしょうか?
人によっては時々その数字やアルファベットが、多少変化しているのですが・・・。
同じ物は絶対に存在しないのでしょうか?

例えば学校内の1つの部屋に沢山のパソコンを置いている場合、
どのパソコンを使ってもこの【ホスト名】は別々のものになりますか?
それとも同じになる事もあるのでしょうか?

このような質問をさせて頂いたのは実はBBSに書き込みされてる方で
『2つのHNを使い、別人を装ってるのではないか?』と
思われる人がいるからなんです。
その2人の人物はいつも同じ日、同じ時間に書き込んでいるのですが
【ホスト名】が常に同じだったので疑った所
『友人で2人とも学校から書き込んでいる』といいます。

その人物達のホスト名は他の方達が【〜ne.jp】で終わってる所
【fm〜ngn.ed.jp】となっています。これは学校や団体を指すのでしょうか?

わかりにくい文面で申し訳ないですが、
大変困ってますので、どうかよろしくお願い致します・・・。m(__)m

No. 2812 # 68user 2002/06/26 (水) 06:18:33
>>2810 りょうこ
よいと思います。あるいは MY_ALIAS で指定するとか。

>>2811 あおい
> それとも同じになる事もあるのでしょうか?
proxy サーバを経由しないと外に出られないようになっているなら、
ホスト名や IP アドレスは proxy サーバのものになります。学校や
会社などではよくある形態です。

> その人物達のホスト名は他の方達が【〜ne.jp】で終わってる所
> 【fm〜ngn.ed.jp】となっています。これは学校や団体を指すのでしょうか?
ed.jp は小・中・高等学校などです。詳しくは
    http://www.nic.ad.jp/ja/dom/basics.html
をどうぞ。ngn は「長野県」でしょうね。

No. 2813 # has 2002/06/27 (木) 02:17:48
>>2806 68user
perl実行時にstraceしながらtcpdumpしましたが、パケットは流れませんでした。
ただstraceで若干気になったところがあるんですが、

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168\
.0.1")}}, 28) = 0
send(3, "9\307\1\0\0\1\0\0\0\0\0\0\3www\2jp\7freebsd\3org\0"..., 36, 0) = 36
gettimeofday({1025110376, 462410}, NULL) = 0
poll([{fd=3, events=POLLIN}], 1, 5000) = 0

と出力されるうち、sendの戻り値36は何を示しているんでしょう?
# ちなみにプログラムはpollでタイムアウトを繰り返して終了します。
固定IPを指定してみましたが、やはり同様に名前解決できませんでした。
ipv6を切るのは、やり方がわかっていないのでまだやっていません。
Webの検索をしたときにSolarisで同じような問題にぶつかって、
それについてMLで質問している記録が掲載されていたのを見付けたので、
その人に直接メールで聞いてみようかなぁ。
# その記事には結末が載っていませんでした

No. 2814 # 68user 2002/06/27 (木) 21:50:03
>>2813 has
> sendの戻り値36は何を示しているんでしょう?
送信したバイト数ですが、この結果だけ見ればちゃんと query を
送信しているように見えます。

というわけで、strace は手詰りですね。後は netstat -s で統計
情報に何か出ていないか調べてみる、くらいしか思い付きません。

No. 2815 # moto 2002/06/28 (金) 00:42:40
こんにちは パールのコードについて教えてください。
ログの読み込みなのですが、ファイルハンドルをオープンして通常は
@log = <FH>; のような形で取り込むのですが、ログファイルの先頭の
1行だけ必要な場合、その1行だけを取得することはできるのですが、
書き換えたその1行を元の先頭に戻したいのです。
メモリ食いの @log = <FH>; は使わないで、while(<FH>){nantoka;} のような形で解決するコードは無いでしょうか。
よろしくお願いします。

No. 2816 # 68user 2002/06/28 (金) 01:02:12
>>2815 moto
use IO::Handle して、sysopen して、<FH> して、先頭に
seek で戻って print でいけるかな。

ただし、1行あたりの文字数が変わらない場合のみです。

No. 2817 # moto 2002/06/28 (金) 23:45:06
こんにちは 68user さん
掲示板のログの読み込みに関してだったのですが、やはり、上手い手は無いようなのですね。
いつも思うのですが、open 関数の >> の追加書き込みでログの先頭に書きむ選択肢もあったら、while 関数ももっと活躍できるのにと残念です。
お騒がせしました。 

No. 2818 # 68user 2002/06/28 (金) 23:50:32
>>2817 moto
> open 関数の >> の追加書き込みでログの先頭に書きむ選択肢もあったら
と言われて思い出しましたが、 +> や +>> ってのがありましたね。

ただ、繰り返しになりますが、文字や行の挿入はできませんよ。
あくまで上書きのみです。よって、あまりうれしくないかも。

No. 2819 # 飛鳥 2002/07/01 (月) 16:56:36
教えてください。
vi エディッタで rm ファイル名で ファイルを削除してしまいました。
復元する方法はありませんか???
よろしくお願いします。

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

No. 2820 # 68user 2002/07/01 (月) 18:14:37
>>2819 飛鳥
一般的な UNIX のファイルシステムであれば、消したファイルは
復活できません。あきらめましょう。

No. 2821 # 飛鳥 2002/07/01 (月) 19:37:24
ありがとうございます。
素直にあきらめます。。。。。。。。。

No. 2822 # help 2002/07/01 (月) 20:23:12
javaのRuntimeクラスを使いシェルスクリプトを実行させたのですが、
シェルスクリプトに引数が渡りません。
以下の記述をしてます。
Runtime.getRuntime().exec("test.sh","param");

シェルスクリプト側で$1変数から引数の値が取得できてません。
解決方法を知ってる方は教えて頂けないでしょうか?

No. 2823 # 68user 2002/07/01 (月) 22:26:27
>>2822 help
試してませんが
    String args[]={"test.sh", "param"};
    Runtime.getRuntime().exec(args);
とか
    Runtime.getRuntime().exec(new String[]{"test.sh", "param"});
とかとか。

# 文法あってるかな・・・。

No. 2824 # help 2002/07/01 (月) 22:38:29
>>2823 68user
わざわざ返答ありがとうございます。
返答された記述も上手くいきませんでした。
シェルスクリプト内で行っている処理なんですが、
引数で渡された値からファイルを削除する処理で
以下のような記述をしてます。

#!/bin/sh

/**
      別の処理
*/
rm -rf $1

No. 2825 # 68user 2002/07/02 (火) 09:08:42
>>2824 help
> 返答された記述も上手くいきませんでした。
何がどううまくいかなかったですか? また、うまくいかないと判断した根拠は何ですか?
コマンドラインからシェルスクリプトを実行すると動くんですか?

うちの Solaris8+J2SE SDK 1.3.1 では
        String args[]={"test.sh", "param"};
        Runtime.getRuntime().exec(args);

        Runtime.getRuntime().exec(new String[]{"test.sh", "param"});
それに
        Runtime.getRuntime().exec("test.sh param");
も動きました。

そもそも
> Runtime.getRuntime().exec("test.sh","param");
はコンパイルできなかったのですが、そちらではコンパイルできているん
でしょうか?

なお、Runtime#exec の出力結果を取得したいならこちらを。
    http://www.ongs.net/daichi/java/runtimeexec/index.shtml

これをやらなくても画面に表示されないだけで、実行はされています。

No. 2826 # help 2002/07/02 (火) 10:25:45
>>2825 68user
説明不足で申し訳ありませんでした。
おかげさまでシェルスクリプト内で
以下の記述を追加して解決できました。

//削除したいファイルのパスに移動
cd /XXX/XXX
rm -rf $1

No. 2827 # Tetsu 2002/07/02 (火) 22:00:58
はじめましてTetsuといいます
早速ですが質問があります
WindowsでTCP/IPのプログラムを作っているのですがサーバーはどれにあたるのですか?
メールサーバーでしょうか?それともWWWサーバーなのか良くわかりません
自分ではチャットみたいなプログラムを作りたいと思うのですがサーバーとクライアントの関係がまだ良くつかめません
具体的に教えてもらえると助かります

No. 2828 # 68user 2002/07/02 (火) 23:12:31
>>2827 Tetsu
「はじめにプロトコルありき」と考えるのはどうでしょうね。

    HTTP というプロトコルがあります。HTTP を喋るサーバと
    HTTP を喋るクライアントが必要です。HTTP を喋るサーバは
    web サーバです。HTTP を喋るクライアントはブラウザです。
    よって、web サーバとブラウザがあれば HTTP で遊べます。


で、あなたはチャットみたいな機能が欲しいと。プロトコルは何にしますか?
    1. IRC
    2. HTTP (web 上でのチャット)
    3. 自作プロトコル

1 の場合、IRC というプロトコルは既に存在します。IRC プロトコルを喋る
サーバは既に存在します。IRC プロトコルを喋るクライアントは既に存在します。

よって、IRC サーバと IRC クライアントをインストールすれば OK です。もし
IRC サーバに不満があるなら自作することもできます。IRC クライアントに
不満があるなら自作することもできます。

2 も 1 と同じ。

3 の場合、あなたが新しいプロトコルを設計します。何から何まであなたが
勝手に決めます。しかし、そのプロトコルを喋るサーバもクライアントも
この世には存在しませんので、両方とも自作する必要があります。

…というので回答になってますか?

No. 2829 # Tetsu 2002/07/02 (火) 23:35:56
回答ありがとうございます
自分の聞きたかった質問の解答になってます
ありがとうございます
早速1か2の方法でためしてみたいと思います
3はもう少し勉強してからのほうがいいと思うので

No. 2830 # 68user 2002/07/03 (水) 02:11:27
>>2829 Tetsu
> 早速1か2の方法でためしてみたいと思います
という選択をするのはそれはそれで構わないのですが、チャットアプリを
作ることが目的ではなく、TCP/IP プログラミングの勉強が目的なのなら、
多分遠回りになります。


まずは入力された文字を参加者全員に返すサーバを作る。クライアントは
telnet コマンドで代用。

そこからどんどん機能追加して、名前を入力できるようにしたり、部屋を
作れるようにしたり、誰かが入室・退室したときは全員に通知するように
したり、ファイル送受信できるようにしたり…という方がいいかもしれません。

No. 2831 # シド 2002/07/03 (水) 11:26:28
教えてください。
あるマシンで NFS の share を行って、他のマシンからそれのディレクトリを
mountすると、他利用者に何か影響を及ぼすようなことが発生するのでしょうか?

No. 2832 # シド 2002/07/03 (水) 11:28:33
連続してすみません。
教えてください。

dfmountsコマンドを使用する場合、動作環境の条件は、どのようなものがよろしいのでしょうか?

No. 2833 # knockout [E-mail] 2002/07/03 (水) 16:01:01
始めまして。UNIX初心者です。
cシェルを主体としているUNIXにログインしているんですが、
自作のプログラミングを流すと、

: 構文エラー at line 59: `end of file' unexpected

というエラーメッセージが出るんですが、
ファイルのエンドコードがないっすって意味だと思うんですが
この対処法とかあったら教えて下さい。

因みに自分の記述は一行目から
"#! /usr/bin/sh"とかって、シェルがちゃうやん!!
みたいな指摘もあったりなかったり(爆

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

No. 2834 # 麻耶 2002/07/03 (水) 17:33:52
はじめまして。
HTTPクライアントについて教えて頂きたいのですが、C言語でHTTPクライアントを作成したく、こちらの「C言語でHTTPクライアントを作ってみよう」を参考にしております。それで、そちらにあるソースではGETの場合を例にしておりますが、これはPOSTでも可能なんでしょうか?また、その場合どのようにすればよろしいのでしょうか。
よろしくお願いします。

No. 2835 # 68user 2002/07/03 (水) 18:01:01
>>2883 シケ゛
> : 構文エラー at line 59: `end of file' unexpected
直訳すると
    予期せぬ「ファイルの終わり」
意訳すると
    次に○○が現れると予想していたのに、ファイルの終端まで
    到達してしまった

というわけで、if に対応する then や fi がないとか、case を esac で
閉じてないとか、そういったことでしょう。

# ファイルの最終行に改行コードがないという可能性も捨て切れませんが。

> ファイルのエンドコードがないっす
UNIX にはファイルの終端コードというものはありません。


>>2834 麻耶
> これはPOSTでも可能なんでしょうか?
可能です。
    http://x68000.startshop.co.jp/~68user/net/http-4.html
を読んでください。

No. 2836 # 68user 2002/07/03 (水) 18:40:59
>>2831 シド
僕は NFS に詳しくないのでよくわかりませんが、返事が付かないのは
質問が曖昧だからでしょう。

まず、OS とバージョンが不明です。

>>2783 シド
> - /home rw=nini:gp7000s,root=gp7000s "File Service"
GP7000S っていうことは Solaris か UXP/DS か HP-UX かなぁと
思いますが (Solaris しか載らないんでしたっけ?)、ちゃんと
サーバとクライアント両方について、OS とバージョンを明記
すべきです。

また、何をどう設定したのかがわかりません。share の引数は?
NFS クライアントからどうやってマウントしたのですか? NFS
クライアントからは正常にアクセスできているのですか?


> 動作環境の条件はどのようなものがいいか
どのような、って何を聞きたいのかわからないです。うまく動作しないのは
動くための条件をクリアしていないのではないか、ということですか?

> 他利用者に何か影響を及ぼすようなことが発生するのでしょうか?
「他利用者」ってどのマシンの利用者ですか? クライアント? サーバ?
要は何か問題が発生しているのですか? ただ単に心配しているだけですか?


業務で使用していて問題が発生しているなら、サポートに聞いた方が
いいと思いますよ。そっちの方が早いし、正確だし、とことんまで
調べてくれるでしょう。

あとは、人の多い
    http://pc.2ch.net/unix/
で質問してみるとか。この掲示板なんて、1日100〜200程度のアクセスしか
ありませんので。

No. 2837 # 麻耶 2002/07/03 (水) 18:43:07
回答ありがとうございます。
幾度か試してみまして、出来ませんでしたのでこちらに書き込んだのですが、よく確認しましたところ空行の入れ忘れでした。本当に申し訳ありませんでした。

No. 2838 # シド 2002/07/03 (水) 19:30:22
すみません。
書き込みの内容が、曖昧でした。私の使用しているのは、確かにSolaris です。
(クラスタサーバモデルなので2つともです。)
shareの実行は、「share -F nfs -o rw=ss10:gp7000s,root=gp7000s -d "File Service" /home」
上記の共有を実行しました。
これをもう1つ別のサーバでマウントして、dfmountsを行う。
(dfmounytsはオプションにサーバ名を入れる事が出来た)
このときdfmountsを行う動作環境として何か問題または、条件が有りますか。

No. 2839 # 遅くなりましたが・・・ [E-mail] 2002/07/04 (木) 10:02:43
回答ありがとうございました(^^)
無事プログラム流れてくれました。
結局、if文内にあったechoのダブルクォーテーション不足でした
ご迷惑かけました(^^;

No. 2840 # 紅絹 2002/07/04 (木) 14:47:49
教えていただきたいのですが、HTTPでファイル転送するものをC言語で作りたいのですが可能でしょうか?
また参考をなるものがありましたら教えて頂けないでしょうか。
よろしくお願いします。

No. 2841 # かず 2002/07/04 (木) 16:27:29
すいませんが、どなたか文字列置換に詳しい方がいらっしゃいましたら教えていただきたいんですけど、あるディレクトリ以下の全てのファイルを対象に文字列置換を行う際の書式を教えて下さい。
で、文字列中に記号や空白が含まれるので、例えば「top.test/mail.html」という文字列を「i = window.close();」という文字列に置換する際はどういったコーディングになるのか教えて頂けたらさいわいです。
sedコマンド等で色々と試したのですがどうしても上手く行きません。
どなたかわかる方いらっしゃいましたら教えて下さい。
もう3日ほど悩んでいます。。。お願いします。

No. 2842 # 名無しさん 2002/07/04 (木) 16:49:07
>>2841 かず
Perlで、
s#top\.test/mail\.html#i = window.close();#g;
とか・・・
s#\Qtop.test/mail.html\E#i = window.close();#g;

No. 2843 # シゲ 2002/07/04 (木) 20:46:21
お世話になっています。
初心者の質問で申し訳がありません。
MA-300というハードにPostgreSQLをインストールをしました。
そこで、自動起動を行いたいのですが、
/etc/rc.d/rc.local
に起動コマンドを書き込んでも起動しません。(red hatでは起動したので、コマンドは正しいかと思います。)
私の初心者ながらの推測では、起動時にrc.localは呼ばれていない気がします。(rc.localの中身は空なので、現状では呼ばれなくてもさしあたりがない。)
そこで、またまた初心者的な発想なのかもしれませが、
/etc/rc.d/rc.sysinit
に、直接コマンドを書き込んでもいいのでしょうか?

ご教授ください。
また、他にいい方法があれば、お教え願います。
よろしくお願いします。

No. 2844 # Tetsu 2002/07/04 (木) 22:48:07
>> 早速1か2の方法でためしてみたいと思います
>という選択をするのはそれはそれで構わないのですが、チャットアプリを
>作ることが目的ではなく、TCP/IP プログラミングの勉強が目的なのなら、
>多分遠回りになります。
すみません少し勘違いしてました
目的はTCP/IPプログラミングの勉強です チャット機能を持ったプログラムはTCP/IPを理解する上で作りたいと思ってるものです
で質問なのですがサーバプログラムは作成しないといけないのでしょうか?
プロバイダーのサーバにつないでMSNメッセンジャーのような感じで作りたいのですが

No. 2845 # 68user 2002/07/05 (金) 00:37:15
>>2840 紅絹
> HTTPでファイル転送するものをC言語で作りたいのですが可能でしょうか?
やろうと思えば何だって可能ですが、そもそもファイル転送って何ですか?
ファイルを GET することですか? それとも
      http://tohoho.wakusei.ne.jp/wwwxx034.htm
のようにファイルをアップロードすることですか?

>>2843 シゲ
> /etc/rc.d/rc.local に起動コマンドを書き込んでも起動しません。
Linux なら
    http://www.zdnet.co.jp/help/howto/linux/0007master/01/08.html
のように S99PostgrSQL と K99PostgreSQL を作るのが普通だと思います。

>>2844 Tetsu
> で質問なのですがサーバプログラムは作成しないといけないので
> しょうか? プロバイダーのサーバにつないでMSNメッセンジャーの
> ような感じで作りたいのですが
IRC や ICQ や MSN メッセンジャーのように、既にどこかにサーバが
立ち上がっているのなら、わざわざサーバは作らなくてもいいです。

ただし、こういうのを読んでプロトコルを理解する必要があります。
    IRC: http://www3.alpha-net.ne.jp/users/tycho/mokuji.htm
    ICQ: http://www.d.kth.se/~d95-mih/icq/
    MSN メッセンジャー:
              http://www.tlsecurity.net/Textware/Misc/draft-movva-msn-messenger-protocol-00.txt (これは古い)

作るのにとても苦労するでしょうけど、まぁこういうのが好きならば
結構楽しいと思います。

    苦労しつつも楽しんでいる人々: http://pc.2ch.net/test/read.cgi/tech/1006154451/

No. 2846 # シド 2002/07/05 (金) 10:02:14
マウント、シェア関係はほとんど解決できました。

1つ解らないことがあるので、教えてください。
sunOS Solaris7 を使用しています。
NFS サーバーで NFS サービスの実行があるのですが
dfmountsコマンドを実行したいとき、どのデーモンを起動すればいいのか?

mountの場合、mountdプロセスが起動していれば、mountコマンドが実行できました。

No. 2847 # mattu 2002/07/05 (金) 11:39:58
教えてください。
現在POSTをつかったHTTPクライアントをC言語で作成しているのですが、[HTTPクライアントを作ってみよう]のPOSTメソッドを参考に
        sprintf(send_buf, "POST %s HTTP/1.0 \r\n", path);
        write(s, send_buf, strlen(send_buf));
        sprintf(send_buf, "Content-Length:8\r\n");
        write(s, send_buf, strlen(send_buf));
        sprintf(send_buf, "Content-Type:text/plain\r\n", path);
        write(s, send_buf, strlen(send_buf));
        sprintf(send_buf, "\r\n");
        write(s, send_buf, strlen(send_buf));
        sprintf(send_buf,"NAME=aaa\r\n");
        write(s, send_buf, strlen(send_buf));
という風に作ってみたのですが、ヘッダの方は正常に送信されている
みたいですが、パラメータが正常に送信されていないようなんです。
ご指摘よろしくお願いします。

No. 2848 # かず 2002/07/05 (金) 13:07:33
教えてくれた方、ありがとうございました。
その後四苦八苦してなんとか自分で解決できました。
ありがとうございました。

No. 2849 # 紅絹 2002/07/05 (金) 16:20:07
ご回答ありがとうございます。
ファイル転送についてですが、GETとアップロードの両方おこなうものを作りたいと思っています。説明不足で申し訳ありませんでした。

No. 2850 # しっぽ 2002/07/08 (月) 11:26:17
はじめまして、いつもお世話になっております

PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら
タイムアウト処理を、と言ったことをしたいのですが、以下のプログラムでは
うまく行きませんでした。TCPdumpで見てたところ、何回もSYNを投げなおした後
数分後にやっとエラーメッセージを表示してくれます。

よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく
最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後
エラーメッセージを出す動きをしていました。

何かアドバイスなど有りましたらよろしくお願いいたします
なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です

    $socket = new IO::Socket::INET (
        PeerAddr => "$address",
        PeerPort => "$port",
        Proto => 'tcp',
        TimeOut => 10 );

    unless ($socket) {
        print STDERR "Connection Error at $date\n";
        close($socket);
        }

No. 2851 # 68user 2002/07/08 (月) 11:53:51
>>2850 しっぽ
> PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら
その辺を管理するのは OS の TCP スタックなので、プログラム側
からはどうにもなりません。

> よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく
> 最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後
> エラーメッセージを出す動きをしていました。
これも、そういうものです。

Solaris だとタイムアウトまでの時間を変更できたしますが、その他の
OS では変更できない可能性が高いです。

もし connect 時のタイムアウト処理をしたいという目的ならば、
ノンブロッキングソケットを使いましょう。


>>2847 mattu
> パラメータが正常に送信されていないようなんです。
その判断が間違っているような気がします。そう判断するに至った
根拠が明示されていないので、ただのあてずっぽうですが。

No. 2852 # mattu 2002/07/08 (月) 12:21:48
ご回答ありがとうございます。
別にあてずっぽうではなく、サーバ側でデバックにて確認してみると、渡しているデータが入ってなかったのと、渡されたヘッダ・パラメータがファイルに出力されるようにしており、JAVAで作成したものでしたら正常に出力されるのですが、Cで作成したもので試してみるとヘッダの部分のみ出力されるのでそう思いました。デバック等にはVAJを使用しております。
言葉不足ですみませんでした。

No. 2853 # 68user 2002/07/08 (月) 12:33:13
>>2852 mattu
    - ボディの最後の \r\n は不要 (もし \r\n を付けるなら Content-Length は
        10 であるべき。でも \r\n 付けていいのかな?)
    - リクエストに Content-Type ヘッダは不要
という点を直しても まだボディが渡らないようなら、その C のプログラムが
おかしいんだと思います (てゆーか、Java でうまくいって C でうまくいかない
なら、C の方を疑うべきでしょう)。

詳しくはこちらなど。http://www.studyinghttp.net/headers.html

No. 2854 # シゲ 2002/07/08 (月) 16:24:29
>>2845出来ました。ありがとうございます。

No. 2855 # シド 2002/07/09 (火) 09:45:44
教えてください。
showmountコマンドは、OSのサポートバージョン等が制限されていますか。

showmountコマンドの実行制限が何かありましたら、教えてください。

No. 2856 # mattu 2002/07/09 (火) 14:03:44
ご回答ありがとうございます
Cで作るHTTPクライアントの件ですが、やはりボディが渡りません。
ソースの方を確認しましたが、おかしいと思われる箇所は見つかりませんでした。
環境が原因で渡らないというのはあるんでしょうか?
現在はUNIX上でコンパイル・実行をしてWin2000上のVAJにつないでいるんですが、関係あるのでしょうか?
また、ボディの書き方で何か注意しとくべきことありますでしょうか?
よろしくお願いします。

No. 2857 # 68user 2002/07/10 (水) 00:51:25
>>2856 mattu
> ボディの書き方で何か注意しとくべきことありますでしょうか?
結局何をどうしたのかわからないので、何とも言えません。

    - VAJ をやめて別のサーバ (Apache など) にしてみる
    - パケットをモニタして、java 版と C 版の違いを調べる
あたりをやれば何かわかるんじゃないでしょうか。

>>2856 mattu
>>2855 シド
とりあえず
    http://www.hyuki.com/writing/techask.html
を読んでみてください。

No. 2858 # しっぽ 2002/07/11 (木) 12:37:18
>>2851 68user

ご回答ありがとうございます
そんな気はしてたのですが、やっぱりそうですか

ただ、TimeOut => 10 の所は何に反映されるのかってのがちょっと気になりました。
確か<$socket>やsysreadで読んだときに読むべきデータがないと
TimeOutの時間を過ぎても返ってこなかったと思いますので…

>ノンブロッキングソケットを使いましょう。

これってつまりは「読むべきデータが無いときに待たない」って
事ですよね。Perlでは使えますでしょうか??

確立時の話じゃないですけど、Cのrecvなんかは待たないので
便利だったり不便だったりといった感じではあったのですが…

No. 2859 # 68user 2002/07/11 (木) 20:45:02
>>2850 しっぽ
> PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら
> タイムアウト処理を、と言ったことをしたいのですが
この目的を聞かせてください。connect で数分待ってしまうのがイヤだから
なんとかしたい、ということだと受け取ったのですが、

> Cのrecvなんかは
ということは、read/write のタイムアウト管理 {が or も} 目的なのですか?

No. 2860 # KL 2002/07/12 (金) 09:09:48
>>2850 しっぽ

IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、
http://www.cotse.com/sw/portscan/halfscan.c
のプログラムと同等のことをPerlからやりたいなら、
http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP.pm
でなんとかできませんか? libpcapのラッパーなのでそれがmakeに要る
ようです。
タイムアウトは、
>なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です
とのことですから、threadを使ってなんとかできそうですが
Perlのthreadなんて使ったこと無いのでどうなのか知りません。
Rubyなら
http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html
なんてのもありますがこっちは目的の機能は無いようにみえます。

No. 2861 # has 2002/07/15 (月) 00:45:53
未だRedhatで名前解決できず、気が向いては眺め、弱っています。
Redhat7.1.94(雑誌に付属)を再インストールしてみましたが、
症状は変わりませんでした。

>>2814 68user
[netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか?
使ったことも知識も無いので、よかったら今後のためにもアドバイスください。

>>2779 has
いまさら経緯の説明をはじめるのも遅すぎかとは思うのですが、
そもそもこういった状態になったのは、LANからインターネットへの回線が
ISDNからADSLに変わり、それと同時に各ユーザマシンに割り当てられるIPが
グローバルIPからプライベートIPに変わってからでした。
それまではRedhatからでも名前解決に時間がかかりながらも
なんとかアクセスできていました。
# Win2kとのデュアルブートなんですが、ADSLになる以前からも、
# Win2kは素早く名前解決できてRedhatで時間がかかるという差が
# あったことが、既におかしかったのかもしれません…

とりあえず現在の状況はこんな感じでうまくいっていません。
以上ご報告まで。

No. 2862 # HP-UXSE 2002/07/15 (月) 18:21:06
はじめまして。

HP-UX11のインストールをされた方がいらしたら幸いです。
質問があります。
locale -a
で表示されていないロケールを、OSインストール後に、個別でインストールできるでしょうか?OSの入れなおししか、方法は無いでしょうか?

# setenv LANG japanese

を設定しても、Warningが出てしまいます。何とか個別でインストールしたいのですが・・・

乱文ですみません。よろしくお願いします。

No. 2863 # とも 2002/07/19 (金) 21:20:59
はじめまして
現在Solaris2.6 + iPlanet4.0 でWebサーバを利用しています。
先日CGIを使いたいとの要望がありiPlanetに対してCGIの設定を行った
のですが、"Method Not Allow"というエラーがブラウザに表示され、
CGIを実行することができません。
原因がわかる方、ご教授願えないでしょうか。
iPlanetに対して行った設定は下記のようなものです。
<やりたいこと>
〜/cgi/ ディレクトリに設置したcgiファイルを実行したい

1.サーバマネージャで[Program]→[CGI Directory]を選択し、上記ディレクトリをURLにマッピング
2.サーバマネージャで[Program]→[CGI File Type]で上記ディレクトリを選択し、ON状態に設定
3.利用するCGIファイルのパーミッションに777を設定。とりあえず動かすのが目的なのでフルアクセスを許可してみました(^^;

No. 2864 # 68user 2002/07/20 (土) 22:19:14
>>2861 has
えー、混乱してきたのんでまとめると、

    /etc/host.conf
        order hosts,bind
    /etc/resolv.conf
        nameserver 192.168.0.1

    名前解決ができない。
        netscape や perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))" は NG。
        nslookup, host, dig は OK。
            → gethostbyname 系がダメっぽい。
        dig は OK? NG?

    tcpdump の結果
        netscape も perl も query 投げていないようだ。

    strace dig の結果
        socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
        socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented)
        socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented)
        socket(PF_INET6, SOCK_STREAM, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol)
            connect はしていないようだ (by has)
            → これは dig は名前解決できないという意味? nslookup と host が OK で、
                  dig が NG ならば、ちょっと理解できません。UDP は「connect して send」
                  「connect して send」の両方のやり方がありますが、dig は「conenct
                  して send」するはず (てゆーか大抵の DNS クライアントは connect すると
                  思う)。

    strace perl の結果
        socket(PF_UNIX, SOCK_STREAM, 0) = 3
        connect(3, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or directory)
        socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
        connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0
        socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
        connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0
        → perl (から呼ばれる libc の resolver) は正常動作していると思う。これで
              パケットが飛ばないなら、OS の TCP/IP スタックが腐ってるとしか…。でも
              nslookup や host は OK というなら違うのかなぁ。nslookup や host を
              strace するとどうなるんでしょう。

> [netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか?
えー、UDP を投げた後 ICMP (かな?) が返ってくるサマを見て、何か
わかるかなーと思いましたが、今考えるとおそらく netstat -s では
原因まではわからないでしょうね。netstat -s については、2〜3ヵ月
以内の UNIX USER に詳しく説明されていましたので (Solaris,FreeBSD,
Linux の netstat -s の違いも含め)、興味があればそちらを。

あと、本当にお困りなら linux.or.jp あたりのメーリングリストで
質問した方が早いと思うですよ (もちろん解決しなくてもいいなら
こっちで続けても構いません)。

No. 2865 # 68user 2002/07/20 (土) 22:31:41
>>2862 HP-UXSE
> locale -a で表示されていないロケールを、OSインストール後に、
> 個別でインストールできるでしょうか?
HP-UX は使ったことがないのでわかりません。僕は Solaris で同じ
ことをする正しい方法を知りたい。

# 昔 ja_JP.eucJP ロケールが入ってなかった Solaris に、他の
# Solaris マシンから/usr/share/locale/ja_JP.eucJP (だったかな?)
# をごっそり持ってきて動かしたことがある。

>>2863 とも
残念ながら iPlanet も使ったことありませんのですよ。

No. 2866 # 68user 2002/07/22 (月) 16:30:46
>>2861 has
そうそう、/etc/nsswitch.conf は
    hosts: files dns
てな感じになってますか?

No. 2867 # しっぽ 2002/07/24 (水) 10:52:32
>>2859 & 2860

レスありがとうございます

>この目的を聞かせてください。connect で数分待ってしまうのがイヤだから
>なんとかしたい、ということだと受け取ったのですが、

サーバーのサービスの監視が目的です。L4SW(サーバーロードバランサー)なんかだと
5秒間隔のSYNに3回連続で応答しなければ死んだと見なすなんてヘルスチェックを
良くやるのですが…、3分にもわたって6回連続で応答しない場合のみ死んだと見なす
ってのはちょっと嬉しくないです

#これ書いててL4SWが余ってるからそれでやっても良いことに気づいた…(^^;

Writeのタイムアウトの方法は知りませんが、readのタイムアウトは以前
$selector->can_read あたりをやってみて上手くできていたような気がします



>IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、

低水準な物の存在を知らなかったので…
Net::RawIP ってのは名前からして使えそうな気がします。ぐぐるで調べて
何件か出てきたので見てるところですが、ただ今のところ送るのはともかく
その後どうやって受信したら良いかが良くわかってなかったりします
まあAttackingに使うには良いのかも知れませんが

No. 2868 # 68user 2002/07/24 (水) 11:59:32
>>2867 しっぽ
であれば、ずっと connect しっぱなしで定期的にデータを
送り、返答がなければ異常とみなすのはどうでしょうか?

で、connect のタイムアウトですが、IO::Socket のソースをちらっと
見て $SIG{ALRM} やら alarm やら書いてあったので、connect 時にも
タイムアウトが働くはず…と思っていたのですが、実際に試してみると
タイムアウトになりませんでした。なので、

    $SIG{ALRM}=sub { print "SIGALRM!\n"; };
    alarm(10);
    $socket = new IO::Socket::INET (...);
    alarm(0);

こんな感じで。

No. 2869 # 68user 2002/07/24 (水) 12:09:52
>>2868 68user
ちなみに connect 中に SIGALRM が飛んでくると $! (errno) には
    Interrupted system call
が入ります。でも、IO::Socket は内部で $! が潰されてしまう
ようですね。

そういう意味でも、KL さんのおっしゃるとおり高級なものを
使うのは避けた方がよいかも。

No. 2870 # KL 2002/07/25 (木) 22:31:03
>>2867 しっぽ

>何件か出てきたので見てるところですが、ただ今のところ送るのはともかく
>その後どうやって受信したら良いかが良くわかってなかったりします

sendメソッドがありますがrecvが無いですね。
前記の通りRawIPはlibpcapのラッパーなので、libpcapへのインターフェイス
がPerlに露出されてます。キャプチャせよということでしょう。
http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP/libpcap.pod

halfscan.cを(Perlなり他の手段を経由するなりして)raw socketの使えるシェル
から使えば一番手短に済んで良いと思いますけども。
Perlでなければならない理由が何かあるのでしょうか。また、監視対象のサービ
スも何か分からないので、halfscan.cが一番汎用で楽です。

>まあAttackingに使うには良いのかも知れませんが

どこがどのように良いのでしょう?

>>2868 68user

「connectしっぱなしで対象サービスを監視しているサービスが
正常に動いているか」を監視するサービスが必要で、さらにその
サービスを監視するサービスが...というのを考えつきました 笑
この循環を止めるには、せいぜいhalfscan.cを、切れない回線の
向こうにある落ちないOSから定期実行するか、もしくはしっぽさん
の仰られるような信頼性の高い機械を使うしかないのでは。

No. 2871 # has 2002/07/26 (金) 07:19:53
>>2864 68user
> 名前解決ができない。
nslookup,host,digは動作OKです。

> → これは dig は名前解決できないという意味? nslookup と host が OK で、
> dig が NG ならば、ちょっと理解できません。
strace digについては、dig自体は正常に動作し名前解決しているが、
ご指摘のsend()のコールが見つからないという意味です。
かわりにwrite()のコールがあるので、sendではなくwriteを使っているのでは
と想像していますが、straceで表示されるwriteで送っている文字列(?)は
内容が意味不明で、writeがsendの代わりに使っていると断言する自信は
ありません(dnsライブラリのソースや解説を見たわけではないので)。
実際には次のようになります。

% strace dig www.jp.freebsd.org >& strace-dig.txt
% grep 'write(' strace-dig.txt
write(4, "\t\0\0\0\5\0\0\0\2\0\377\277\266\3066\1\0\240\5\10\340"..., 148) = 148
write(4, "\200-(@\0\0\0\0\0\372\377\277\200T$@\10P<@\3@\0\200\0\0"..., 148) = 148
write(4, "\200-(@\0\0\0\0\20\372\377\277\220q$@XP<@\3@\0\200\0\0"..., 148) = 148
write(4, "\200-(@\0\0\0\0\0\372\377\277 \365$@\350\"\6\10\3@\0\200"..., 148) = 148
write(4, "\200-(@\1\0\0\0\2\4\0\0Ho\26@\320\371\377\2771\220\0@\334"..., 148) = 148
write(6, "\377\377\377\377", 4) = 4
write(4, "\200-(@\1\0\0\0\4\f\0\0\30V(@\260\214\'@\240\224;@\310"..., 148) = 148
write(4, "\200-(@\1\0\0\0\3\10\0\0\376\274\'@\340\"\6\10\260\230"..., 148) = 148
write(4, "\200-(@\2\0\0\0\0\0\0\0*\22:@t\241;@@0<@8\372\377\277\372"..., 148) = 148

> → perl (から呼ばれる libc の resolver) は正常動作していると思う。
確かに正常動作しているように見えます(想像ですが)。

ここで気づいたことがあるのですが、dnsを直接操作するコマンドと
gethostbynameを呼んでいると思われるコマンドで互いのstraceの結果を見比べると、
dns処理のためにオープンしているライブラリが異なっているようです。

またネットを検索していて気づいたのですが、glib2.1.??あたりにバグが
あるらしいです(情報自体は古いですが)。
もしかしたらバグのあるバージョンかもしれないので調べてみます
(今回の名前解決とは関係のないバグかもしれませんが…)。

> netstat -s については、2〜3ヵ月以内の UNIX USER に詳しく説明されていましたので
見つけたら是非読んでみようと思います(書泉行き?)。

> あと、本当にお困りなら linux.or.jp あたりのメーリングリストで
> 質問した方が早いと思うですよ (もちろん解決しなくてもいいなら
> こっちで続けても構いません)。
解決しなくていいわけではないですが、まだねばりたいです。
いつまでも同じ話題でいいかげん飽きている、という気もしますが、
もう少しお付き合いくだせい。

No. 2872 # has 2002/07/26 (金) 07:24:41
>>2866 68user
> そうそう、/etc/nsswitch.conf は
> hosts: files dns
> てな感じになってますか?
ご指摘の記述は存在しました。

No. 2873 # kaworu 2002/07/28 (日) 03:21:28
初めまして。たまにこのホームページにお邪魔させて頂いてます。
FreeBSDのFileSystemについて質問があります。
早速ですが、質問させていただきます。
iノード番号から、struct inodeまたはstruct dinodeを取得する関数(system call)があれば、その関数名を知りたいのですが。
どなたか、ご存知の方はいらっしゃいませんでしょうか?

No. 2874 # しんとろ 2002/08/01 (木) 02:25:47
初めまして。すばらしいサイトですね!
私はまだunix初心者なので、貴サイトにはお世話になっております。

Mewについて調べたところ、
http://www.mew.org/index-j.html
へのリンクが切れてました。
今は
http://www.mew.org/index.html.ja
もしくは
http://www.mew.org/
で行けると思います。

これからも頑張ってください。

No. 2875 # 68user 2002/08/01 (木) 03:21:31
>>2873 kaworu
> iノード番号から、struct inodeまたはstruct dinodeを
> 取得する関数(system call)があれば
たぶんないです。

struct inode や struct dinode は UFS にしか存在しないので、
UFS, NFS, DOS ,ext3, VFAT, FAT32 など、複数のファイルシステムを
サポートしなければならないシステムコールとしては存在しないです。

もしやるなら /dev/da0c などのデバイスを直接オープンすること
になると思いますが、clri, fsck, fsdb などのソースが参考に
なるかもしれません。

>>2871 has
> dns処理のためにオープンしているライブラリが異なっているようです。
とりあえず ldd でどのライブラリを使っているか見たり、nm や
objdump でどの関数を使っているか調べてみるとよいかもしれません。

No. 2876 # 68user 2002/08/01 (木) 03:27:19
>>2875 68user
> struct inode や struct dinode は UFS にしか存在しないので、
ああ、いきなり嘘を書いてしまった。

struct inode はメモリ内 inode なので、全ファイルシステムで
利用可能ですね。

No. 2877 # カトウ [E-mail] 2002/08/12 (月) 10:53:17
はじめまして!!UNIX初心者なのですが、こちらには本当にお世話になっております。
素晴らしいサイトだと思います。
数あるコマンドリファレンス本がほとんど無用になりました。

でも先週、なぜかまったくアクセスできなくなってしまい、大変つらい思いをしました。
こんな聞き方失礼でしょうが、こちら、閉鎖されてしまう予定とかないですよね?
もしなくなってしまったらとてつもなく悲しいです。業務にも支障が出てしまいます(悲しくて(笑))
もし一括ダウンロード等の仕組みがあったらぜひバックアップしておきたいくらいです。
ぜひぜひ永続を願わんことを・・・管理人様の労力を無視した勝手な発言で申し訳ありませんが。

No. 2878 # Ash [E-mail] 2002/08/12 (月) 23:36:23
はじめまして。いつもいつもUNIXの勉強でお世話になっています。
本当に素晴らしいサイトですね。
私もダウンロード等で保存しておきたいぐらいです。
市販の参考書よりもわかりやすく、とても参考になります。
これからもよろしくお願いします。

No. 2879 # hiro [E-mail] 2002/08/20 (火) 18:02:22
はじめまして。UNIX初心者なのが、いつもお世話になってます。
今、会社でHP−UNIX10.20を使用しています。(勉強中)
DATテープにデータをバックアップするのにfbackupコマンドを使用しています。このfbackupでバックアップした内容を確認するコマンドって何ですか?ちなみにtar cvでバックアップした内容の確認はtar tvで確認できますよね?以上、ご存知の方教えてください。

No. 2880 # 68user 2002/08/21 (水) 21:44:18
>>2877 カトウ
> でも先週、なぜかまったくアクセスできなくなってしまい、
> 大変つらい思いをしました。
8/2 あたりから 10日ほどマシンが落ちてました。マシンがリモートに
あるため対応が遅くなり失礼しました。

> こちら、閉鎖されてしまう予定とかないですよね?

現時点では閉鎖予定はないですが、なにぶんにもタダで借りさせていただいて
るものですから、マシンがクラッシュしたらどうなるかわかりません。そしたら
どこかでサーバ探すでしょうが、それもいつになるかわかりませんし、移転の
お知らせはできないかもしれません。

それまでに頑張って man と google だけで問題解決できるようになって
ください。

>>2879 hiro
man fbackup を読みましょう。
    http://www.calpoly.edu/cgi-bin/man-cgi?fbackup
読むのが面倒なら、SEE ALSO の項目だけ見て、それっぽいコマンドを
試しましょう。僕は HP-UX を使ったことがないので、どれがそのコマンド
なのかはわかりません。

No. 2881 # シゲ [E-mail] 2002/08/22 (木) 23:30:28
シゲと申します。
今、red hat 7.1でパッケージソフト開発を行っています。
複数のプロセスが立ち上がるもので、それぞれのメモリー使用量を確認を行っています。
meminfoにより合計のメモリ使用量を測ると13Mぐらいしかないのに、それぞれのプロセスの /proc/(プロセス番号)/status のVmSizeを合計すると、150Mぐらいになってしまいます。
150Mは間違いなく間違っていると思います。
単プロセスのメモリ使用量ってほかに計り方がないのでしょうか?
ご教授お願いします。

No. 2882 # 68user 2002/08/22 (木) 23:39:45
>>2881 シゲ
例えば、ls を同時に 2 プロセス実行していても、メモリ上に配置される /bin/ls の
テキスト領域 (命令文の領域) は 1 つしかありません。同様に libc などのライブラリの
テキスト領域も共有されます。そこらへんで食い違いが出ているのではないかと思います。

> 単プロセスのメモリ使用量ってほかに計り方がないのでしょうか?

どーなんでしょうねー。status の Vm* を足したり引いたりしたら
計算できそうな気もしますが、正確なところはわかりません。

まぁ、ここらへんのテキスト領域をどう計算したいのかにもよると思います。

No. 2883 # シケ゛ [E-mail] 2002/08/23 (金) 00:38:47
ご教授有難うございます。
帰りの電車の中で考えていたら、ひらめきました。
全プロセス立ち上げ時の,/proc/meminfoの全使用メモリ量から、測定したいプロセスをkillしたときの/proc/meminfoの全使用メモリ量を引けば良い気がしました。
しかし、考えてみれば68userさんのおっしゃるとおり、共有メモリが存在するから、正確な結果ではありませんね・・・。

こまったな・・・。

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

No. 2884 # 68user 2002/08/23 (金) 02:08:32
>>2883 シケ゛
結局は用途次第なわけですが、普通の環境であれば daemon 類が libc を
使っているでしょうから、そこらへんは無視していいでしょう。

あとは、横軸: プロセス数、縦軸: メモリ使用量なグラフでも書いて、
    「n クライアント、m リクエスト/sec だと XX MB 程度必要」
とか書いておけばいいんじゃないでしょうか。

# 手抜き?

No. 2885 # ホームズ 2002/08/28 (水) 11:35:24
はじめまして。
いつもこちらのサイトにお世話になっています。

パスの設定のされていないコマンドにパスを設定するには
どうすればよいのでしょうか(絶対パスでは実行できます)
初歩的な質問で恐縮ですがお教えいただけませんでしょうか。
よろしくお願いいたします。

No. 2886 # 68user 2002/08/28 (水) 13:07:36
>>2885 ホームズ
    % hoge
    hoge: Command not found.
    % /foo/bar/hoge
    (実行できる)

という状況で、hoge とだけタイプすれば実行できるようにするには
どうしたらよいか、ということですか?

環境変数を使うのが一番簡単でしょう。
    % setenv PATH ${PATH}:/foo/bar (csh・tcsh 系)
    $ PATH=${PATH}:/foo/bar; export PATH (sh・bash 系)

csh・tcsh 系なら
      set path=($path /foo/bar)
でもいいです。

No. 2887 # ホームズ 2002/08/28 (水) 13:41:04
お返事ありがとうございます。

68userさんの言われたとおり設定したらできました。
どうもありがとうございました。

No. 2888 # 26歳 [E-mail] 2002/09/04 (水) 21:32:05
初めまして、よろしくおねがいします。

お聞きしたいことがあります。
tar xvzf .tgz
して、うまく展開したのですが、
もう一度 練習で、やってみようと思うと、
Only one compression option permitted
とでてしまいます。
一回しかできないという意味なのでしょうか?

一回、   .tgzを消して試しましたが、同じでした。

初歩的かもわかりませんがよろしくお願いします。
  

No. 2889 # 68user 2002/09/05 (木) 08:35:06
>>2888 26歳
> Only one compression option permitted
    一つの圧縮オプションしか許されていない。
=複数の圧縮オプションを指定することはできない。

というわけで、Z・z・y・j などの圧縮形式を指定するオプションを、
複数個指定したのでしょう。

例えば tar zxvzf とか、tar xvZzf とか。

No. 2890 # Bootick 2002/09/08 (日) 00:28:45
はじめまして、こんにちは。

環境:Redhat7.3
ログインしているユーザが、現在何処のディレクトリにいるか
っていうのを調べることは可能でしょうか?
「who」のオプションであったりしますか?

宜しくお願いします。

No. 2891 # 68user 2002/09/08 (日) 19:19:39
>>2890 Bootick
root 権限があるなら ps -ef eww で環境変数 PWD を見るとか、
/proc の下を覗いてみるとかですかねぇ。

root 権限がないなら無理ではないかと思います。

No. 2892 # コメン 2002/09/10 (火) 17:50:03
telnetやcgiを使って本IPをメモするソースがほしいのですが、どうしたらいいですか?それと出来れば設置方法も教えてほしいです。素人なのでまったく分かりません。PCに詳しい方、お願いします

No. 2893 # はさみ 2002/09/13 (金) 10:58:28
はじめまして。
先日 /dev/null が消えてしまい、少なからずシステムに影響が出てしまいました。
それまで安定稼動していたのに、何故突然消えてしまったのか原因がわかりません。サーバ上で特に作業はしていませんでした。
どなたか同じ現象に遭遇した方いらっしゃいませんか?

No. 2894 # あきゆき 2002/09/19 (木) 10:36:38
はじめまして。
いつもお世話になっています。

Linuxにて「Proxy サーバ経由の SSL 通信」を行おうと考えております。
「ネットワークプログラミングの基礎知識」にSSL 通信の方法が
記載されていますが、Proxy 経由の方法が分からず、現在格闘中です。

Proxy サーバへの接続はできました(HTTP の通信は OK です)。
Linux & C言語の初心者で恐縮ですが、
これらの技術的なアドバイス・参考になるサイトなどがありましたら、
ご教授下さい。

よろしくお願いします。

No. 2895 # 68user 2002/09/19 (木) 12:22:03
>>2894 あきゆき
平文で、
    CONNECT target.host.com:443 HTTP/1.0\r\n
    Host: target.host.com\r\n
    \r\n
を送って、サーバから
    \r\n\r\n
が来るまで読み込み (全データが到着するのを待つ)、その中に " 200 " が
含まれていれば接続成功。

その後は SSL でやりとりする、という方法で一応接続はできています。

(" 200 " が含まれていれば OK などという適当な方法以外の) まっとうな
やり方は知りません

No. 2896 # あきゆき 2002/09/19 (木) 13:34:16
>>2895 68user
早速のご返答、ありがとうございます。

ご指摘のように、"CONNECT 〜"を行い、サーバーから
"HTTP/1.0 200 Connection established"という応答がきたので、
その後、下記の SSL の設定を行いました。
----------
SSL_load_error_strings
SSL_library_init
SSL_CTX_new
SSL_new
SSL_set_fd
SSL_connect←戻り値"0"が返されます。
----------

SSL_connect で TLS/SSL handshake に失敗したので、
SSL_get_error 関数を実行すると "5"が返されました。

現在、これについて調査中ですが、原因が何か分かりますか?
SSL のやりとりに問題がありますでしょうか?
SSL のやりとりは、
「ネットワークプログラミングの基礎知識−SSL でアクセスしてみよう」の
C言語のソースの「/* ここからが SSL */」以下と同様です。
(検証中のため、「SSL でアクセスしてみよう」と同じサイトにアクセスして、結果を得ようとしております)

何卒よろしくお願いします。

No. 2897 # あきゆき 2002/09/19 (木) 14:31:45
>>2896 あきゆき

先程の書込みで不足な情報を追加します。

SSL_get_error で返される値を記載します。

1.SSL_CTX_new(SSLv2_client_method())
→SSL_connect[返り値"0"]、SSL_get_error[返り値"6"]

2.SSL_CTX_new(SSLv3_client_method())
→SSL_connect[返り値"0"]、SSL_get_error[返り値"5"]

3.SSL_CTX_new(SSLv23_client_method())
→SSL_connect[返り値"0"]、SSL_get_error[返り値"5"]

よろしくお願いします。

No. 2898 # あきゆき 2002/09/19 (木) 15:34:26
>>2897 あきゆき

お手数をおかけしました。
「Proxy サーバ経由の SSL 通信」を行うことが出来ました。
Proxy サーバ経由で HTTPS サイトから下記の応答が返されました。
"You have successfully connected using SSL (SSLv2)."

先程の SSL_connect のエラー[返り値"0"]の原因は、
"CONNECT 〜"を送信後の Proxy からの応答待ちの個所でした。

ご迷惑をお掛けして申し訳ありませんでした。
ご返答頂きました 68user さん、誠にありがとうございました。
今後ともよろしくお願いします。

No. 2899 # Kurosawa 2002/09/20 (金) 11:09:58
    お世話になっています。場違いな質問だと思いますが質問させてください。
    CVSでローカルでcommitすればサーバ上で自動的にupdateするようにしたく
loginfoを編集したのですがうまくいきません。
質問が場違いと言ったのは、CVSサーバがUNIX系ではなくウインドウズ環境だからです。cvsntを使ってます。
いろいろ調べた結果loginfoに以下のように書けばよいとの事なんですが
wincvsにてコミットするとエラーがでてしまいます。
diary (date; cat; (sleep 2; cd /home/hoge/diary; cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
エラーはnot foundとCould Not Create Child Process (error 2)です。
/home/hoge/diaryや$CVSROOT/CVSROOT/updatelogな書き方がウインドウズでは適用できないと思い
d:\diaryなどに書き換えても駄目でした。

具体的には
loginfo:
test2 (date; cat; (sleep 2; d: cd d:\cvs_test3; cvs -q update -d) &) >> d:\cvs\CVSROOT\updatelog 2>&1
(test2がモジュール名、cvs_test3がupdate先フォルダでいいんですよね?)
エラー:
Executable (date; cat; (sleep 2; d: cd d:\cvs_test3; cvs -q update -d) &) >> d:\cvs\CVSROOT\updatelog 2>&1 not found
Could Not Create Child Process (error 2)

ご存知の方、いらっしゃいましたらご伝授よろしくお願いします。

No. 2900 # Kurosawa 2002/09/20 (金) 14:49:02
自己解決(?)しました。
cvsntを利用した場合、loginfoでの自動更新はできないようです。
WINサーバの場合、cygwinを使用する方法があるみたいなので
その方法を試してみる事にします。
お騒がせしました。

No. 2901 # かなっぺ 2002/09/25 (水) 11:13:07
はじめまして。お力を貸してください。
業務用に、ファイルをアップロードするPerl/CGIを作りました。
エラーもなく動作はしているのですが、巨大なファイルをアップロードするときに、かなりの時間がかかります。
具体的には167MBのファイルをアップロードするのに約40分かかりました。
同じ環境で、同じファイルをFTP(FTP.exe)を使用して転送すると、5分で処理が終了しました。

CGIで時間がかかる原因が、私のソースにあるのか、
CGIのバッファが関係しているのか、それとも他に原因があるのか、
原因の切り分けが出来ずに困っています。

通常、CGIで100MBのファイルをアップロードしようとすると
どれくらいの時間で処理できるのでしょうか?
また、どうすればFTPと同レベルの処理速度に出来るのでしょうか?

ちなみに動作環境はUNIX、線は100BASE、Perl5。
アップロードするCGIにはCGI.pmやcgi-lib.pl等のモジュールは仕様していません。
(それが原因でしょうか?)

サーバのログには以下のように出ています。
(1)[14:17:57] "GET /xxx/ファイル入力用.cgi?flg=1 HTTP/1.1" 200 3413
(2)[14:57:11] "POST /xxx/アップロード用.cgi HTTP/1.1" 200 841

アップロードを行う(2)に処理が移るまでに、40分かかっています。
ということは、データのバッファリングに40分かかっているということなのでしょうか?

No. 2902 # 松本智也 [E-mail] 2002/09/25 (水) 12:15:00
友人がRS/6000でTCP/IPのパケット情報をmili sec単位で取得しそれをレポートとして出力したいんですが何か方法はありますか?

No. 2903 # tomu 2002/09/26 (木) 10:02:13
こんにちわ
いつもお世話になってます。

grepコマンドである検索文字列と、
その次の行を検索すると言うことは、
出来ないでしょうか?

たとえば、
ファイルの中身が
-------------------
aaa\n(改行)
bbb\n(改行)
ccc\n(改行)

aaa\n(改行)
ddd\n(改行)
eee\n(改行)
-------------------

と言うファイルがあったときに、
aaa\n(改行)
bbb\n(改行)

aaa\n(改行)
ddd\n(改行)

という結果を返して貰うことは出来ないでしょうか?

宜しくお願いします。

No. 2904 # D 2002/09/26 (木) 23:33:59
>>2903 tomu

http://x68000.startshop.co.jp/~68user/unix/pickup?grep
をご覧ください。

No. 2905 # tomu 2002/09/27 (金) 10:41:08
Dさん
見逃してました numオプション ^^;
ありがとうございました。

No. 2906 # MATSU 2002/09/27 (金) 15:43:52
はじめまして。

はじめてで恐縮ですが、質問させてください。
sortコマンドでカンマ区切りのdatファイルを
1番目と7番目の項目をキーに昇順、
5番目と6番目の項目をキーに降順
という並べ替えをしたいのですが、可能でしょうか?
よろしくご教授願います。

No. 2907 # のぞみ [URL] 2002/09/29 (日) 06:00:34
こんにちは。
HPを開いているのですが質問があります。
BBSの方にアクセス制限をかけたい人物がいるのですが
どう、打ち込めばよいかわかりません。
BBSを借りている所に質問したのですが
なかなか返事が返ってこないのでこちらに頼ろうと思い
来させて頂きました。m(__)m
どうぞ宜しくお願い致します。
その人物のホスト名は↓
FLA1Aae071.kmm.mesh.ad.jp
なんですが、*.kmm.mesh.ad.jpと打つと
全然似てない私の方まで制限がかかってしまいました。
どう打てば宜しいのでしょうか?
すいませんが教えてください。m(__)m
あと、HPに描いた絵などを無断に使用する人物を
つきとめる事等はできますでしょうか?

No. 2908 # 通りすがり 2002/09/29 (日) 15:17:59
No.2906#MATSUさん
お使いの言語はPerlですか?
Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm#SortMulti
に、複数項目でのソート方法が書いてありますね。
参考になりますでしょうか。

No. 2909 # Kanchan [E-mail] 2002/09/30 (月) 14:15:10
こんにちは。
初めて質問させていただきます。
Solalisのtarコマンドでファイルをtarファイルにまとめようとしたのですが、
    "ディレクトリ階層が深くダンプできません"
というエラーメッセージが出てうまくいきません。
    コマンド:tar cvf tarファイル ./対象ディレクトリ
対処方法を知っている方がいたら、教えていただけませんでしょうか?
よろしくお願いします。

No. 2910 # NT 2002/10/08 (火) 00:18:10
こんにちは
FreeBSDで鯖を立てながら
Perlで簡単なCGIを作っております
質問があるのですが
BBSなどでバイナリファイルのUPLoadは
どのように送ればよいのでしょうか
わかる方が居りましたらお答えをお願い申し上げます

No. 2911 # take 2002/10/10 (木) 12:12:08
突然ですが、
以前このページで紹介していたUNIX関連の本を教えていただけないでしょうか。

No. 2912 # D 2002/10/12 (土) 18:16:14
>>2911 take
右上にある全文検索フォームで適当な単語を入れてみましょう。
「書籍 or 本 or 出版社 or 著者 or 訳者」てな感じで。
あとは http://bookshelves.tripod.co.jp/ とか。

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