68user's page 掲示板

Prev< No. 2357〜2587> Next  [最新発言に戻る] [過去ログ一覧]
No. 2357 # 68user 2001/12/10 (月) 19:11:40
>>2356 ゆき
> libstdc++の中の、libstdc++.aというライブラリファイルを見に行ってる
> ということですね。
インクルードとリンクは全く別物です。インクルードファイルと
ライブラリには何の関係もありません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

です。

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

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

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

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

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

print SOCKET "LIST\r\n";

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

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

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

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

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

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

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

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

を試して下さい。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくおねがいします

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

これを集計して

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

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

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

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

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

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

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

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

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

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

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

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

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

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


#! perl -w

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

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

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

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

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

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

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

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

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

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

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

#! perl -w
# fileup.cgi

use CGI;

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

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

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

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

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

#! perl -w

use CGI;
use strict;

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

print $q->h2($title);

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

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

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

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

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

とか?

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Win98,ActivePerl5.6.0(Binary build 623)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C:\>ppm

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

よろしくお願いします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

use CGI;
use Jcode;

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

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

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

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

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

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

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

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

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

use CGI;
use Jcode;

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

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

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

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

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

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

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

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

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

Awkで

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

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

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

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

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

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

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

なんとなく似せて書くと

#! perl

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

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

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

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

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

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

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

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

で、

#! perl -w

use CGI;
use Jcode;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

use Image::Magick;

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

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

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


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

use Image::Magick;

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

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

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

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

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

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

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

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

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

#これ便利だなー^^

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

で、

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

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

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

goto FIN if(事情);
...

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

