2つのファイルの比較について、 hogeとfooという2つのファイルがある場合、 この2つのファイルから、同一の内容の行を出力するコマンドは どのようなものがありますか? |
下記で同じ質問をしたところ、回答をいただいて解決しました。 http://www.parkcity.ne.jp/~chaichan/qanda/qa2652.htm |
マルチポストですか・・・>あやの |
お世話になってます。すみませんがもう一つ質問させてください。 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です。 メール自動送信の方法をご伝授して頂けないでしょうか。 宜しくお願いします。 |
>>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。 |
mailto-committers.plの方法を試しましたが結果は同じで1分以上待ってから送信されます。 %mail メールアドレスは普通に送信されました。 もう少し調べてみます。 |
はじめまして、メールサーバの管理をしているのですが、 最近サーバがpopユーザ数に対応しきれず、 pop.lockがかかってメールが取れない事が頻繁に発生しています。 popデーモンはqpopperをつかっています。 そこで、このロックの解除方法で疑問があります。 qpopperが起動すると、まず、/var/mai/.user-id.popファイルにコピーを作成。 無事にコピーが終わると、/var/mai/user-idはサイズ0に切り詰められる。 POPサーバーは、このコピーと、解析した結果を元にクライアントとやりとりします。 ネットで調べると、.user-id.popファイルを削除する方法をよく見かけますが、 途中でセッションが切れてロックファイルが残ってしまったような場合、 この方法では受信し切れなかった分のメールはなくなってしまうのでしょうか? ほっとけば30分でロックファイルはなくりますが、 これもただ強制的にロックファイルを削除しているだけなのでしょうか? また、popのプロセスをkillする方法もありますが、この場合のロックファイルは どう処理されるのでしょうか? ご指導、宜しくお願いします。 |
>>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」というファイルがあるのでしょうか? |
お世話になります、小僧です。 質問をさせてください。 あるシェルをバックグランドで実行させ、 その後Window を閉じる、という処理を行おうとしています。 過去ログなどを参照した結果、実行コマンドは nohup ???.sh & でいいと思うのですが、終了のさせかたに疑問が残ります。 と、言うのも logout コマンドは受け付けてくれるのですが、 exit コマンドは 1 回目は受け付けてくれません。 ( 2 回叩くと exit してくれます・・・) 本で調べた結果、exit は「シェルスクリプトを終了」し、 logout は「ログインシェル」を終了させると書いてありましたが、 この意味するところがわからなく、困っています。 この 2 つのコマンドの違いが分かるか方がいらっしゃいましたら、 アドバイスをお願い致します。 −−− OS は AIX 4.3 シェルは ksh 調べた本は「UNIX クイックリファレンス」 です。 宜しくお願い致します。 |
>>2631 小僧 > logout コマンドは受け付けてくれるのですが、 > exit コマンドは 1 回目は受け付けてくれません。 それはまた謎な話ですね。 % nohup sleep 100 & % exit でも再現しますか? 単に (nohup を実行せずに) % exit だと? また、「受け付けてくれない」とはどういう状況を指してますか? 何かエラーメッセージは出ますか? |
>>2632 68user お世話になります、小僧です。 早速の返信、ありがとうございます。 68user さんが記述されているコマンドを実行してみました。 以下、結果です。 ---------- Start # nohup sleep 100 & [1] 37802 # nohup の出力を nohup.out に送信します。 # exit 実行中のジョブがあります。 ---------- End 情報が足りなかったのですが、 「受け付けてくれない」というのは "実行中のジョブがあります。"メッセージが 表示されて、終了されないことを指しています。 ちなみに、上記の状態でもう一度「exit」を実行すると、 上手く画面が消えてくれます。 宜しくお願い致します。 |
>>2633 小僧 > "実行中のジョブがあります。" それはシェルが 「実行中のジョブがあるけど、本当に exit で抜けてよいのか?」 と親切に聞いてくれているのです。 これはただの警告であって、抜けようと思えばいくらでも抜けられます。 二度目の exit は 「警告したにもかかわらず再度 exit しようとした」 ということで、今度は抜けることができます。 FreeBSD や Solaris では、端末を持たないコマンド (?) をバック グラウンドで実行している場合は、素直に exit させてくれるん ですけど、AIX はそうではないようですね。 |
>>2634 68user お世話になります、小僧です。 早速の回答、ありがとうございました。 別に exit と logout のコマンドが 違う訳ではなかったのですね。 今後も宜しくお願い致します。 |
はじめまして。検索していてここに辿り着きました。よろしくお願いいたします。 SunOS 5.7 cshでファイルをテープにバックアップする時に tarでやっているのですが、ファイル数が多くなって出来なくなって しまいました(argument too long)。 echo /パス/ | xargs tar cvf としても、だめみたいです(xargsは外部コマンドでした)。 ファイル数を減らすという他に何か良い方法はないでしょうか。 お忙しいところ誠に恐縮ですが、宜しくご教示ください。 |
>>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 オプションじゃないかと思います。 |
>>2635 小僧 > 別に exit と logout のコマンドが違う訳ではなかったのですね。 違いますよ。logout はログインシェルを終了させるとき、exit は シェルを終了させるときに使います。ログインシェルというのは、 Login: Password: というような認証の直後に起動したシェルのことです。 |
>>2637 68user 68Userさん、ありがとうございます。 tar cvf /dev/XXX -I /パス名1 -I /パス名2 -I /パス名3 として実行してみたのですが、変な文字がコンソールにいっぱい出てきて すぐ止めました。 それから、Argument Too Longも相変わらず出ています。 せっかく教えていただいたのに解決できませんでした……。 たくさんあるファイルをテープにバックアップしている ところは、一体どうやってやっているんでしょうか?? |
>>2639 Yasuo Y > tar cvf /dev/XXX -I /パス名1 -I /パス名2 -I /パス名3 man tar しました? -I の意味を調べました? あと、別解としては、 % echo * | xargs tar rvf /dev/XXX かなぁ。うまくいくかどうかはわかりませんが。 |
はじめまして UNIXについて質問なのですが、a.txt と b.txt というファイルがあり aの中には abcdefg という内容があり bの中には hijklmn という内容があります。そこで a の中に b の内容をコピーしたいのですが、どのようにコピーしたらよいのですか、教えてください。 行のコピーの仕方ってあるんですか? |
>>2640 68user とりあえずうまくいってるようです。 Cシェルの実行中に出てきたエラーメッセージなのですが、 Argument Too longは、他のところで出ているもののようでした。 どうもお騒がせしました。 |
ども初めまして。 http://x68000.startshop.co.jp/%7E68user/cgi-bin/<script>alert("----")</script> のエラーページでいま話題のクロスサイトスクリプティングの脆弱性を確認出来ました。 たぶん、error.cgiの原因と思われます。 私も利用させてもらっていますがperlのことは分かりませんので Fixされるようお願いします。 |
>>2643 ある厨 なるほど。外部からの情報をちゃんとチェックしてないな。 ふむふむ。賢い |
File System full で、しばらくこのサーバにアクセスできない状態に なってました。 >>2643 ある厨 > のエラーページでいま話題のクロスサイトスクリプティングの脆弱性を確認出来ました。 ご指摘ありがとうございます。< > を < > に置換するようにしました。 あと、Host: ヘッダにも全く同じ脆弱性がありましたので直しました。 http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/error.cgi >>2641 あき いまいちやりたいことがわかりません。例をあげて説明して下さい。 |
はじめまして。 UNIXを始めたばかりの初心者なんですが、 あるフ゜ロク゛ラムから、その日の日付の入ったファイル名を持つファイルを 自動生成させたいのですが、 どうもうまく出来ないんです。 というのも、僕はdateの情報をcutもしくは、date +%y%m%d"などで、 その日の日付を抜き取り、変数に入れた後、 touch $[変数名] と、そんな感じでやってみたんですが、 これって、パイプを使っても変数の中に日付って入らないですよね? 出来れば、[日付入りファイル名]の作り方を教えて頂けませんか? ぜんぜん違うアプローチでその方法があるならそちらでも一向に構いませんのでm(__)m |
>>2646 knockout 言語は何ですか。 |
返答どうもです。 ksh見たいです(w |
返答ありがとうございます。 えっと、「echo $SHELL」と入力して、 /usr/bin/ksh と出ますので、kshですね。 すいません、こんなふざけた返答で(^^; |
>>2648 knockout nowdate=`date +%y%m%d` echo $nowdate と `` を使います。 パイプを使うこともできなくはありませんが、無駄に長くなります。 複数行を処理する必要がないなら `` でよいでしょう。 date +%y%m%d | while read line do echo $line done |
出来ました!! なるほど``ですね。 早速、ホンチャンのプログラムに組み込んできます。 ありがとうございましたm(__)m |
度々すいません。 えっと、さっきの返答してもらった最後の記述 date +%y%m%d | while read line do echo $line done は、何を行っているんでしょうか? 僕の解釈ではdateで表示したのを、変数lineに代入、 その後がいまいち理解が、 echo $lineは分かるんですけどね、 doとdoneを使っている意味が はっきり分からないんです。 「それぐらい調べろ」っていわれそうですが、 どうか一つ宜しくお願いします(^^; |
はじめまして。LINUXをはじめたばかりのものです。 c言語用FTPクライアントのプログラムを ダウンロードしたのですが、 実行方法がいまいちわかりません。 他のサイトでサーバ、クライアントのファイルは それぞれで実行すればよかったのですが、 今回の分はFTPサーバを自分で作らなければ ダメなのでしょうか? かなり初歩的な質問だと思いますが 教えてください。 |
リンク先があるかどうか知るにはどうすればいいですか? 具体的には他人に書き込んでもらったアドレスの、 例えばhttp://www.a.com/a/a.gifの絵があるかどうか知りたいのです。 それと、絵の大きさも知りたいです。 それで大きすぎたら表示しないようにしたいのですが。 よろしくお願いします。 |
はじめまして、apexと申します。 今、Cシェル(OSは、ソラリス8)で、簡単なプロセス管理ツールを作成しています。 この時、以下のことでうまく動作せず悩んでおります。 もし、おわかりになれば教えてください。 1:Cシェル内で、rootユーザになる方法。 要するに、パスワードをシェル内に記述して、コマンドラインに渡せ るかどうか? 2:awkにて、プロセスを切り出す方法 「ps -ef | grep ABC」からABCを認識させ、ABCプロセスが存在しな ければ、起動する。 この時、ps-efコマンドを実行した時の、第2パラメータが ”root”で、第9パラメータが”ABC”であるものを切り出したい。 以上、お手数ですが、よろしくお願いします。 |
>>2655 apex 1についてですが、 expectというコマンドがあれば、これを使ってみてはどうでしょうか。 ここにサンプルがありますね。 http://www.math.s.kobe-u.ac.jp/~kodama/tips-expect.html |
>>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}' あたりでしょうか。 |
2654番の田中です。 お答え有難うございました。 言葉足らずですいません。 perlでcgiを勉強しながら製作中です。 でもう一度、 リンク先があるかどうか知るにはどうすればいいですか? 具体的には他人に書き込んでもらったアドレスの、 例えばhttp://www.a.com/a/a.gifの絵が存在するかどうか 知りたいのです。 それと、絵の容量も知りたいです。 それで大きすぎたら表示しないようにしたいのですが。 よろしくお願いします。 |
>>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 文で 判断すればよいでしょう。 |
>>2658 田中 また無駄な回答をしてしまった。 http://script.lovely.to/bbs/infolng.cgi?print+200204/02040010.txt もうこないでね。 |
大学でUNIXを勉強しているのですが… ただ教授の命令どおりにコマンドを入力して実行しているだけで、 何をやってて何をするためにUNIXを勉強しているのか分かりません。 大体パソコンをかまうのにも慣れてない自分は、 「この〜〜〜を、〜〜〜して」 ※〜〜〜→聞きなれない英語 といわれ続けちんぷんかんぷんです。 どうしたら上手くUNIXを学べれるのでしょうか? もしアホでも分かるお勧めの本とかあれば紹介していただきたいのですが… |
>>2661 しなくろ 興味がなければ学ばない。でも単位を落とさないように暗記だけする。 ってのがいいんじゃないでしょうか。興味がわかないことを勉強しても 時間の浪費にしかならないと思います。 興味はあるけどわからないって場合は…どうしたもんでしょうかねぇ。 |
Fixども。 設定完了しましたのでお礼まで。 |
はじめまして。とても参考になります。 telnetのところでWindowsではtelnetでホームページはみれないのでしょうか? |
>>2664 なは > telnetのところでWindowsではtelnetでホームページはみれないのでしょうか? http://x68000.startshop.co.jp/~68user/net/win-telnet.html では どうでしょうか。 と言っても Windows 2000 の telnet.exe では設定方法が違う んですけどね。 |
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; } } |
>>2666 a-jmj ん〜、$line_{2} で 2 行目のデータが得られればいいのですか? そのとき得たいデータは日付 ($date) と行全体? |
説明不足ですいません。 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}といった感じの変数を使いたくないのと、効率を考えたらリファレンスが使えないことです。 |
>>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<> |
どうもありがとうございます。 ええそうです、求めていたのはこれです。 無名も普通のリファレンスみたいに使うのですね。 なかなかリファレンスを詳しく書いた資料がないものですね。 実際の運用には8桁の日付で、分別させているのですが、以前の方法でしたら、 use strict;を使おうにも変数名が不規則なうえ、指定してやらなければ成らな い変数が膨大な数になってしまうことが問題でした。 その他に良い分別方法があったら教えていただけたら、幸いです。 |
>>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 を使い出すかも しれません。 なので、ほどほどのところでやめておく方がいいのかも。 |
始めまして。C-CGI システム構築をHTMLのタグレベルで実現するツール の紹介ページが shino.server-club,net/index.htm にあります。皆様の 御参考になればとCMまがいの書き込みを致しました。 |
>>2672 Shino こんなもので金が取れると思ってるの?? なんか最初からあやしげな臭いがプンプンしてたけど、やっぱり。。 http://shino.server-club.net/cgi-bin/DS.cgi?COMMAND=Html&HTML=../../../../../../../etc/passwd 注:Referer。 汚染チェックしてね。 |
名無しさん様、大変失礼を致しました。 |
おひさしぶりですみません。質問です。 よく、インターネット(Web、メール)で (いわゆる)半角カナを使ってはいけないといわれますが、 この理由が、 ・インターネットは ASCII 以来、7ビットしか通さない伝送路が 使われてきたので、7ビットコードを使うのが望ましい ・日本の場合 ISO-2022-JP が標準 ・ISO-2022-JP は、4つの面に(いわゆる)半角カナ以外の コードが割り当てられている。 ・つまり、ISO-2022-JP には半角カナが「ない」 ・ないものは使ってはいけない という風に覚えていましたが、 UNIX の mule や Windows の xyzzy で ISO-2022-JP を指定して (いわゆる)半角カナを入れるときの、 「ESC)I がエスケープシーケンスで(いわゆる)半角カナ」 というコード系は、何に規定されているものなのでしょうか。 こんなの、ちょっと調べろよって話だと思うんですが、 調べ方が悪いのかこれだ、という情報に当りません、、。 |
>>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 カタカナを指示する ことになるのか これまた (僕の知識不足のため) 理解できません。 わかったら僕にも教えて下さい。 |
>>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 では何かとトラブルの元です。よって、やっぱり半角カナ 嫌いに戻ってしまいました。 |
そっかー。68user さんもわからないと聞いて 少なくともつまんない質問ではなかったとわかって なんかホッとしました(^o^) マルチポストになりますが、別所で聞き、なにかわかったら また書きます。ありがとうございます。 他の方も、なにかありましたらご教示ください。 |
>>2675 ふくし >>2676 68user お久しぶりです。 http://euc.jp/i18n/charcode.ja.html によると、 >終端文字と文字集合の対応は登録制になっており、 ECMAという組織が登録簿を管理して います。 (略) >・94文字集合 (略) >I > JIS X 0201カタカナ >J > JIS X 0201ローマ文字 とあります。 先にECMAが決めたのか、誰かが既に決めたのをECMAが登録したのかは、 わかりませんが。 |
>>2679 へにか なるほどなるほど。 http://www.ecma.ch/ecma1/STAND/STANDARD.HTM のどれかにその記述があるのでしょうか。PDF しかないようなので 中身は見ていませんけれども。 ちなみに G0 とかロッキングシフトなども理解してないんですが (どこの 解説を読んでもよくわからん)、初心者向けの解説がどこかにないもので しょうか。 |
へにかさん、ありがとうございます。 わたしも 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 ってなんですか?(^^) |
もう、だめ・・・ CPU使用率の確認でsar -vってのあるんだけど、そのなかの file-szはシステムファイルテーブルの現在サイズ、および最大サイズ ってとこまではわかってるんですけど、 システムファイルテーブルって何を管理してるテーブルなの? だれかおしえて・・・ システムファイルだよっていうのは無しで。 |
>>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のメーリングリスト、 あさってみますね。 |
>>2681 ふくし > で、2ch の AA ってなんですか?(^^) こんなのです。 http://members.tripod.co.jp/maruheso/aadic/ Ascii Art と言っても、全然 Ascii じゃないですけど。 >>2682 ぐっさん > システムファイルテーブルって何を管理してるテーブルなの? その時点で使用 (open) している i-node の数、じゃなかった でしょうか。違ったっけ。 |
はじめまして、サトと申します。 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の再インストールを覚悟していますが、この状態で何か対処方法は ありますでしょうか? どなたかお助け下さい。。よろしくお願いします。。。 |
>>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 などとする手もあります。 |
>>2686 68user 68user様、レス大変ありがとうございます。 どうにもならないのかと思っていたので、少し安心しましたです。 昨日から相当凹んでましたので。。 OSはソラリスで、マシンはSUNウルトラだっと思います。 (ソフト開発専門なのでマシン環境などはうとくて。。) 週明けにマシン環境の担当と相談してみます。 ありがとうございました。 |
HP−UNIXでman sarを実行したところオプションvのところで ”text-sz (該当しません)”となっていましたがtext-szは もともと何の監視のためにあったのか知ってたら教えてください。 |
お世話になります。トータルで3回目の質問になるのですが、 perl で例えば <>aa<>bb<>cc<>dd<> ←1行目 ee<>ff<>gg ←2行目 このようなデータがあった場合 <>aa <>bb <>cc <>dd <>ee <>ff <>gg のように出力させるコードを教えてください。 よろしくお願いします。 |
<> が区切り文字だと事前にわかっていれば、 chomp で改行を除き、 <> で split して、<> を改めて付加して出力、ですね。 通常のフィルターの書き方はわかりますか? chomp、split の使い方は man perlfunc か、 ラクダの本を見てください。 (どっかで日本語の man perl が公開されてたな) <>が区切り文字だとわかっていなければ、無理だと思います。 というのは、たとえば 1 行目で、<> が区切りなのか、 <>a なのか、<>aa なのか、機械には不明だからです。 |
以下はどうでしょうか? #!/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"; |
ふくしさん、aaaさん、 お二人のコードを参考にして解決できました。 ありがとうございました。 |
>>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 = (...)こんな感じ |
自分で書いてみた。 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"; } |
HP-UNIXで過去の日付を表示させる方法しりませんか? ちなみにenv TZ=JST-9 dateでは1日分しかさかのぼれないので、 他の方法で知っている人がいれば教えてください。 |
>>2695 G shellutils で GNU 版 date をインストールするか、perl で localtime(time()-60*60*24) などとするのがお手軽なんじゃないでしょうか。 |
>>2696 68user 返答ありがとうございます。 なにぶん初心者なもので、アドバイスの意味があまりわからないの ですが、これから調べてやってみようと思います。 会社の環境ゆえ、インストールはできないのでperlの方を参考に させていただきます。自力でわからなかったときはまた、よろしく お願いいたします。 |
>>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") {}} |
よく拝見すると"Perl"とは入ってないですね 笑 >UNIX、CGI、ネットワーク、Java Servlet についての掲示板 |
はじめまして HTTPプロトコルを利用したファイル転送について教えて下さい。 私はグラフィックデザインに関わっているので、インターネットを介して 画像や映像など比較的大きなデータを日常的にやり取りしています。 今は、ICQやMSNメッセンジャーのファイル転送を利用しているのですが 相手のファイアーウォールやルーターの設定から接続出来ない事もあります。 また接続が切れてしまった場合、続きから再開できるレジューム機能についても解説して戴けないでしょうか? 宜しくお願いします。 |
はじめまして。石田と申します。 ★件名★「UNIXの部屋」公開ありがとうございます。 *現在、私はlinux(Unix)のシェルプログラミングを勉強中です。 *ところが、manコマンドでは全然分からないので、 GoogleやMLアーカイブ検索して調べていましたが、 *こちらのUNIXの部屋は非常に分かりやすく参考になります。 *分かりやすいポイントは、 1)パラメータの意味が日本語で分かりやすく書いてある 2)具体例がメッセージなど併せて書いてある。 ところが非常に分かりやすいです。 *私が今作っているスクリプトは 1)redhatのupdateのFTPサイトと自分のpcの rpmパッケージリストを持って来て、マッチングして、 2)不足分のファイル一覧を作成 この中から必要なファイルをFTPでダウンロード *とにかく、パッケージのアップデートは手間がかかるので、 なるべく自動化しようと思っています。 * これからも「UNIXの部屋」がんばってください。 |
>>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の部屋は非常に分かりやすく参考になります。 ありがとうございます。改善点などありましたら指摘して下さい。 |
はじめまして、くろうです C言語初心者がいきなりソケットプログラムを作っているのですが どんな本を見ても、いまいちわからないことがあるので質問します。 UNIXで最大1Mハ゛イトの可変ファイルをソケットで受信しているのですが ソケットで受信する時、recvのバッファーのサイズはどのくらいとるのが適正値なのでしょう。 char buf[4096]; rtncd = recv(sockid,buf,sizeof(buf),0); 受信したテ゛ータは連結編集してます。 よろしくおねがいします。 |
>>2703 くろう 100 バイト単位で値を変えて、転送速度を計りましょう。 それが面倒なら 4096 でいいんじゃないでしょうか。 # 僕は面倒なので 4096。 |
皆さんはじめまして。ゆくまといいます。 いつも「UNIXの部屋」を活用させて頂いております。 現在、UNIXの*について調べているのですが、 もしご存知の方がいらっしゃったら教えていただけますでしょうか? たとえば、 >ls file01.dat file02.dat >cat * としたとき、catの表示順は必ず、 file01.dat の次に file02.dat である(つまりソート順)、と決まっているのでしょうか? もしくは不定なのでしょうか。 よろしくお願いいたします。 |
>>2705 ゆくま > file01.dat の次に file02.dat である(つまりソート順)、 > と決まっているのでしょうか? はい、ソートされます。sh・csh・tcsh・bash・zsh・ksh など全てのシェルでソートされるはずです。 ただし cat *2* *1* だと file02.dat file01.dat の 順になります。 |
>>2706 68user レスありがとうございます。 これってやはり考えるまでも無い当たり前のことなんですかね。 これまで何年かUNIXを使ってきて、そうだとは思っていた のですが、改めて調べてみたところ、そのことを明記している ようなドキュメントを見つけることができなかったのです。 おそらく何らかのパブリックなドキュメントには明記してある ことだとは思うのですが。。。 ご存知の方はいらっしゃいますでしょうか? |
>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. |
>>2708 68user > FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず FreeBSD 4.5-RELEASE の sh(1) ・・・発見できず の間違いです。 |
>2708 >手元にあるマニュアルを調べてみました。 わざわざありがとうございます。 なるほど!灯台下暗しでした(申し訳有りません、、、)。 ちなみにこちらの手元も調べてみましたところ、 Solaris7 のcsh(1) [ファイル名置換] *、?、[、または { のうちのいずれかの文字を含むクォートされ てい な い ワード、または ~ で始まるワードは、以下のように アルファベット順にソートされたファイル名のリストに展開 (グ ロビングとも呼ばれる) されます。 とありました。 お手数をおかけしました。 助かりました! |
>2710 追記です。 当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。 ということは、68userさんの環境と異なるのでしょうか? |
HP-UXのawkコマンドのパターン指定ではシェル変数は使えないのでしょうか?下記のような条件で、いろいろ形を変えて試して見たのですがまったくうまくいきません。分かる方教えてください。 例:awk '$1<=${hensuu}{print $0}' file.txt ※${hensuu}=1,2,3,4,5・・・・・・ |
>>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 で変数を指定しましょう。 |
>>2713 68user ありがとうございました。教えていただいたコマンドで上手くいきました。 |
こんにちは、時々見させてもらってます PerlでIO::Socketを使っているのですが、 HTTPのPersistent connectionの様な、「サーバーから一旦データが 送られてきた後のコネクションは維持しつつも無通信な状態」 といった状態をプログラム側で判別できずに困ってます この間にsysreadなどを使うとデータが送られてこないためずっと 待ってしまいますので… IO:Selectのcan_read($timeout)も試してみたのですが、 この様な状態ではしっかりとソケット識別子を返してしまう みたいで結果としてsysreadの所に行ってしまってそこで止まってしまう 様な感じでした。 何か良い知恵はないでしょうか?? まあHTTPならcontent-lengthを見て1オブジェクトの受信の終わりを判別すれば良いんでしょうけど… |
>>2715 STP > この様な状態ではしっかりとソケット識別子を返してしまうみたいで ということはないと思いますが、問題が発生する最小限の プログラムを見せていただければ何かわかるかもしれません。 # あと、OS や perl のバージョンなども。 |
こんにちは、時々見させてもらってます。 PerlでHTTPSクライアントを作成したいのですが サンプルありますでしょうか |
>>2717 よー LWP? |
>>2717 よー 何をどう書いたのか全く覚えていませんが、LWP と Crypt-SSLeay で できるようです。 >>1848 d-jiro >>1849 68user >>1854 d-jiro >>1855 68user |
Socketを用いたPerlでHTTPSクライアントのサンプルは ありませんか? |
>>2720 よー http://www.thomas-fahle.de/pub/perl/LWP/HTTP/HTTP_Get.html#https |
68userさん,こんにちは. 失礼ながらご連絡事項をこちらでお伝えします. このサーバーがポートスキャンの踏み台にされたそうです. カーネルも古いし本格的な対策は無理だと思いますが そちらでできる対策があれば試していただけませんか. > 早速ですが、サンライズシステムズ 様の配下にある > 210.249.139.22 というホストから > ポートスキャンが行われた模様との連絡が入りました。 連絡経路はTTCNパワードコムの鎌田さん->両毛の新堀さん->私の順です. |
実は5/30に胆嚢摘出の手術を受けまして,入院中なのです. 動くに動けない感じで,今も看護婦の目を盗んで携帯でつないでいます. 何かありましたらお気軽にメールください. |