どうもありがとう68userさん。(^^)/ > > CGIで直接sendmailに書込みした場合のエラーメッセージを取得したい時は、 > 宛先がなかった場合などに返ってくるメールを指して「エラーメッセージ」と > 言ってらっしゃるなら、 > http://www2e.biglobe.ne.jp/%7es-hasei/cgi-bin/wwwlng.cgi?print+99020031.txt > など。 直接行ってみたら、なんとよく行くページの中。 ここの所忙しく、あまり見に行って無かったらなんとリアルタイムな! 灯台下暗しとは、この事? > -Nは-N failure,successなどと指定できます。manを読むときは、 > 日本語マニュアルを使って楽をしましょう。 > http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=sendmail&dir=jpman-3.0.0%2Fman こんな便利があるとは!なんともうれしい限りです。(^^ゞ でもうちの環境ではLinuxなので適当に、コンバート?しながら見てみます。 だけど、また暫く睡眠時間が少なくなりそう....(T_T) ちなみですが。 http://X68000.startshop.co.jp/~68user/Cgi-room/printenv.cgi で書いてあるなかで REMOTE_PORT を、「ポート番号とは全く関係なくて、httpdをforkした回数じ ゃないかなぁと思ったらこれも違うみたい。よくわからん。」と書いてありましたが、そのまんま です。(^^) つまりクライアント側が、webサーバーの80ポートにアクセスする際に使用する、クライアント側の ポートの番号です。 私の使用しているパケットモニターで確認しました。 クライアント側アプリケーションが、通信の際にソケットを生成するとその時に自動的に割り当て られるみたいです、アプリの処理方法はそれぞれでなんでしょうが、通信セッション(っていうのかな) が終わる毎にクライアント側のポートが変わりました。 #まじめに勉強した訳でなくパケットモニターでの通信内容をみて書いてます。(^^ゞ |
>http://X68000.startshop.co.jp/~68user/tmp/html.l >http://X68000.startshop.co.jp/~68user/tmp/html.y ありがとうございます。なんとなく雰囲気はわかるような気がします(^o^;ゞ ただ、lexでは"<BODY>"とかをトークンとして扱ってますよね。 こういう方法で <BODY GBCOLOR="#ffffff"> のような属性を持ったものも 扱えるのでしょうか? よくは分かってないんですが、lexではトークンを正規表現で切り出しますよね。 だから、<>内をまとめて切り出すのは難しいような気がするのです。 それとも、<>内はまた別のルールでトークンに切り分けるのかな…? |
> REMOTE_PORT どうもです。これを設置したのは去年の6月ですから、その当時はよく わかってなかったようですね。ちなみに当時は、 「サーバ側はポート80で待っているが、一旦コネクションが確立されると、 次のクライアントのために一刻も早くポート80を開けなければならないので、 新しいポートが(CGIに)割り当てられる。CGI側はそのポートを通じて クライアントと通信しなければならない」 のではないかなぁ…と思っていた記憶があるような ないような。 > でもうちの環境ではLinuxなので適当に、コンバート?しながら見てみます。 いや〜、おそらくLinuxにもjmanはありますよ。僕はLinux知らないけど、 ないはずがないと思います。 > ただ、lexでは"<BODY>"とかをトークンとして扱ってますよね。 どうなんでしょう? 僕は挫折した人間なのでよくわかりませんが(^^; weblintなどもperlでやってるんで、HTMLチェッカはyacc&lex向きじゃ ないのかもしれませんね。 |
>weblintなどもperlでやってるんで、HTMLチェッカはyacc&lex向きじゃ >ないのかもしれませんね。 なるほどー 文脈自由文法とかがちゃんと分かってないので、まだ?なんですが…(^^; Cで言語処理系のプログラムを書く機会があったら、またちゃんと勉強しようと 思いつつ、そのままになってるんですが、Windowsなんかを使ってるとどんどん 遠ざかって行くような気がします(^^;;; 日本語マニュアルもありがとうございました。 とりあえず、ウチのサーバーのmanの出力は読みやすくはなったのですが、 やっぱ日本語だと助かります(^^; |
68userさんへ ありがとうございます。 参考にさせて頂き、もうちょっとやってみます。 |
こんにちは。 CGI実行中のバッファのフラッシュについてなんですが。 具体的には、あるサーバーのログ20Mb以上を圧縮して取り出すのに、 CGIで圧縮ファイルを生成→生成されたファイルをDownLoadする。 というCGIで、全ての処理にかなり時間が掛るのと、ブラウザの TimeOutをさける為に、処理過程を画面に出力しながら処理を続け る動作のスクリプトです。 $|=1でバッファのフラッシュを指定できますよね。 確かに、シェル上で直接実行すると動作の確認が出来ましたが、 ブラウザ上から実行すると、スクリプトが全て終わってからでない と画面に出力されません。 他で聞いたところによるとサーバー(Apacheです)が、CGIの処理が 終わらないとダメみたいです。 ただ、その際STDOUTをクローズすると出力されると言っていたので 、実験しましたがダメでした。 #close後は出力されない また、ある程度の出力(環境で違うらしい)が溜まるとWebサーバー がバッファをフラッシュするとも書いてありましたが(未確認)、 無駄な出力をさせたくありません。 なにか、いい方法は無いでしょうか? >いや〜、おそらくLinuxにもjmanはありますよ。僕はLinux知らないけど、 >ないはずがないと思います。 見つけたんですが、ローカルコンソール(本体)上でxの仮想コンソール? からなら表示できるんですが、telnetで指定するとmanを表示している? lessが2バイト文字に対応してないみたいで、読めません。(; ;) jmanってコマンドですよね、それも無いです。(T_T) #そもそもtelnet上のmanで日本語表示はダメなんでしょうか? #ちなみにtelnetは Tra Termを使ってます。 >> REMOTE_PORT いやーパケットモニターで生の通信内容見てると、結構勉強になります セキュリティーとかいろんな事の考え方も変わりますね。 |
つまり、処理結果を小だしに表示させてタイムアウトを防ぎたいわけですね。 http://www2e.biglobe.ne.jp/%7es-hasei/cgi-bin/wwwlng.cgi などはそのように できていますね。僕も前に疑問に思って質問したのですが、結局ローカルでは うまくいきませんでした。 で、そういう場合はnphスクリプトを試してみてはいかがでしょうか。とほほさんの webに解説があったはずです。 > #close後は出力されない そうですね。closeするとコネクションは切れます。 > lessが2バイト文字に対応してないみたいで、読めません。(; ;) FreeBSDではjlessというのがあり、環境変数でLESSCHARSETなどを 設定する必要があります。Linuxもそういうのはないですか? > jmanってコマンドですよね、それも無いです。(T_T) んー、そのサーバを誰が管理しているのか知りませんが、 ただ単にインストールしてないだけ、ってことはありませんか? 誰かLinux使いの方いません?(^^; |
>http://www2e.biglobe.ne.jp/%7es-hasei/cgi-bin/wwwlng.cgi など >はそのようにできていますね。僕も前に疑問に思って質問したのです >が、結局ローカルでは うまくいきませんでした。 これって見てみたんですが、わかりませんでした。(T_T) #この行だけ見て、暫く解析してたり発言をみていたので時間食って #しまった! >で、そういう場合はnphスクリプトを試してみてはいかがでしょうか。 >とほほさんのwebに解説があったはずです。 この行を、後で見直して思い出しました。 これって解説ページを後で試そうとブックマークに入れっぱなしでし た。 後日試してみます。 #誰かホントに1日を30時間に....(エーかげんにしなさい!?) >> lessが2バイト文字に対応してないみたいで、読めません。(; ;) > FreeBSDではjlessというのがあり、環境変数でLESSCHARSETなどを > 設定する必要があります。Linuxもそういうのはないですか? j*シリーズは私の探したところ見つかりませんでした。(; ;)x2 #どうもJフレンドリーなのはFreeBSDの方が上手みたいですね。 でも日本語マニュアル >んー、そのサーバを誰が管理しているのか知りませんが だれも管理してなかったりして。(^^ゞ セキュリティーのため詳しくは書けませんが、非常に恐いサーバで す。 #いろ〜んな意味で。 >ただ単にインストールしてないだけ、ってことはありませんか? そうかもしれないけど、仮にパッケージには入っていてもインスト ールしてまでは弄れないだろうなぁ。 試験環境として自由に触らせてもらってはいるけど、これ以上私に は言えない...。 でもここ、 http://www.jp.freebsd.org/man-jp/search.html よく出来てるんで、利用させてもらいます。 どうもです。(^_^)V |
こん**は >>j*シリーズは私の探したところ見つかりませんでした。(; ;)x2 こちらかと http://www.linux.or.jp/jman/ LANGがja_JP.ujisなら /hoge/man/ja_JP.ujis以下検索しますよーん |
どうもです、68userさん。(^^ゞ >で、そういう場合はnphスクリプトを試してみてはいかがでしょうか。 >とほほさんのwebに解説があったはずです。 やってみました。おかげで思うとおりの結果が得られました。 ありがとうございました。 これで忘れられてたブックマークもうかばれるでしょう。笑 ちょっと試験でいろいろやってみましたが、これってhttpサーバーが リクエストに対して(GETやHEAD等)を判断して返す処理と同じ事を、 CGI側で行なうって事なんですね。 と言う事は、Apacheでサポートしていない(と思う)DELETEとかOPTIONS を指定するとnphのCGIでいろんな事出来そうですね。 #でもちゃんとセキュリティーを考えないと恐いけど(^^ゞ ありがとうございます。>ABCDEFGさん。 >>j*シリーズは私の探したところ見つかりませんでした。(; ;)x2 よく探したら有りました! #なんて探しかたの悪いやっちゃ(^^ゞ http://www.linux.or.jp/jman/ これってうれしすぎる!!! そのついでといっちゃなんですが、その環境を使えるようにする方法を 教えては頂けないでしょうか。 #調子よすぎかな!?(^^ゞ つまり、自分の環境でj*環境を使う方法です。 最初からの設定で、シェルはbashを使っています。 環境ファイルは ~/.bashrcデスよねぇ。 ここにどんな記述をすればいいのか教えてくれるとうれしいです! 今の設定はこうなっています。 $ more ~/.bashrc # .bashrc # User specific aliases and functions # Japanese environment setting. if [ $TERM = "kterm" ] || [ $TERM = "kon" ]; then LANG="ja_JP.ujis" else LANG="C" fi export LANG alias ls='ls -F --color=yes' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi ↑ここまでです。 シェルはあんまり勉強してないので、人に教わったlsのalias行を 追加したぐらいで、構文の意味はぜんぜん分かりません。 #多分jmanpath=hogehogeとかやるんでしょうね。 日本語のマニュアルが使えれば今までの苦労も少しは....(^_^)V |
すいません、今度は名前の書き忘れだ〜 下の書込みは私です。 m(_ _)m |
すいませんも一つ質問です。 /var/log/messagesに、 sun last message repeated 3 times というメッセージが5分置きくらいに出力されるんですが、 これって何か分かります? #質問2でした。(^^ゞ |
>>で、そういう場合はnphスクリプトを試してみてはいかがでしょうか。 > やってみました。おかげで思うとおりの結果が得られました。 おお、そうですか。僕はnphは一度も試したことはなかったりするんですが…(^^; > sun last message repeated 3 times 普通に英語を読めば「前回と同じメッセージが3回出力された」ということで、 /var/logl/messagesのその前の行を見ればいいと思います。 # と、ずっと思ってたんだけど違うかな? |
わたくしUNIX初心者も初心者というかwin95ユーザでありまして プロバにtelnetで繋いでUNIX気分を味わっているもんでございます。 まったくwin95とは違いまして「こんぴゅーたをさわっている」って いう気分を満喫している(だけ)ところでございます。 コマンドがいろいろ載っていて、たのしゅうございます。 これからも続けてくださいましね。たよりにしております。であ。 |
ネコミでの書き込みがなんかおかしい とほほ ブラウザかえようかな 68user(X68K?)さんはふだん何つかってます? >M.Masudaさん .profileか.bashrcに export MANPATH=/hoge/man:$MANPATH export JLESSCHARSET=japanese hogeはman-pages-ja-0.4.tar.gz をinstallした所です おそらくman less groffは日本語化されてるんじゃないかなー man manで日本語表示出来なければ管理者に頼むしかなさそう(笑) |
> コマンドがいろいろ載っていて、たのしゅうございます。 どもども。「ここがわかりにくい」などのご意見がありましたら ぜひ教えてください。 > ブラウザかえようかな > 68user(X68K?)さんはふだん何つかってます? 学校ではNN3.04、家ではNC4.04です。まぁ一長一短ですねぇ。 早くMozilla5でないかな…。 |
>だれも管理してなかったりして。 ありゃ・・そうだったんですか となるとログのメッセージは・・・ |
> となるとログのメッセージは・・・ 全ユーザがrootになることができて、みんなでよってたかって管理してるとか(^^; |
>全ユーザがrootになることができて、みんなでよってたかって管理してるとか(^^; むむむ・・何かトラブッてそうですね(^^;;; |
どうもです。68userさん、ABCDEFGさん。 あれっ遂にチャットになってしまったか?(^^ゞ ABCDEFGさんどうもです。 DOSの頃はコンソールと言うか、CUIにはなれずついFDとかのツール類を 使っていましたが、なんとUNIXのしぇるの使いやすい事! おまけに、DOSの頃はコマンド類の使い勝手が悪くツール同士も相性を 考えて使わないと...。 >>M.Masudaさん > .profileか.bashrcに > export MANPATH=/hoge/man:$MANPATH > export JLESSCHARSET=japanese > hogeはman-pages-ja-0.4.tar.gz をinstallした所です > おそらくman less groffは日本語化されてるんじゃないかなー > man manで日本語表示出来なければ管理者に頼むしかなさそう(笑) 試しました。 あんまり時間が無く全部はやってみてないですが、man manだけは ちゃんと日本語マニュアルが表示されました。 68userさん、ABCDEFGさんどうもありがとうございました。 #setコマンドでは、LANG=Cとなっているんだけどいいのかなぁ? >だれも管理してなかったりして。 そうなんです。私が一応rootにはなれるんですが、ここの環境は 前にクラックにあっているサーバーが直ぐ近くに(ネットワーク上) 在るのに、誰もログをチェックしないし、ログインすら月に1度 位なんです。 私は、httpdの再起動をやったりするためにrootになれるんですが、 恐いので一応secureとかmessagesとかを、たまに確認しています。 しかし、私にはUNIXのスキルが無いので何か有っても対処法を知り ません。(; ;) 最大の防御はイーサーのケーブルを抜くくらいだったりして。(^^ゞ #でもこのサーバーDHCP立ってるんだよなぁ。 例の sun last message repeated 3 times ですが、 このメッセージのみが5分おき位に続けて出ています。 >普通に英語を読めば「前回と同じメッセージが3回出力された」ということで、 > /var/logl/messagesのその前の行を見ればいいと思います。 本日は12:28〜20:08まで5分おきにあり、現在は止まっています。 だけど、これ以外はさっき言ったdhcpのログ位です。 もしかしてアタック?でもsecureには特にメッセージも出てないん ですよ。他にはチェックするところがわからなしい...。 ところで、前の話題のFileLockですが、私の入っているメーリングリ ストでこんな例がありました。いかがなもんでしょうかね? $file_lock = 'LOCK'; $file_seq = 'SEQ'; open(LOCK, ">> $file_lock") || die; alarm(60); flock(LOCK, 2) || die; if (open(SEQ, $file_seq)) { $seq = <SEQ> + 1; close(SEQ); } else { $seq = 1; } open(SEQ, "> $file_seq.new") || die; print SEQ $seq; close(SEQ); rename("$file_seq.new", $file_seq) || die; close(LOCK); alarm(0); alarmって使った事無いんだけど、この場合目覚まし時計がなると 制御はどうなるのだろう? サブルーチンとかに飛ばす場合は、シグナルハンドラの罠を仕掛け とくのですか? 前例のように $SIG{HUP}=$SIG{INT}=$SIG{QUIT}=\&finish; とか。 |
> そうなんです。私が一応rootにはなれるんですが いいじゃないですか。好き勝手にUNIXの勉強ができるし ;-) その代償として管理してると思えば安いものかと。 > だけど、これ以外はさっき言ったdhcpのログ位です。 ではそのDHCPのメッセージが数回繰り返されたものでしょう。 suでrootになるのを10回連続して繰り返してみてください。 /var/log/messegesには Feb 15 23:28:41 host su: user to root on /dev/ttyp1 という行が10行書かれることはなく、 Feb 15 23:28:41 host su: user to root on /dev/ttyp1 Feb 15 23:28:53 host last message repeated 9 times となるはずです。同じメッセージが短時間のうちに連続して syslog(かな?)に送られた場合は、syslogdが上のように 簡略化したログを残すはずです。 suでrootになるのを10回連続して、次に間違ったパスワードで suしてみると、最後のsuを実行した瞬間に Feb 15 23:28:41 host su: user to root on /dev/ttyp1 Feb 15 23:28:53 host last message repeated 9 times Feb 15 23:28:55 host su: BAD SU user to root on /dev/ttyp1 というログが残ると思います。 ちなみに、リアルタイムでログを監視するにはtail -fが便利です。 > サブルーチンとかに飛ばす場合は、シグナルハンドラの罠を仕掛け > とくのですか? alarmの場合はSIGALRMですね。kill -lを実行するとシグナル一覧が 表示されます。man alarmも参考にしてください。 この例ではいまいちalarmの必要性がないような気がするんですが、 何か理由があるのかなぁ。 |
>前にクラックにあっているサーバーが直ぐ近くに 物騒な話ですね。こうなると再インストールしかないです。 近くのサーバーもやられてる可能性が高いような気がします。 とりあえず/etc/inetd.confの不必要なエントリをコメントアウトして killall -HUP inetd あと/etc/hosts.allow、/etc/hosts.denyでtcpwrapper の設定をするのが吉かと telnetの代わりにsshを使ったほうが心臓に良いです。 たしかtera termを拡張したttsshってやつがあったと思いますが #もう対策されてたならすみません |
やですね〜。クラックされるのは。 ちょっと前に知り合いのLinuxがクラックされてました。 すぐに気づいて、そのとき作成されたらしいファイルを 消したんですが、数日後また同じようにクラックされて しまい、とうとうサーバをFreeBSDに代えてしまいましたとさ。 クラック自体より、どこの穴をつかれたのかがわからないのが 一番恐いですね。 |
どうもです。 いろいろ助言下さってありがとうございます。 >こうなると再インストールしかないです。 もちろん既に、マシンごと新しくなってます。 >クラック自体より、どこの穴をつかれたのかがわからないのが >一番恐いですね。 これが一番恐いのだけど、最近リモートIPもごまかしたり、たまにログでリモ ートのIPがunknownって出る奴が有るのですが、これってどうしてるのでしょ うか? #愚問でしたね。こんな公の場で書けるわけないですね。(^^ゞ >telnetの代わりにsshを使ったほうが心臓に良いです。 >たしかtera termを拡張したttsshってやつがあったと思いますが すいません未対策です。って言うかsshって知りません。(^^ゞ セキュリティー対策の物ですか? messagesの件ありがとうございます、多分LANの中で一台設定不良でネットワ ークを参照できないマシンが在ったので、そいつのDHCPリクエスト失敗が原因 だと思います。 #そういう事にしておこう。(^_^)V ところで、皆さんセキュリティーに関してはどう考えてます? うちのwebサーバーは去年クラックされました。 OSはRedHotの古いバージョン(4.1)で、name,www,smtp,popが実用デーモンで その他いくつかのデーモンが上がっていましたが、前例と同じように管理者が 居なくて、ほったらかし状態。 ログローテーションもしなかったので、97年5月からのmailログが98Mbも一つ のファイルで存在してました。 #その当時Apache1.1がインストールされていたので各種デーモン類のバージ #ョンもかなり古いものだと思います。 ちなみに前のHDの内容は保存してありますが、今の管理者には穴が見つけられ ず、いつか私が解析してやろうと気持ちだけはあります。(^^ゞ #時間がないもんで...と言っておこう。 ちなみにそのサーバーをクラックしたクラチャンが /etc/hosts.allowに開けていったホストIPです。 207.204.247.250 166.93.24.146 209.99.175.1 199.183.24.253 193.164.171.29 199.183.24.253って何処だか分かります? なんとwww.redhat,comですよ! #なさけねーな、RedHatも。(; ;) どうもクラチャンは、RedHatパッケージ関係ではかなりのスキルを持っていた と思っています。 何処かのアンダーグラウンド系掲示板にでも掲載されているらしく、今でもそ のサーバーは毎日のようにアタックされています。 もちろん管理者がラッパーやルータ等で2重3重の制限しているので、接続は されていませんが、前の穴が解からないだけに少し不安です。 webアタックの代表のphf系も独自のCGIでアタックログを取っていますが、こ れって変なんです。 具体的には、1〜2秒間に3回連続でアクセスして行きますが、アクセスホスト が毎回違うんです。 なんとなく何処かのパッケージに入っている、スクリプトか何かを実行すると その中で、ここを攻撃(試験)して、多分その結果をどこかに返すのでしょうね アクセスのタイミングを見るとそんな感じです。 http://ash.or.jp/~joe/hack/index.htm このページで起きたイスラエルからの侵入事件を元に、セキュリティー関係の レポートが載ってます。 ところで/etc/passwdのパーミッションて、root/700にしたら何か問題はあ りますか? |
> #愚問でしたね。こんな公の場で書けるわけないですね。(^^ゞ いや、僕は方法を知らないので…(笑) > セキュリティー対策の物ですか? telnetはタイプした文字がそのままネットワークを流れますが、 sshは暗号化したデータを送るので、パケットを覗かれても大丈夫なのです。 つまりssh=secureなtelnetです。ちなみにrcpのsecure版なども 一緒についてきます(scp)。 もちろんsshクライアント/sshサーバが必要です。FreeBSDなら portsで一発インストールできましたが、Linuxにもパッケージが 用意されてるんじゃないでしょうか。 sshをインストールできたら、telnetポートは閉じておきましょう。 > ところで/etc/passwdのパーミッションて、root/700にしたら何か問題は > ありますか? ls、finger、whoなどでユーザ名が表示されないことはありませんか? # OSにもよるでしょうが、/etc/pwd.dbなどが読めればOKかもしれません。 しかし、一般的には/etc/passwdを700にするのは変です。 パスワードエントリを隠したいということなら、shadow passwordを 導入しましょう。Linuxなら/etc/shadowだったかな? # Linuxはデフォルトでshadow化されていないのが不思議。 # ディストリビューションにもよるのかな? |
みなさんの話を聞いてるとびびってきました(苦笑) クラッカーに目つけられると安眠できなさそう インストールしたらすぐtripwireいれたほうがいいのかな Red Hatって見つかった穴を公開するらしいですよ たぶん新しいの買えや(笑)ということなんでしょうけど >Linuxはデフォルトでshadow化されていないのが不思議。 そう言えばIRIXは最近まで・・・ >IPがunknownって出る奴が有るのですが これ何なんでしょう 知りたい(爆) >管理者が居なくて、ほったらかし状態。 仕事やりながら管理するってきびしいと思いますよ |
こん**は。 >>管理者が居なくて、ほったらかし状態。 > 仕事やりながら管理するってきびしいと思いますよ 本来私の管轄では無いので最近本末転倒してますが、他に管理している 人間がいないので、勉強がてらにいろいろな情報を物色しています。 #アー目が痛い! >>IPがunknownって出る奴が有るのですが > これ何なんでしょう 知りたい(爆) ねらわれたサーバーのsecereに、 Feb 8 04:15:36 ns in.fingerd[2730]: refused connect from unknown こんな風に出ます。 ここ1ヶ月のfingerだけで66回もです。 #最近telnetのアタックは減りましたがいまだにphfアタックは...。 セキュリティー関係と、通信パケットについて詳しく解説指定ページが ありましたので紹介させていただきます。 http://www.3ware.co.jp/security/index.html ここで詳しく説明されてます。常時接続の方の参考までに。 このサイトにはLinuxについても詳しく書いてあり、前から疑問だった 起動時の設定ファイル(Winで言うところのAUTOEXEC.BATかな)も分かった し、ずいぶん勉強になりました。 >Linuxはデフォルトでshadow化されていないのが不思議。 近いうちに実験用サーバーに実装する予定です。 #できるかな〜、その時はまた教えて下さい。(^^ゞ >sshは暗号化したデータを送るので、パケットを覗かれても大丈夫なのです。 telnetの23はルーターで塞いであるし、LAN内でのアクセスなんであまり必 要性が無いですが、これも時間が出来たら試験的に導入してみたいですね。 |
>Feb 8 04:15:36 ns in.fingerd[2730]: refused connect from unknown 見たことないです。 #といってもアタック(スキャン)自体あまりないから知らないだけ パケット覗いてみては? >telnetの23はルーターで塞いであるし ・・・内部犯行・・なんて無いですよね(笑) |
どうもです。ABCDEFGさん。 >・・・内部犯行・・なんて無いですよね(笑) ははは、それは無いです。 mad.leenux.com ってとこと ugly.bastard.co.uk の2ヶ所から 進入してます。 そのクラチャンですが、ちょいと弄られた前のディスクの中を覗いて見たら、 隠しディレクトリに、いくつかのクラックソフトをお土産においっててくれ たみたい。(^^ゞ #俺ホントはこんなことやってる暇無いんだけどなぁ... #まいっか! 入られてた時、マシンに負荷が掛ってるので、おかしいなって皆で言って、何 度もリブートかけていたんです。 それでも重いので変だと思い、最近作られたファイルを探したところ発見し ました。 どうもそのマシンで、あちこちのネームサーバーを探してたみたいで、その 履歴が残っていました。 皆さんも気を付けて下さい、自分のマシンだけならフォーマットするとか出 来ますけど、踏み台されちゃ悔しいですからね。(^^ゞ でわでわ。 |
どうもごぶさたしてます>お師さん で、過去ログその後ですが…すみません、諦めました。 理由その壱 メインでNETに繋がってるのがMacなわけなんですが、 こいつのtelnetアプリケーションがAppleScript等に対応しない物ばかりで telnetでの自動化は不可能という結論に達しました。 理由その弐 ブラウザからの起動も考えたんですが、CPUをG3化してあるせいなのか、 2台繋いでいるHDDの片方を認識しないまま起動することが多く、 起動するHDDが特定できない、もしくは手動で再起動しないとOSが起動しないことすら ある状態です。 スクリプト自身はきちんとサーバー上で動いているんですが、 どうにも自動化のメドが立ちません。 いろいろご指導いただいた上になんなんですが、ここで正式に 過去ログ作成を断念したことをお伝えする次第です。 |
はじめまして。みなさん、UNIX超初心者の者ですがよろしくおねがいします。 実は今年からUNIXを習っているのですが、全然分かりません。特にShellの プロセスのあたりというか、スタンダードインプット、アウトプット、 エラーとの兼ね合いとか。。???? だれか、教えて頂けるか、良いウエブや本を紹介して頂けませんか? よろしくお願いします。 メールでもOKです。non100@excite.co.jpです。 |
> ここで正式に過去ログ作成を断念したことをお伝えする次第です。 それは残念。過去ログうんぬんより、いままでプログラムを書いたのに 結局うまくいかないとわかったときは がっくりきますね。 > Shellのプロセスのあたりというか、スタンダードインプット、アウトプット、 > エラーとの兼ね合いとか。。???? え〜、もうちょっと範囲をしぼっていただけると答えられるかもしれませんが、 範囲が曖昧なので…(さすがにそのあたりを全部説明するのはつらいです)。 「どこがわからないのか自分でもわからない」という状態なら、 The UNIX Super Text(上・下) 技術評論社 上下巻それぞれ3500円くらい がいいんじゃないでしょうか。 古いし(6年くらい前かな)、値段が高い、と評する人もいますが、 僕はお勧めします。ただし買うのは上巻だけでいいと思います。 |
はじめまして。 初歩的な質問なのですが、UNIXのコマンドで 現在のディレクトリ以下のファイル(下位ディレクトリ内のファイル含む)の中から ある特定の拡張子だけ、検索するというコマンドってありますか? ぜひご教授ください。 |
カレントディレクトリ以下から、拡張子が txtというファイルを 探したいなら、 % find . -name \*.txt カレントでなく、/hoge以下を探したいなら、 % find /hoge -name \*.txt などがあります。locateが使えるなら、 % locate .txt| grep .txt\$ | grep `pwd` ってのもアリかも。 # http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#find # http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#locate |
68userさんありがとうございました。 早速試してみます。 これからもなにかありましたらよろしくお願いします。 ではでは! |
はじめまして。 今回久しぶりにTELNETにログインしたら、 FreeBSD 2.2.7-RELEASE (BASE) #2: Wed Dec 23 11:45:56 JST 1998 というメッセージがでてきました。 超初心者のうえ、久しぶりなので、何がなんだか分かりません これは、そのままにしておいても大丈夫なものなんでしょうか? |
それは、「このOSはFreeBSDだよ」というただのメッセージです。 ついでに書いておくと、FreeBSD2.2.7Rで、カーネルコンフィグ ファイルはBASEで、これまで二回カーネルの再構築をして、 最後にカーネルを作り直したのは Dec 23 11:45:56 JST 1999 っつーことです。 さらに蛇足ですが、このメッセージは /etc/motd に 書かれており(ブート時に毎回作り直されるのかな)、 login(1)が /etc/motdを表示します。 # see login(1),motd(5) |
そうなんですか。 安心しました。どうもありがとうございました。 |
ご無沙汰です(^^; いま、BSD版 touch 互換?のWin32版 touch をDelphiで 作ってるんですが、BSD版の仕様がよくわからないので、 教えて頂けますでしょうか? BSD版 touchは、どのような場合に標準入力からファイル名を 読み込むのかがよく分からないのです(BSDじゃないけど、 ウチのHPのサーバーでも、CGIからじゃ確認できないのです…)。 % echo file | touch - とすれば、file が現在日時に設定されますよね…? それ以外に、引数にファイルを指定しなかった場合も 標準入力を読むのでしょうか? また、たとえば、 % touch とした場合に、キー入力待ち状態になるのか、それとも % echo file | touch などとした場合にのみ標準入力を読むのでしょうか? >最後にカーネルを作り直したのは Dec 23 11:45:56 JST 1999 >っつーことです。 なんか、はじめて訪問して来た客に、家の事情を何から何まで 事細かにおしゃべりするおばーちゃんみたいな…(笑い) |
> % echo file | touch - > とすれば、file が現在日時に設定されますよね…? いえ、そうはなりません。FreeBSDのtouchは、STDINを 全く読んでないようです。 % touch usage: touch [-acfm] [-r file] [-t time] file ... % touch - % ls -l - -rw-r--r-- 1 user user 0 Mar 11 07:40 - となります。 ちなみに最新のFreeBSDのtouchのソースは http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/touch/touch.c?rev=1.8 にあります。大元はここ。 http://www.freebsd.org/cgi/cvsweb.cgi > なんか、はじめて訪問して来た客に、家の事情を何から何まで > 事細かにおしゃべりするおばーちゃんみたいな…(笑い) いや〜、fjをROMってると、こういうやりとりを見て知識を 得るってことが多いので、暇なときで疲れてなければ 「質問者が求めること+α」を書くようにしてます。 # fjの強者ほど知識はないし、ここを見てる人も少ないので # 自己満足かもしれませんが。 |
追加。SolarisでもFreeBSDと同じ挙動でした。 |
わー! ごめんなさい、書き方が悪かったです(^^; おばーちゃんの件は、68userさんのことではなく、 FreeBSDのメッセージのことなんです。 telnetで接続したら、いきなり、「うちはね、これまで2回改築してて、 最後に改築したのは〜で、基礎工事んときには…」みたいな メッセージが出るんで、これがオシャベリなおばーちゃんみたいだ っていう意味でした(^^; ややこしいコト書いてすいませんでしたm(_o_)m いま、Cソースを頂いてきたので、本編の方は後程… |
こんにちは。はじめまして。いわもとと申します。 UNIX超初心者の私ですが今回crontabコマンドの 使い方について調べるように仰せつかりました。 それでこちらのHPを参考にさせていただいたのですが うまくいきませんでした。とりあえずcrontabファイル (だと思う ユーザ名がファイル名になっていて 中身はHPに書いてあったのと同じようになっていた) は出来たんですが、そこから先がわからないんです。 どうやっても動いてくれません。 これって私が相当バカなんでしょうか?誰かご存知の方 教えて頂けると幸いです。 |
こん**は、いわもとさん。 私も初心者のなので申し訳ないのですが、cronはデーモン(常駐) プロセスなので設定ファイルを修正したら、変更した設定を再読 込させなければいけないですね。 osが解からないですが、私の環境(Linux)では/etc/rc.d/init.dに 再起動用のスクリプトがありますので、/etc/rc.d/init.d/cron.init に start、stopとすれば良いのではないでしょうか。 #ぜんぜんはずしてたらごめんなさい。 ところで何処かのページ上のcron設定解説ページを見て 操作したのでしたらそのURLを教えてもらえないでしょうか。 #68Userさん正解をお願いします。(^^ゞ |
hogeというファイルに、 * * * * * /bin/ls と書いて、crontab hogeとすればcronにデータが登録されます。 この時点で、crontab -l とすると * * * * * /bin/ls と表示されればOK。 で、上の記述だと、1分ごとにlsが実行され、その結果が メールで送られてきます。動作を確認したら、必ず crontab -rで解除することをお忘れなく。その場合も うまく解除できたかどうか crontab -lで確認してください。 > cronはデーモン(常駐)プロセスなので設定ファイルを修正したら、 > 変更した設定を再読込させなければいけないですね。 一般的にcronで実行されるのは、管理用のcron(/etc/crontabとか)と、 一般ユーザ用のcron(各ユーザが勝手に登録するもの)がありますが、 FreeBSDの場合は/etc/crontabを書き換えると自動的に反映されます (1分ごとに書き換えられたかどうかチェックされてる)。 とりあえずOS名と、何をしたらどういうふうに うまくいかないのかを 書くのが解決への早道かと。 > おばーちゃんの件は、68userさんのことではなく、 > FreeBSDのメッセージのことなんです。 あ、なるほろ。了解です。 |
touch の件、ありがとうございました。 FreeBSDのソースも、助かります。 これは、今後も大いに役に立ちそうです(多謝) >いえ、そうはなりません。FreeBSDのtouchは、STDINを >全く読んでないようです。 これは全く意外でした(^^; ソースも見ましたが、全く読む気はないみたいですね。 うーん…なんでだろう? ひょっとして、touch *.txt で該当ファイルがなかった場合に touch に argv[1] が渡らないのかな?…と思ったのですが、 ちゃんと *.txt が渡ってました…(^^; なぜ、標準入力にこだわるかというと、MS-DOSの場合、 ファイル指定のメタキャラクタに * と ? しか使えないので、 csh風の glob match をサポートした ls コマンドを利用して ls *.{c,h} | touch みたいな使い方をしようと思っていたのです。 とりあえずは、touch - で、ちゃんとファイル - を作成する ようにしました(笑い) でも、ファイルを指定しなかった場合は… もう少し考えてみます(^o^;ゞ |
> ひょっとして、touch *.txt で該当ファイルがなかった場合に > touch に argv[1] が渡らないのかな?…と思ったのですが、 > ちゃんと *.txt が渡ってました…(^^; えっと、これはUNIXの話ですか? UNIXの場合はgrobの展開はシェルが 担当します。*.txtがない場合、 % touch *.txt (touchに限らず全てのコマンド) touch: No match. となりますが、これはシェルがtouchを実行する前に はじいてます。csh/tcshの場合、シェル変数nonomatchを 設定すると、マッチするファイルがなくてもエラーにならなくなり、 touch に *.txtという文字列がそのまま渡されます。 普通、コマンドラインでnonomatchを設定することはまずないですが。 …と、mmさんなら知ってそうなことを書いてしまった。 > MS-DOSの場合、ファイル指定のメタキャラクタに * と ? しか使えないので DOSを離れて久しいのですが(使ってたのはHuman68kですけど)、 DOSってgrobの展開は各プログラムの担当ですよね。そういう ときに便利な関数ってライブラリで用意されてるんでしたっけ。 # char **files; # files = filelist("a:\dir\a*.txt"); # とか。 さて、FF8をやらねば。 |
そうそう、GNUのtouchを参考にするのもいいかも。 http://www.gnu.org/software/software.html TheFileutilsare:`chgrp',`chmod',`chown',`cp',`dd',`df',`dir',`dircolors',`du', `install',`ln',`ls',`mkdir',`mkfifo',`mknod',`mv',`rm',`rmdir',`sync',`touch',and`vdir'. ちょっと見てみた感じでは、こっちもstdinは見てなさげです。 > これは全く意外でした(^^; うーん、でもtouchというコマンドの性質から言って、 stdinを読まないのは自然ではないかと思います。 しかしこうして見ると、GNUってすごくたくさんのソフトを 保守してますねぇ。CVSもGNUだったのか。 |
はじめまして。Asanoと申します。 私のUNIX歴は1年ぐらいの初心者です。 UNIX Userの雑誌のバックナンバー(1995年12月号)を 探しています。お持ちの方で、譲ってもいいよいう人が おりましたら、下記アドレスまでご連絡お願いします。 付録のCD−ROMは無くてもかまいません。 よろしくお願い致します。 E-Mail asanonet@po.anoa.or.jp |
こんにちは。いわもとです。 68Userさん、M.Masudaさん、ありがとうございました。 おかげさまでうまく動かすことが出来ました。 UNIX歴わずか数日の私には本当にありがたい限りです。 今後ともよろしくお願いします。 |
>えっと、これはUNIXの話ですか? あっ、すいません、UNIXの話です。 MS-DOSでは、シェルが展開するようなことはなく、 常にそのままコマンドに引数として渡ります。 >…と、mmさんなら知ってそうなことを書いてしまった。 いえいえ、 >これはシェルがtouchを実行する前にはじいてます。 というのは、全く知りませんでした(^^; 昨日、 for ( i = 0; i < argc; i++ ) printf("%d: %s<BR>\n",i,argv[i]); というようなソースをウチのサーバーでccして test.cgi として、perl CGI内で open(FH,"./test.cgi *.txt 2>&1 |"); という感じで実行してみたら(*.txt は存在しない)、 0: ./test.cgi<BR> 1: *.txt<BR> となったので、以前に「シェルは、マッチしなかった場合に そのままコマンドに渡す」という話を聞いたことがあるのを 思い出して、あんな風に書いたのです。 (なお、ウチのHPのシェルは、sh のようです(^^;) ちなみに、この test.cgi をCGIとして実行すると、 0: wrapper_daigaku なんてのが返って来ました。daigakuってなんだぁ…? >DOSってgrobの展開は各プログラムの担当ですよね。 そうですが、MS-DOS流の * や ? は、そのままファイル検索 システムコール(FindFirst)に渡すことで、マッチする ファイル名を返してくれます(2番目以降はFindNextで順に 呼び出します)。 >そういうときに便利な関数ってライブラリで用意されてるんでしたっけ。 正式に用意されているって話は聞いたことありませんです。 フリーのライブラリを探せばあったのかな…、少なくとも 定番というのもなかったと思います。 ただ、私が昔パソコン通信(PC-VAN)で覗いてたSIG(フォーラム) では、みんな、ツールのソースをPDSとして公開してたので、 誰かがDOS版findを作ったら、この中のcsh風glob matchの Cソースを利用して、他の誰かが別のツールを作ったりとかは してました。 >files = filelist("a:\dir\a*.txt"); これは、上のFindFirstとFindNextを使って簡単に実現できるので、 ライブラリとしてあるかどうかは知りません。 でも、"a:\{dir,f*}\[ab]*.txt"を解釈するようなものは、 何かのソースから取ってきて自由に利用可能でした。 もっとも、MS-DOSの世界では、フリーウエアのソースは 普通未公開だし、NiftyではPDS自体が毛嫌いされてた みたいだから、こういうことは一般的ではなかったかも知れません。 んな訳で、Win32版でもそういうライブラリがあるのかどうか 知らないし、ましてDelphiのObjectPascalでそういうものが ある雰囲気もあまりしないので(regexpはあるみたいです)、 今回はgetoptから全部手作りでした(^^; >そうそう、GNUのtouchを参考にするのもいいかも。 覗いてみます。 FreeBSDのサイトもそうですが、ネット上で古いバージョンも 含めて全部公開されているんですね。やっぱ、こういう風に ソースに自由にアクセスできるUNIX環境は羨ましいです。 >うーん、でもtouchというコマンドの性質から言って、 >stdinを読まないのは自然ではないかと思います。 何か勘違いしてるのかなぁ(^^; 例えば、ファイル名を引数にとって、そのファイルを処理する コマンドcommand がある場合に、ls ... | command とか find ... | command で引数ファイルを渡すのは普通では ないのでしょうか? 確かに、ls * | cat だと、ファイル名が素通りするだけですね… |
>FreeBSDの場合は/etc/crontabを書き換えると自動的に反映されます >(1分ごとに書き換えられたかどうかチェックされてる)。 http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#crontab ここに書いてありましたね。(^^ゞ すいませんでした。 #確認せずに発言は止めましょうの見本みたいでしたm(_ _)m ところで、あるアカウントに来たメールをきっかけにスクリプト やCGIを実行させるってのはどうすれば実現できるのでしょう? forword辺りに仕掛けをするんでしょうか? #download.cgiの件は解決しましたでしょうか? |
> 以前に「シェルは、マッチしなかった場合に > そのままコマンドに渡す」という話を聞いたことがあるのを > 思い出して、あんな風に書いたのです。 おろ、確かにそうなりますね。以下は全て推測ですが、 shでもcshでもコマンドラインで % ls *nonexistent ls: No match. と表示するのはシェルの役目で、このときlsは実行されていないはずです。 しかしperlから、 open(IN,"ls *nonexistent 2>&1 |"); print <IN>; とすると、「No match」ではなく、 ls: *nonexistent: No such file or directory と表示されます。これはおそらくperlが sh -c 'ls *nonexistent 2>&1' を実行しているからです。shの仕様としては、-cに続いてコマンドを指定すると、 マッチしなかった場合でも、コマンドにワイルドカードをそのまま渡している ようです。 >>files = filelist("a:\dir\a*.txt"); > これは、上のFindFirstとFindNextを使って簡単に実現できるので、 調べてみたら、Human68kにもfilesとnfilesというライブラリがありました (機能は同じ)。そういえば昔ファイラーを作ったとき使った記憶があるなぁ… > ls ... | command とか find ... | command で引数ファイルを渡すのは > 普通ではないのでしょうか? ファイルの内容を標準入力から受けるのはよくありますが、 ファイル名を標準入力から受け取るのは普通ではないと思います。 なぜなら、 % find . -name \*hoge -exec touch {} \; で簡単に実現できるからです(他にはxargsを使うとか)。 > ところで、あるアカウントに来たメールをきっかけにスクリプト > やCGIを実行させるってのはどうすれば実現できるのでしょう? > forword辺りに仕掛けをするんでしょうか? procmailを使うことが多いようですね。 # http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#procmail これを見た人が理解できるかどうか知りたいので、詳しくは書きません。 これを読んでわからなかったら、どの辺がわかりにくいか教えてくださいね。 > #download.cgiの件は解決しましたでしょうか? ただ単にContent-Dispositionというものが使えるものかどうか 知りたかったので、特に困っていたわけではないのです(^^; > UNIX Userの雑誌のバックナンバー(1995年12月号)を > 探しています。 ありますけど、お譲りするのはちょっと…(他人のなんで)。 これこれの特集のこの点を知りたいということでしたら、簡単で いいなら抜粋してここに書いてもいいですが。 |
ありがとう68Userさん。\(^^)/ >procmailを使うことが多いようですね。 ># http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#procmail このへんはカキコした後に見て、この辺の解説でできるかなぁと 思っていた所です。 ちょっと試してみましたが、私のしたいことはprocmailを使わなく ても .forwordに |exec command で出来そうです。 具体的には、あるアカウントにメールを出すと、現在のサーバー 状況を出力させる様な事をさせたかったのです。 .forwordだけで、procmailを使わずにそのままスクリプトが実行で きたのでその方向で試してみたいと思います。 その手順では、何か不具合が予想されますか? >これを見た人が理解できるかどうか知りたいので、詳しくは書きません。 私は、スクリプトで処理しようと思っていたので、procmailの解説 をよく見ていませんでした。(^^; 良く読めば解りますヨ。 環境のない人には全然解らないだろうけど、解説内容を自分で試す 事が出来れば、動作が解るでしょう。 一つ気づいたのですが、超大作のUNIX解説ですが一部だけを印刷し ようとすると、カット&ペーストしなければならないので、コマン ド別のページが在るといいかも... #贅沢言うなって....すいませんm(_ _)m あとメタキャラの解説なんて在るとうれしいかも ついでにもう一つ。 正規表現はperlから勉強した(進行形)のですが、シェルとはどのく らいの違いがあるのでしょうか? |
>と表示するのはシェルの役目で、このときlsは実行されていないはずです。 ふむふむ、勉強になりますですm(_o_)m >shの仕様としては、-cに続いてコマンドを指定すると、マッチしなかった >場合でも、コマンドにワイルドカードをそのまま渡しているようです。 なるほどー、生でunixに触れないので、このヘンの微妙なところが よく分からないのです(^^; >ファイルの内容を標準入力から受けるのはよくありますが、 >ファイル名を標準入力から受け取るのは普通ではないと思います。 そっかぁ…、filterという概念からは逸脱してるかも知れないですね。 確かに、findも-execで済みますし、ls(csh likeな指定)を使いたい ってのはMS-DOSでの事情でしょうし… MS-DOS版独自のオプション-S を追加して、その場合だけ標準入力を読む ことにします。 ありがとうございましたm(_o_)m ところで、Human68k って、モトローラのチップで動くOSですよね。 X68000でしたっけ? |
> 正規表現は(snip!)シェルとはどのくらいの違いがあるのでしょうか? シェルの ? や * (これらをglobとかワイルドカードと言います)は 正規表現とは大きく違います。が、機能は限られてるので、覚えるのは簡単です。 ワイルドカードの ? は正規表現の . に相当 (任意の一文字) ワイルドカードの * は正規表現の .* に相当 (任意の文字列) ワイルドカードの [ ] は正規表現の [ ] に相当 (任意の文字列) シェルによって少し違いはありますが(例えば csh では、[^a] は「a以外の1文字」 という意味を持たない。shは [!a] は [^a] と同じ意味)、基本的にこれだけです。 ただし、ワイルドカードはファイル/ディレクトリ名を扱うためのものなので、 * は、先頭が . で始まるファイルにはマッチしない (例えば ls * は、.cshrc などのドットから始まるファイルにはマッチしない) ? や * は、パスの区切りである / にはマッチしない ということになってます。 あと、~ や ~username をホームディレクトリへの置換するのも 一応ワイルドカードの機能らしいです。他には {} があるけど 省略(これはglobというより、ただの文字列処理機能かも)。 > その手順では、何か不具合が予想されますか? .forwardに書いただけではログ作成や排他処理をやってくれないです。 ですから、ログや排他処理が不必要だったり、そこらへんの処理を スクリプト側で行っているなら大丈夫じゃないでしょうか。 > コマンド別のページが在るといいかも... http://X68000.startshop.co.jp/~68user/unix/ の ソースを見てみると…検索用FORMが…。 設置しようと思ってるんですが、めんどくさくて進んでません(^^; > X68000でしたっけ? X680x0上で動くMS-DOSクローンなOSです。ハドソン謹製(笑) |
>X680x0上で動くMS-DOSクローンなOSです。ハドソン謹製(笑) コンベンショナルメモリ(640KB)の制限がないんで、 TSRが常駐し放題って噂は聞いてました(^^; しかし、ハドソン製ですか…シャープじゃないんだぁ(驚) >シェルの ? や * (これらをglobとかワイルドカードと言います)は >正規表現とは大きく違います。 シェルのglobも、広い意味では、正規表現と言っていいんじゃないで しょうか。 ドラゴンブックでも、正規表現によるパターン記述の例として、Lexや AWKと共に、シェルのファイル指定を挙げています。 ただ、一般的には、sed, grep, awk, perl等の正規表現とglobは 区別されるようですんで、表現だけの問題ではありますが… |
セガのシェンムーBBSで、ここを紹介しました。 過去ログが充実しているので、多くの人に知ってもらいたいと 思ったからです。勝手にすみません。以前も勝手に紹介したような。 |
UNIX User (1995年12月号)の 特集:UNIXはソースが決め手です。 PART 1:GNUツールで最新のデバッグ環境を整えよう●向川信一 PART 2:GDBを活用してデバッグを効率的に●向川信一 の内容を知りたくて、パックナンバーを探していました。 Solaris2.6のマシンですが、デバッグ環境構築のノウハウが なく、どこから手をつけていいのやら、わからない状況に あります。簡単な抜粋を書いていただけるだけでも、 助かります。お手数かと思いますが、お願いします。 |
シェルってあまり(globって言うんですか)ワイルドカードの種類が なかったんですね。 やっぱり複雑な事をさせようと思うと、Perlや他の言語で記述する んですね。 例えば日付が変わったら、cronでwebのアクセスログから自分のペー ジヘのアクセスを切り出して、その中の特定ページヘのアクセスの件 数をカウントして結果をメールで送る。 なんて複雑な物は、シェルだけでなく何らかのツールや他の言語を使 ったほうが簡単ってことですね。 #実際にシェルスクリプトでやろうとしたがうまく行かず...う〜ん。 >.forwardに書いただけではログ作成や排他処理をやってくれないです。 ログ作成ってのは説明でのリファイルの事ですか? それと補足質問?ですが、 ^hogeは先頭がhogeで始まる。 hoge$行末がhogeで終わる。 でいいんしょうか? もしそうならPerlの正規表現と同じですね。 #上記が正しいとするとprocmail解説文の hoge$は head_string_hoge #でも hoge でもマッチしませんか??? #ぜんぜんはずしてるかなぁ(汗) いろいろ解かってくると、何でも疑問になってきます。(ワクワク) 実験すればいいのでしょうが、他の方のためにも解説してもらえれば うれしいなっと。(^_^)V #そんなの解からないのはお前だけなんて言わないで〜(汗) >> コマンド別のページが在るといいかも... > http://X68000.startshop.co.jp/~68user/unix/ の 最近namazuっていう検索エンジンの名前をあちらこちらで聞きます。 これを使ってみたらどうでしょうか。 #最近本業よりシェルいぢってる方が面白くなっている自分が恐い... |
> ログ作成ってのは説明でのリファイルの事ですか? いえ、ただのログです。例えばこんなの。 From owner-xxx@xxx Fri Mar 12 01:56:59 1999 Subject: [xxx 1251] xxx 350 =?ISO-2022-JP?B?GyRCJFgkTkRJMkMbKEI=?= Folder: /home/xxx/script/deliv 2321 From all-request Mon Mar 15 23:18:17 1999 Subject: [xxx 377] xxx will be rebooted. Folder: /usr/sbin/sendmail -oi j5306050@cs.gunma-u.ac.jp 1520 From all-request Mon Mar 15 23:38:23 1999 Subject: [xxx 378] Re: xxx will be rebooted. Folder: /usr/sbin/sendmail -oi j5306050@cs.gunma-u.ac.jp 1691 > ^hogeは先頭がhogeで始まる。 hoge$行末がhogeで終わる。でいいんしょうか? あってます。 > procmail解説文の hoge$は head_string_hoge も hoge でもマッチしませんか? * ^Subject: hoge$ は、ヘッダに「(行頭)Subject: hoge(行末)」という行があれば commandに渡されるわけです。ヘッダ名(この場合はSubject)の 前に ^ がありますから。 # 本当は * ^Subject: *hoge$ にしなきゃいけないんだけど > 最近namazuっていう検索エンジンの名前をあちらこちらで聞きます。 namazuを使うなら、1つ1つのコマンドを別ファイルにしないと いけない(というか、そうしないと使う意味がない)んですよね〜。んが、 % quota Filesystem usage quota limit timeleft files quota limit timeleft /raid 14794 15000 20000 2529 3000 4000 ファイル数の余裕が…ない…(^^; > 例えば日付が変わったら、cronでwebのアクセスログから自分のペー > ジヘのアクセスを切り出して、その中の特定ページヘのアクセスの件 > 数をカウントして結果をメールで送る。 これくらいならシェルスクリプトでもできますよ。 日付が変わったら、という部分はcronにまかせるとして、 #!/bin/csh -f set log="/var/log/httpd-access.log"; # ログファイル名 set yeasterday_log="/tmp/yesterday_log.$$"; # テンポラリファイル grep `date -v-1d "+%d/%b/%Y"` $log > $yesterday_log # 前日の日付でgrep set top_count = `grep -E 'GET /~$USER/(index.html)? ' $yesterday_log | wc -l`; set unix_count = `grep -E 'GET /~$USER/unix/(index-unix.html)? ' $yesterday_log | wc -l`; echo "top page $top_count hit." echo "unix page $unix_count hit." rm $yesterday_log とか。stdoutへの出力はcronによってメールで送られてきます。 でもまぁ、さらに機能を付け加えていこうと思っているなら、 perlでやっちゃった方がいいんでしょうけど。 > セガのシェンムーBBSで、ここを紹介しました。 どもども。リンク・URL紹介・引用はご自由にどうぞ。 > コンベンショナルメモリ(640KB)の制限がないんで、 > TSRが常駐し放題って噂は聞いてました(^^; でも12MBの壁があって(アドレスレジスタが24bitだから)、それを 越えるのにはDOSと同じようなことをしてました。まぁ、全盛期には それが問題になるほどメモリを積めませんでしたが。 > シェルのglobも、広い意味では、正規表現と言っていいんじゃないでしょうか。 ん〜どうなんでしょうね。僕は目的の違い(globはファイルにマッチさせるもの) と、文法・機能の違いから、別物として説明するようにしてます。 でも同じものと言った方が初心者にわかりやすいなら、それはそれで いいと思います。 > Solaris2.6のマシンですが、デバッグ環境構築のノウハウがなく、 特集は、gdbのインストールと、gdbの使用法の2本立てですが どちらがお望みですか? すいませんがお返事は *メール*でお願いします。 |
>でも12MBの壁があって(アドレスレジスタが24bitだから)、 MS-DOSしか使ってなかった頃の最大実装は8MBだから、 私の場合、壁のうちに入らないなぁ…(^^; >でも同じものと言った方が初心者にわかりやすいなら、それはそれで >いいと思います。 私の経験なんですが、昔、正規表現といえばsedやgrep(その頃はawkも perlも知らなかった)で使うアレのことしかないと思い込んでたことが あって、誤解を招く文脈で「正規表現」という言葉を使って指摘された 覚えがあるんです。 難しい話でよく理解できなかったために、正確には覚えてないんですが、 文脈自由文法や正規文法とかの話に割り込んで、何か発言をしたのだと 思います(^^; だから、これらを区別して説明するのはいいと思うのですが、globも 正規表現の一種又はサブセット?だということも含めておいた方が、 初心者の方にも後々のためにはいいんじゃないかなと思ったのです。 とは言うものの、議論するほどの問題ではないので、この話題は以降 無視して頂いて結構です。 |