FIN:

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

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

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

    FIN:
    ;
    sub サブルーチン {

なら OK のようです。

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

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

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

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

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


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

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

use subs qw(exit);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ーーー

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#!/bin/ksh
cat telnet_file | telnet

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

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

open HOST_NAME
UserName
Password
date

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

-----実行結果 Start-----

telnet> 試行中...
HOST_NAME に接続されました。
エスケープ文字は '^]' です。
getwinsize:ioctl: 指定されたファイルは ioctl システム・コールをサポートしていません。
接続がクローズされました。

-----実行結果 End -----


もちろん、HOST_NAMEやUserNameなどは、実際の環境に則している
値を設定しています。

宜しくお願いいたします。

No. 2541 # こうた 2002/02/26 (火) 21:42:35
OCNのADSLアクセスIP8「フレッツ」のサービスでの
PPPOEのLAN型接続において、
固定グローバルIPを割り当てたPC(サーバー)に対して、
外部のPCから(インターネット経由で)アクセスすると、HOST検索にやたら時間がかかります。(約18秒)
時間がかかっているのは、WINSOCKのgethostbyaddrという関数です。
上記の不具合を解決する方法を知っていましたら、教えていただけないでしょうか?ブローバンド・ルータに原因があるのかと思い、買い替えましたが、結果は同じでした。ちなみに、pingは0.1秒以内に帰ってきます。

No. 2542 # こうた 2002/02/26 (火) 21:58:18
OCNのADSLアクセスIP8「フレッツ」のサービスでの
PPPOEのLAN型接続において、
固定グローバルIPを割り当てたPC(サーバー)に対して、
外部のPCから(インターネット経由で)アクセスすると、HOST検索にやたら時間がかかります。(約18秒)
時間がかかっているのは、WINSOCKのgethostbyaddrという関数です。
上記の不具合を解決する方法を知っていましたら、教えていただけないでし
ょうか?ブローバンド・ルータに原因があるのかと思い、買い替えましたが、結果は同じでした。ちなみに、pingは0.1秒以内に帰ってきます。

No. 2543 # 68user 2002/02/27 (水) 01:00:14
>>2540 小僧
> cat telnet_file | telnet
こういうふうに使える telnet ってあるんでしょうか。どこかに
書いてあったのを参考に作っておられますか?

で、普通 telnet というのは人間が操作しますので、
    Login:
と表示されてからユーザ名をタイプし、
    Password:
と表示されてからパスワードをタイプし、その後コマンドを実行して
実行結果を見るわけです。

なので、これを自動化するには
    Login:
という文字列が相手側から送られてきてからユーザ名を送り、さらに
    Password:
という文字列が送られてきてからパスワードを送り、コマンドを送り、
その結果を取得する。ただしプロンプトとコマンドの実行結果を選り
分ける、というなかなか面倒な話なのです。CZ さんは「ユーザ名が
要求されるまで」と表現しておられますが、実際は単に文字のやりとり
をしているだけで、「プロトコル」といった大層なものがあるわけでは
ありません。

面倒なこと一切抜きで手抜きするならこんな感じ。
    ( sleep 2 ; echo USER ;
        sleep 2 ; echo PASS ;
        sleep 2 ; echo date ;
        sleep 2 ) | telnet localhost

ちゃんと真面目にやるなら expect コマンドや p5-Telnet など。
>>1335-1340 参照。

もっとよいのは rsh。さらによいのは ssh って感じですかね。
# http://www.jp.FreeBSD.org/QandA/HTML/1576.html


>>2542 こうた
> 外部のPCから(インターネット経由で)アクセスすると、
> HOST検索にやたら時間がかかります。(約18秒)
どの外部の PC 経由からでも名前解決に時間がかかるのですか?
そのマシンのプライマリの DNS サーバはどこにありますか?
どのマシンからでもその現象が発生して、DNS サーバが外部に
あるなら DNS サーバの問題でしょう。

もし可能ならば、実際のホスト名を出して下さい。

No. 2544 # Hiro [E-mail] 2002/02/27 (水) 09:44:14
>>2536 68user
報告
おかげさまで、netscapeのインストール、できました。
なお、先に入れてしまった日本語 locale 用は、pkgrmコマンドでアンインストールしてから本体をインストールしました。それからnetscapeを立ち上げたら、なぜかメニューも日本語化されていました?pkgrmでの削除では、すべてを削除したわけではないのかもしれないので?残存ファイルで日本語されているのか・・?
とにもかくにも、前のhotjavaより軽いし、なんとか動いて嬉しいです^^
ありがとうございました。

その後、tomcatを起動してブラウザからみたところ、examplesの動作確認等、簡単なところまではできました。
取り急ぎご報告まで。

No. 2545 # 小僧 2002/02/27 (水) 10:14:12
>>2543 68user

返信、ありがとうございます。
>> cat telnet_file | telnet
>こういうふうに使える telnet ってあるんでしょうか。どこかに
>書いてあったのを参考に作っておられますか?
いえ、どこにも記述されていません。
FTPで同じ方法を使っているシェルがあったので、
それを参考にして作ってみました。

68uesrさんが言われた(echo 〜)の方法で
多分うまくいくと思います。
貴重なアドバイス、ありがとうございました。

rsh、sshが使えれば楽なんですが、
r系コマンドはセキュリティ上、
ssh等は自分の知識不足のため、お客様へ説明が出来なく
(セキュリティに関する部分)Telnetでシェルを
記述する事になっているのです。

過去ログの方も参考にしながら、後は自分で書いていこうと思います。
ありがとうございました。


掲示板のレスの表示がうまくいかないかもしれませんが、
ご容赦下さい。

No. 2546 # 小僧 2002/02/28 (木) 12:57:47
お世話になります、小僧です。

先日は、Telnetで質問させて頂き、ありがとうございました。
その後、仕様変更に伴い、rsh、rcpコマンドを使用する事になりました。
そこで、新たに疑問が発生したので、質問させて頂きます。


このホームページの"Unixの部屋"の.rhostsに関する内容の所です。
以下、抜粋させていただきます。

----- 抜粋 Start -----
それとは逆に、hoge.fuga.com の ~/.rhosts に

foo.bar.com user1

と書いておくと、foo.bar.com にログインしているとき、hoge.fuga.com に対して、
rcp・rsh・ノーパスワードでの rlogin を使うことができる。
----- 抜粋 End -----

記述してある条件のもと、上記の設定を行う場合、
~/のディレクトリは、User2に記述するとして、
その場合、User1がhoge.fugu.comホストに対して
rshを行った場合、実行ユーザはUser2になるのでしょうか?

説明が分かり辛いと思いますが、
ご教示して頂ければ幸いです。

No. 2547 # CZ 2002/02/28 (木) 18:51:51
先ほどUNIXの部屋で `ログ' を全文検索したのですが、
コマンドに本文がないと改行されないのが気になりました。

例)
        astrolog 占星術のプログラムらしい bison 構文解析パーサ生成プログラム

根本的な解決策は思いつきませんが、とりあえずは
本文がない場合は「お尻P」を付ければいいのかな?

# UNIXの部屋に長いことお世話になっていながら
# htmlファイルの存在を全く意識していなかった
# ことに気づいた今日この頃です。

No. 2548 # 68user 2002/03/01 (金) 01:28:31
>>2546 小僧
> その場合、User1がhoge.fugu.comホストに対して
> rshを行った場合、実行ユーザはUser2になるのでしょうか?
そうです。foo.bar.com に user1 としてログインし、
    % rsh -l user2 hoge.fuga.com /usr/bin/id
などとすれば確認できます。

>>2547 CZ
ご指摘ありがとうございます。</P> を付けるようにしました。
    http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/script/make-html

No. 2549 # CZ 2002/03/01 (金) 11:58:44
こんにちは。質問があります。

標準出力と標準エラー出力を画面に出力しつつ
エラー出力のみをファイルに保存したいのですが
shと標準的なUNIXのコマンドを使って実現可能な
ものなのでしょうか。

これまでに試したのは以下のような方法です。

--- test.sh ---
#!/bin/sh

echo stdout
echo stderr 1>&2
---

[その1]
        $ ./test.sh 2>error.log
    エラーが画面出力されないので×
    いざとなれば別の仮想端末で
        $ tail -f error.log
    としてもいいのですが。

[その2]
        $ ./tesu.sh 2>&1 | tee error.log
    エラー以外の出力も保存されるので×

No. 2550 # 68user 2002/03/01 (金) 12:44:49
>>2549 CZ
http://www.ainet.or.jp/~inoue/memo/sh-fd.html などを読みつつ
考えた結果、
    % (./test.sh > /dev/tty) 2>&1 | tee error.log
と、サブシェルを使わないとできないんじゃないか、という
結論になりましたがどうでしょう。

No. 2551 # CZ 2002/03/01 (金) 13:49:52
>>2550 68user さん
なるほど。
ttyでstdoutを出力してしまえば,
stderrが後に残るというわけですね。
(正しい表現が分かっていませんが。)

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

No. 2552 # stone_free 2002/03/07 (木) 00:17:39
こんにちは。
今日、こちらのページをみて、suidというものを使えば、
とあるCGIを「nobodyじゃない権限で実行させたい」と
いう願いがかなうということがわかり、早速試してみました。
まず、こちらにサンプルでおいてあるwhoami.cgiをそのまま設置して
パーミッションをrwsr-xr-xとしたところうまく動きました。
その後、自作のCGI(nobodyでは動かしたことがあるもの)を同様に
nobodyでないユーザで動かそうと思ったら「Internal Server Error」
となってしまいました。

それで、うまくうごいた実績のあるwhoami.cgiを改造しながら原因を探した
ところ、どうやら「require 'jcode.pl';」を書いてしまうと
「Internal Server Error」となってしまうということがわかりました。
require 'jcode.pl';行をコメントアウトすれば動きます。

なんとか、この一行を含んでいるものも、setuidして動かすことは出来ない
ものでしょうか。
なにかよい方法がございましたらご教示ください。

宜しくお願い申し上げます。

No. 2553 # 68user 2002/03/07 (木) 13:33:42
>>2552 stone_free
まず、
    #!/usr/bin/perl
    require 'jcode.pl';
このスクリプトをコマンドラインから動かして下さい。カレント
ディレクトリに jcode.pl があればちゃんと動くでしょう。

suid したスクリプトを実行すると、perl は自動的に汚染モード
(taint mode) に切り替わります。いちいちスクリプトを suid して
web 経由で実行するのは面倒なので、perl に -T オプションを付けて
汚染モードで動作させます。
    #!/usr/bin/perl -T
    require 'jcode.pl';
今度は jcode.pl が見付からない、と言われるはずです。

require がライブラリを探すパスは @INC で設定されていますので、今度は
    #!/usr/bin/perl
    print "@INC\n";

    #!/usr/bin/perl -T
    print "@INC\n";
で違いを調べます。

#  perl -e 'print "@INC\n"'
#  perl -Te 'print "@INC\n"'
# としてもいいです。

すると、上の方では @INC の最後に `.' (カレントディレクトリ) が含まれて
いますが、-T を付けると `.' が含まれていないことがわかります。ドキュメント化
されていないのかもしれませんが、これは汚染モードの仕様なのでしょう。

というわけで、
    require './jcode.pl';
    require '/foo/bar/jcode.pl';
などと、@INC に頼らず require するか、require する前に
    push(@INC, '.');
すれば解決です。


その他、suidperl で動かすと PATH だとか umask だとかで文句を
言われることがあるかもしれませんが、いきなりブラウザ上で動作を
検証することはせず、必ず -T 付でコマンドラインから動作を確かめる
ようにして下さい。

No. 2554 # たこ。 2002/03/07 (木) 18:41:52
こんにちわ。早速なんですけど、教えて下さい。

以下のことを行った場合、
(1)javaのClassファイルをHP-UNIX上でコンパイル後、圧縮。
(2)windows2000にダウンロード後、CDに焼く。
(3)Solarisで解凍し、実行環境に投入。

で、Solarisで正常に動作するでしょうか?
javaだから出来るような気もするんですけど、やっぱりリコンパイルは必要な気もして。
よろしくお願いします。

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

No. 2555 # CZ 2002/03/07 (木) 21:45:24
ひとつ気づいたこと。

これまでずっと,tar + gzip 形式のファイルを展開するのに
    % tar zxvf hoge.tar.gz
といった順序でオプションを指定していました。

ところが,GNU Tar のマニュアルを見ると,
こんなことが書いてありました。

<http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html>
| tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。
| この後にはどのオプション機能を指定する事も出来る。

最初の記述法は厳密に言うと間違いということに
なりそうなんですが,どんなものでしょうか。

No. 2556 # stone_free 2002/03/07 (木) 22:46:03
>>2553 68user
68userさん、有難うございました。
大変参考になりました。
おかげさまで、動かすことができました。
感謝感激です。

もうひとつ、教えていただいていいでしょうか。
今回の手順のひとつに
> perl に -T オプションを付けて汚染モードで動作させます。
> #!/usr/bin/perl -T
> require 'jcode.pl';
> 今度は jcode.pl が見付からない、と言われるはずです。
とありましたが、このとおりファイルに書いて
# perl test.cgi
としてコマンドラインで実行してみたのですが、
Too late for "-T" option at test.cgi line 1.
と出てしまいました。
#!/usr/bin/perlの後にオプションをつける場合は、クオートか
なにかでくくらないといけないのでしょうか。

また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。
やはり、本来のユーザと違う権限で実行できてしまうから危険である
ということでしょうか。

No. 2557 # 68user 2002/03/07 (木) 23:13:48
>>2554 たこ。
> で、Solarisで正常に動作するでしょうか?
Java のバージョンが合っていれば正常に動作するんじゃないでしょうか。

まぁ僕なら怖いので、Solaris でコンパイルして生成された class
ファイルを比較してみます。


>>2555 CZ
> tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。
原文は
    The first argument to tar must be one of the options: Acdrtux
なので誤訳だと思います。
    tar に与える最初の引数の中には、必ず Acdrtux のうちの 1つを
    指定しなければならない
あたりでどうでしょうね。って、自信はないのですが。

No. 2558 # 68user 2002/03/07 (木) 23:31:54
>>2556 stone_free
> #!/usr/bin/perlの後にオプションをつける場合は、クオートか
> なにかでくくらないといけないのでしょうか。
原理を書き出すとまた長くなってしまうので割愛しますが、
    #!/usr/bin/perl -T
と書いたスクリプト hogescript を実行するには
    % ./hogescript
とします。

これは
    % /usr/bin/perl -T ./hogescript
と等価であって、
    % /usr/bin/perl ./hogescript
とは等価ではありません。

> また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。
ラクダ本では「汚染モード」と訳してあります。詳しくはこちらなど。
    http://www-sampei.ctrl.titech.ac.jp/perldoc/perl_20.html

No. 2559 # stone_free 2002/03/08 (金) 01:30:44
>>2558 68user
なるほど!よくわかりました。
重ね重ねありがとうございました。

No. 2560 # Moo [E-mail] 2002/03/09 (土) 12:23:55
    こちらのページのお陰で、サーバプログラミングに入ることが出来ました。
    CP/M、DOS、Windowsとやってきたのですが、サーバプ
ログラミングに入れなくて困っておりました。
    仕事でサーバ側のプログラムを組む必要に迫られ、Unixも知らな
いし、サーバサイドの概念もつかめなくていたのに、今ではFTPや
HTTP、POPもcronも使えるようになりました。
    ついでにPerlまで覚えてしまいました。

    黙って読ませていただくばかりでは心苦しく、お礼を述べさせて頂き
に参りました。
    今後もUnix勉強の基本ページとして利用させていただきます。
    親切で分かりやすいページを作って下さり有り難うございます。
    心より感謝申し上げます。

No. 2561 # へんきち 2002/03/10 (日) 23:44:51
おっと、私もこのページにお礼を言いに来たのですが
プチ先駆者が(笑)
このページには大変お世話になっています
ネットワークプログラミングの部屋でファイルディスクリプターという
概念を初めて知りました、僕は学生なのですが将来こういう方面の仕事に
つきたいと思ってます。大変に参考になるページでした
このページの更新、たのしみにしてますm(。。)m

No. 2562 # たこ 2002/03/11 (月) 09:40:55
>> 2557

いろいろと調査してみた結果、windows上でコンパイルしたものを圧縮してsolarisに持っていっても、JAVA周りの環境さえ同じなら正常に動作するということなので、大丈夫だと思います。

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

No. 2563 # 小僧 2002/03/11 (月) 17:50:55
お世話になります、小僧です。
AIX上での文字コードに関してお聞きしたい事があります。

ファイルの文字コードを確認するコマンドというのは
存在するのでしょうか?
例えば、「このファイルの文字コードはShift-JISだな」などの
判断を行えるようなコマンドの事なのですが。

それと、iconvを行う事が出来る文字コードは、
"/usr/lib/iconv"ファイルに登録されているようなのですが、
このファイルはデフォルトでは存在しないのでしょうか?

ご存知の方がいらっしゃいましたら、宜しくお願い致します。

No. 2564 # スナフキン 2002/03/12 (火) 00:09:57
kccなんてコマンドがありましたけど、AIXに存在するかどうかは
不明です。

Ex:
kcc -c kannji_file.txt

ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・

No. 2565 # sisya [E-mail] 2002/03/12 (火) 02:27:50
はじめまして、
現在色々とcgiを作成しており、
色々とよくわからないバグを調べている内
たどり着いた次第です。

他のサイトではあまり解説されていない
ヘッダの解説など大変助かりました。
これからも更新楽しみにさせていただきます。

No. 2566 # 小僧 2002/03/12 (火) 10:39:54
>>2564 スナフキン

kccコマンドですが、ちょっと無さそうですね・・・
現在使用しているAIXにmanコマンドが入っていないので
なんともいえませんが、ネットや手持ちの資料には
載って無さそうです。

ついでに、と言っては失礼ですが、iconvでもう一つ質問を。
iconvコマンドで、変換後に存在しない文字が存在した場合、
自動で"_"に変換されるようですが、この"_"を他の文字に
変更する事は可能なのでしょうか?

例えば"*"にしたりする事は可能なのでしょうか?
ご存知の方がいらっしゃいましたらアドバイスお願い致します。

No. 2567 # 68user 2002/03/12 (火) 11:35:58
>>2564 スナフキン
文字コードを判断する方法ですが、mule に付属している coco、
昔 fj に流れた kanjitype、jcode.pl の jcode::getcode、
mule/emacs のステータスバーに表示される E/S/J の文字。

僕が知っているのはこれくらいです。

No. 2568 # 小僧 2002/03/13 (水) 20:28:59
お世話になります、小僧です。

色々と調べて頂いてありがとうございます。
どうやら、私の環境で調べる方法はなさそうですね・・・

また分からない事がありましたら、アドバイスお願い致します。

No. 2569 # 68user 2002/03/14 (木) 01:37:04
>>2564 スナフキン
> ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・
こういう一般的な用途のコマンド (ファイルを読んでコード変換するだけ) で、
なおかつソースが公開されているものは、よっぽどのことがない限り Linux
専用ということはありません。

FreeBSD の port/package にもありますし、NetBSD の package には含まれて
ないようですがコンパイルすれば使えるでしょう。まぁ、それを言い出したら
多分 Windows でも Mac でも使えそうな気がしますが。

>>2563 小僧
そういえば最初にここを紹介すべきでした。
    http://www.jp.FreeBSD.org/QandA/HTML/1254.html

>>2566 小僧
> 自動で"_"に変換されるようですが、この"_"を他の文字に
> 変更する事は可能なのでしょうか?
多分できないです。できたとしても、その環境の iconv のみの独自拡張でしょう。

こういうのは考え方を変えて、
    % sed 's/&/&amp;/g' | sed 's/_/&ubar;/g' | iconv -f shift_jis -t euc-jp | \
            sed 's/_/\*/g' | sed 's/&ubar;/_/g' | sed 's/&amp;/&/g'
などとファイル中の _ を別の文字に置換してから iconv を通せば
なんとでもできます。

# &ubar; というのは、いま適当に考えた実体参照で、本当は存在しません。

>>2560 Moo
>>2561 へんきち
>>2565 sisya
どもども。できれば改善すればよい点も書いていただけると嬉しいです。
# と言っても、時間がなくて対応できない可能性が大なんですが。

No. 2570 # q19_77 [E-mail] 2002/03/14 (木) 13:57:43
お世話になっております。
シェルスクリプトが上手く動作せず困っています。

行っている方法は、
Linux7.1J sendmail-8.11.2-14 procmail-3.21-0.71で
ユーザ"XYZ"のホームディレクトリに.procmailrcファイルを置き、
XYZ宛てのメール受信時に条件が合えばシェルスクリプト"ABC"を
実行するようにしています。

メール受信時に条件が合い、シェルスクリプトを実行するところまでは
上手くできたのですが、実行するシェルスクリプトの中の一部分のみ
動作しません。

その部分とはユーザ"mono"に切り替え、さらにシェルスクリプトを実行する以下です。
su - mono -s /home/mono/mno.sh ---(1)
※ユーザ"mono"はパスワードなしです。

((なお、mno.shの記述は
scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt
ssh abc.world.co.jp sh /home/mono/mno2.sh
です。
他のLinuxサーバabc.world.co.jpへsshでファイルをコピーし、
他のサーバのシェルスクリプトmno2.shを実行))

(1)の部分に対してエラーでは、
standard in must be a tty
と表示されます。

他のサーバではこの記述通りで動作しました。
また、メール受信時にシェルスクリプト"ABC"を実行するユーザ"XYZ"
で手動でシェルスクリプトを実行すると(1)の部分も動作します。

Webで調べたところ、同じような現象になっている例もありましたが
解決策がありません。
そしてエラーの意味がよくわかりません。

勝手な推測ですが、実行しているサーバではセキュリティが強いため
パスワードなしとしている"mono"ユーザが原因ではないかと思います。

ですが、シェルスクリプトでパスワードも記述した形での"su"の実行は
可能かどうか分かりません。

申し訳ありませんが、何かよい策をお教えください。

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

No. 2571 # ふくし [E-mail] 2002/03/14 (木) 15:29:42
タブ区切りテキストを split /\t/ で切って各フィールドを変数に読み込み、
join "\t" で戻そうとすると、
場合によってはデータが抜けていることがあるので困ります。
タブ区切りデータを a, b, c, d、タブを->であらわすと、
split /\t/, "a->b->c->d" => (a,b,c,d)
split /\t/, "a->->c->d" => (a,c,d)
split /\t/, "a->b->->d" => (a,b,d)
split /\t/, "a->->->d" => (a,d)
split /\t/, "a->b->->" => (a,d)
ということで、
  1 while $str =~ s/\t\t/\t♪\t/;
  @list = split /\t/, $str;
  for (@list) {
    s/♪//; # $_ は @list の要素を参照する。♪がデータにないと仮定
  }
とかやってるんですが、いかにもダサいですね。
もっと常道はあるんでしょうか?

Excel で編集すると a->b->->\n が a->b\r\n となってしまうのも
困る。

No. 2572 # 田中 [E-mail] 2002/03/14 (木) 21:27:33
<A href="javascript:x(1)">1</A>
をクリックすると最終的に
Nの値(abcの所)を計算し
document.location.href="http://www.a/cgi/a.cgi?N=abc";
としていたのですが、不便な所を感じ変えたいと思っています。

Submitボタンを押したらNを計算し
<FORM name="f" method="post" onSubmit="if(x() != true) {return false}" action="a.cgi">
<INPUT type=hidden name=N value=abc>
としてa.cgiを起動する方法は知っているのですが、
上のものと組み合わせた感じで
<A href="javascript:x(1)">1</A>をクリックして
最終的にNを計算し
<INPUT type=hidden name=N value=abc>
のようにpost/getで起動する方法はないでしょうか?
自分なりにやってみてもよくわからないのです。
どなたか教えて下さい。
お願いします。
ちなみに初心者です。難しいことは解らないので細かく教えていただくと
助かります。

No. 2573 # 68user 2002/03/14 (木) 21:33:39
>>2570 q19_77
> standard in must be a tty
su は端末 (tty) からのパスワード入力を求めているのに、
端末がないよ、という意味です。

端末というのは、キーボードで入力ができて、文字が表示されるもの、
たとえば kterm がそれです。procmail 経由で実行されると端末が
割り当てられないので (キーボードもないし、出力する画面もない)
エラーになっているわけです。

> 他のサーバではこの記述通りで動作しました。
本当ですか? どうして root でもないのに、パスワードなしで
su で他ユーザになれるのですか?

> su - mono -s /home/mono/mno.sh

気になる点は2つ。

なぜ -c でなく -s なのでしょうか?
    http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/su.1.html
によると、-s はシェルを実行するオプションですから、-s の場合端末が
あることをチェックしているのかもしれません。

あるいは環境変数 TERM などがセットされているので、端末を見にいってしまう
という可能性も考えられます。

ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由)
    echo PASSWORD | su root -c /usr/bin/id
でプログラムの実行ができました。


>>2571 ふくし
> 場合によってはデータが抜けていることがあるので困ります。
そんなことはないと思いますが、perl のバージョンは何ですか?
perl-5.005_03 ではそのような挙動を示しませんでした。

No. 2574 # ふくし 2002/03/15 (金) 02:10:38
>>2573 68user
                さん:

えっと、
  split /\t/, "a->b->c->d" => (a,b,c,d)
  split /\t/, "a->->c->d" => (a,'',c,d)
  split /\t/, "a->b->->d" => (a,b,'',d)
  split /\t/, "a->->->d" => (a,'','',d)
  split /\t/, "a->b->->" => (a,b,'','')
となってくれる、ということですか?
あれーおかしいなー、、。

実は、下の♪を使ったコードが動いたのでロクな検証をしてないのでした。
勝手な思い込みで外していたら申し訳ありません。
Excel による末尾のタブの削除等の現象かな?
うーんうーん。

No. 2575 # big 2002/03/15 (金) 12:14:22
皆さん教えてください。
DATのテープを新しく交換するときに、ラベリングを行おうとすると
I/O errorが出るんですけど、まさか、formatが必要とかそんなことですか

No. 2576 # 小僧 2002/03/15 (金) 12:26:42
お世話になります。

相変わらずiconvで困っています。
下記のように、コマンドを発行したのですが、
エラーが出てしまってiconvが出来ません。

----- コマンド発行 -----
$iconv -f shift_jis -t euc aaa

----- エラーメッセージ -----
iconv: 0791-004 コンバータがオープンできません

自分で調べたところ、必要なファイルだと思われるのは、
/usr/lib/iconvファイルだと思うのですが、
このファイルは存在しません。
もしこれが原因なら、中身のサンプルを教えていただければ幸いです。

宜しくお願い致します。

No. 2577 # 68user 2002/03/15 (金) 12:37:00
>>2576 小僧
> $iconv -f shift_jis -t euc aaa
euc という文字コードは存在しないような気がするので (ほんとか?)、
とりあえず -t euc-jp を試してみましょう。

>>2574 ふくし
> となってくれる、ということですか?
はい、そういうことです。

No. 2578 # 小僧 2002/03/15 (金) 13:51:51
>>2577 68user

>とりあえず -t euc-jp を試してみましょう。

----- 実行文 -----
iconv -f shift-jis -t euc-jp aaa

を行ってみましたが、同じ現象が発生しました。
当然の事ながら、ファイル"aaa"はきちんと存在します。

宜しくお願い致します。

No. 2579 # /tk 2002/03/15 (金) 14:25:26
>>2574 ふくし
> split /\t/, "a->b->->"
split /\t/, "a->b->->", -1
でわ?

No. 2580 # 68user 2002/03/15 (金) 16:00:03
>>2576 小僧
web で AIX のマニュアルを探してみました。
    http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/cmds/aixcmds3/iconv.htm
    http://publib.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixprggd/genprogc/convert_prg.htm#A197C1176
によると、AIX では euc-jp ではなく IBM-eucJP なのかもしれません。
Shift_JIS も同様に IBM-932 かもしれません。

> 自分で調べたところ、必要なファイルだと思われるのは、
> /usr/lib/iconvファイルだと思うのですが、
上記マニュアルを見ると、コンバータのファイルのありかは
    /usr/lib/nls/loc/iconv/
    /usr/lib/nls/loc/iconvTable/
と書いてあるように見えます。
# なぜ /usr/lib/iconv/ だと判断したかが第三者にわかるように書きましょう。
# 皆が AIX を使っているありませんので。

僕は AIX4.3 のマニュアルを見ましたが、あなたがお使いのバージョンが
わからないので、これが正しいかどうかはわかりません。ちゃんと OS の
バージョンを書きましょう。

>>2579 /tk
なるほど。その例では確かに -1 が必要ですね。僕は
    split /\t/, "a->->c->d" => (a,'',c,d)
のように真ん中に TAB がある例だけを試していて、気づきませんでした。

No. 2581 # q19_77 [E-mail] 2002/03/15 (金) 16:05:05
>>2573 68user
ご返答ありがとうございます。

>> 他のサーバではこの記述通りで動作しました。
>本当ですか? どうして root でもないのに、パスワードなしで
>su で他ユーザになれるのですか?
>> su - mono -s /home/mono/mno.sh
ユーザ"mono"にパスワードがないため、なぜか実行できました。

>なぜ -c でなく -s なのでしょうか?
よく分からずに指定したシェルを実行するとあったので、-s に
しました。また -c でも駄目でした。

>ちなみに FreeBSD 4.4-RELEASE では、端末がない状態で (cron 経由)
> echo PASSWORD | su root -c /usr/bin/id
>でプログラムの実行ができました。
この場合、rootのパスワードが必要かと思いますが、そこはどのように
されているのでしょうか。

>そんなことはないと思いますが、perl のバージョンは何ですか?
>perl-5.005_03 ではそのような挙動を示しませんでした。
perlのバージョンは、perl-5.6.0-12ですが、
シェルスクリプトはどちらもperlを使用しておりません。

#!/bin/sh
su - mono -s /home/mono/mno.sh 
また、
#!/bin/sh
scp /var/XYZ/123.txt abc.world.co.jp:/home/mono/123.txt
ssh abc.world.co.jp sh /home/mono/mno2.sh
と書いています。
そもそもこれが駄目なのでしょうか。

宜しくお願いします。

No. 2582 # 初心者マーク 2002/03/15 (金) 22:32:52
初めて書込みするんですけども、最近Cシェルを始めたんですが・・・
最初にログインした、IPアドレスから他のアドレスへログインする事ってできますか?

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

No. 2583 # 小僧 2002/03/16 (土) 21:52:23
>>2580 68user
返信ありがとうございます。

>web で AIX のマニュアルを探してみました。
わざわざ時間を割いていただいてありがとうございます。

># なぜ /usr/lib/iconv/ だと判断したかが第三者にわかるように
>書きましょう。
>僕は AIX4.3 のマニュアルを見ましたが、あなたがお使いのバージョン
>がわからないので、これが正しいかどうかはわかりません。ちゃんと
>OS のバージョンを書きましょう。
申し訳ございませんでした。
調べたのは「UNIX クイックリファレンス」という本です。
OSのヴァージョンは、AIX 4.3です。
次回からはきちんと記載するように致します。

お蔭様で、iconvが出来るようになりました。
本当にありがとうございました。

No. 2584 # persianopeh [E-mail] 2002/03/18 (月) 13:04:31
いつも参考にさせて貰っています。
ひとつ気づいた所があるのですが、Perlでのforkを使ったサーバプログラムの部分ですが、
親プロセスは子プロセスの終了ステータスを受けとらなければならないため、waitが必要だと思います。waitが無いと、子プロセスが終了してもdefunct状態のまま存在し続けてしまいます。
このwaitについて、下記の一行を追加するだけでうまくいきます。
$SIG{CHLD} = sub { wait };
(オライリーのらくだ本より)

以上、ご参考まで。

No. 2585 # 小僧 2002/03/18 (月) 16:26:50
お世話になります、小僧です。
連続の質問になるので、気が引けるのですが、
どうしても分からないので相談させて下さい。

AIX4.3.3 にてCDをマウントを行ったのですが、
CDのファイル名が全て小文字に変換されてしまいます。
Windowsで見ると大文字、小文字の区別がされています。

マウントを行うときに、オプション指定で
大文字、小文字を判定させる事は可能なのでしょうか?

#AIXでのマウントってちょっと特殊なんですよね?
#私が実行したマウントコマンドを記述しておきます。
#>mount -V cdrfs -r /dev/cd0 /mnt

アドバイス、お願い致します。

No. 2586 # 超初心者 2002/03/18 (月) 19:47:46
はじめまして。
サンプルプログラムをいつも参考にさせていただいている者です。
「C言語で ftp クライアントを作ってみよう (1)」のプログラムを
参考にFTPプログラムを作成していますが、プログラム中で、
cdコマンド、putコマンド相当の処理を行う場合はどのような記述を
すればよいか教えていただけないでしょうか(_0_)
user、passwd、quitの入力を、USER、PASS、QUITを使用して
コマンドをしているように見えます。これ相当の処理を、cd、putで
行う場合のプログラミングを調べております。
申し訳ありませんが御覧になっていたらアドバイスをお願いします
(_0_)

No. 2587 # pyu 2002/03/18 (月) 22:06:34
はじめまして。*
システムコール・ライブラリルーチンのページをよく見させて
いただいている者です。
ふと、気がついた部分がありまして生意気にも
指摘の投稿させていただきました。
http://x68000.startshop.co.jp/~68user/unix/pickup?usleep
において、マイクロ秒:百万分の一秒 であり、
0.001 秒単位ではなく、
例の説明も違っていると思います。
既に指摘があったらすいません。

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