環境変数を表示せずに ファイル書き込むには?

[上に] [前に] [次に]
1999/03/17(水) 22:41:44
UNIXサーバー上で ENVコマンド使うさい 表示せずに
ファイル書き込むには?

1999/03/17(水) 22:52:43
追加 UNIXサーバー内で ENVコマンド使うさい IEブラウザからアクセスして環境変数を表示せず サーバー内で cgiを使って
環境変数をファイルに書き込む方法はありますか?

\n 1999/03/17(水) 23:16:48
Q1:
サーバーOSによっても違いますが、TELNETでという事ですよね。
set > filename

Q2:
例えば、
#!/usr/bin/sh
set > filname
echo "Content-type: text/html"
echo
echo
echo "<HTML><BODY>"
echo "<A HREF=\"filname\">filename</A>"
echo "</BODY></HTML>"
なんてのは?



\n 1999/03/17(水) 23:18:32
失礼、envでしたね。(^^)

いいづか [HomePage] 1999/03/18(木) 01:27:47
Perlならこう:
#!/usr/local/bin/perl
print "Content-length:text/plain\n\n";
open ( E, ">env.txt" );
while ( ( $key,$value) = each %ENV ) { print E "$key = $value\n";}
close (E);

シェルならこう:
#!/bin/sh
echo "Content-type: text/plain"
echo
set > env.txt

w [HomePage] 1999/03/18(木) 21:43:02
http://www.cypress.ne.jp/mituru/cgi-bin/time.cgi で表示しますが 表示せずにhtmlの文字すべてをそのまま テキストに書き込みたいのです どうですか お願いします
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<title> Print ENV  </title>";
print "<H3>CGI program - print env- </H3>";
print `date`;
print "\n<PRE>\n";
print `env`;
print "\n<PRE>\n";

これを 改良したいのですが

B-Cus 1999/03/18(木) 21:46:30
せっかく答えを書いてもらったのに、それに関して全く反応を示さないのは
どうかと思うのですが。わからないところがあるなら、どこがわからないのかを
言うべきでは?

# ここは添削コーナーじゃないんだし。

w 1999/03/18(木) 23:03:03
うまくいきませんでした お詫びします このことは なかったことに してください

\n 1999/03/18(木) 23:59:21
># ここは添削コーナーじゃないんだし。
まあまあ、文字だけの会話ではよくある事だし....

ちなみにCGIを実行させてあと、リクエスト元には何を返すのですか?

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>";
print "<title> Print ENV </title>";
print "<H3>CGI program - print env- </H3>";
$_=`date;env`;
open (OUT,">log"); #あらかじめ作成しておいて書込み権を与える
print OUT "$_\n";
close;
print "</html>";

こんなんではどうでしょう。
後は適当に改造して下さい。
#アクセス時の環境をログにしたいのでしょうか?
#目的が今一わからん

やま 1999/03/19(金) 00:19:57
いまいち何を質問されたいのか、よくわからん

B-Cus 1999/03/19(金) 01:24:34
> まあまあ、文字だけの会話ではよくある事だし....

ちょっと言葉足らずだったので補足しますが、言いたかったのは
 「解決策を提示されたら試してみて報告くらいはしてくれ」
ということです。動かないというなら、それはそれで代案も出せる
わけで。

# あれで動かないなら、残るはパーミッションの問題でしょうから。

ですから、
 「やってみたんですが、ファイルは作成されませんでした」
くらい書いてねっつーことです>wさん

添削wです 1999/03/19(金) 20:43:12
ご迷惑おかけしました B−Cusさんのキツイ一撃よくききました 皆様 なんとか 皆様のお力添えを無にならないように 努力して
いい結果を出したいと思います
ちなみに time.cgiはアクセスできません

いいづか 1999/03/20(土) 02:48:03
env コマンドと date コマンドにこだわる必要はないのでは?
Perlなら同等のことをする命令語があるので、起動プロセス数
を減らすためにPerlで普通に書いた方がいいと思います。
やりたいことは「環境変数と日付をファイルに書く」という
ことであり、「envコマンドとdateコマンドの結果をファイルに
書く」ということではないんじゃないかと思います(違ったらごめん)。

たとえば、Perlでは%ENVハッシュに環境変数が入っているので、
これを順に取り出せばいい訳です。また、dateの所は
フォーマットを気にしなければ以下のスクリプトでもいいはずです。

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900; $mon += 1;
$結果 = sprintf ( "%04d/%02d/%02d %02d:%02d:%02d",$year,$mon,$mday,$hour,$min,$sec );

ところで、例のスクリプト(元のやつと直したやつ)を実行
するとどういう結果になりますか?

w 1999/03/20(土) 21:56:38
あのう すいません これだけは解っています 複雑な bbsやゲストブック またカウンタは作動済みで unixの サーバー内(perl4)ファイルの書き込みは出来るのですが 間単に作成した cgiファイルだめなんです 皆さんに頂いた代案を一つ一つもう一度チェックしてみて 解決したいと思います
#例の件は作動しませんでした #目的が今一わからん##特に たいした目的は有りません  #アクセス時の環境をログにしたいのでしょうか? ##そうです
# あれで動かないなら、残るはパーミッションの問題でしょうから。##cgi=755 logファイル=666です

B-Cus 1999/03/21(日) 00:56:38
これは動きますか?

 print "Content-type: text/plain\n\n";
 if ( ! open (OUT,">file") ){
  print "error";exit;
 }
 print OUT "hoge\n";
 close(OUT);
 open (IN,"file");
 print <IN>;

hogeと表示されればOK。errorと表示されれば、fileのパーミッションの問題。

次。これは動きますか?

 print "Content-type: text/plain\n\n";
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
 printf "%04d/%02d/%02d %02d:%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec;

日付と時刻が表示されればOK。

どちらも動けば、組み合わせて、

 print "Content-type: text/plain\n\n";
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
 open (OUT,">file");
 printf OUT "%04d/%02d/%02d %02d:%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec;
 close(OUT);
 print "hoge";

でOK。

CGIの仕組み上、何か文字を出力しないといけないので、
print "hoge"を省いてはいけません。


あと、読みやすいように改行しましょう。

それから「動作しません」というのは情報として全く不十分です。
Internal Server Errorになるとか、ファイルには何も書き込まれないとか
No contains data と出るとか、「何がどういうふうに動作しないのか」を
書いてください。

w 1999/03/21(日) 15:08:58
[[解決]]
解決しました 皆さんのおかげです P-Cusさんうまく行きました 感謝 感激です また  なにか 疑問が有りましたら ご相談に乗ってください

[上に] [前に] [次に]