|
>> $SIG{HUP}=$SIG{INT}=$SIG{QUIT}=\&finish; $a=$b=$c=100; print "$a,$b,$c\n"; の結果は100,100,100となります。つまり$a=100;$b=100;$c=100;と 等価なわけですね。そもそもperlの(Cもそうですが)代入文自体は 値を持っています。 print $a=100; の結果は100です。また=(イコール)演算子は右から順に 評価されますので、 $a=$b=$c=100; は $a=($b=($c=100)); と等価です。というわけで、 $a=($b=($c=100)); ↓$cに100を代入 $a=($b=100); ↓$bに100を代入 $a=100; という流れになっているはずです(たぶん)。 シグナルハンドラですが、perl4なら $SIG{HUP}="finish" ですけど、この書き方では 関数finishが別ファイルにあった 場合(それをrequireやuseで使っている場合)は呼べません。 というわけで、\&finishと書くわけです…と青ラクダ本に 書いてありました(^^; あとlocalとmyは local $local=1; my $my=2; &f; sub f { local $local=3; my $my=4; print "f: \$local=$local\n"; print "f: \$my=$my\n"; &g; } sub g { print "g: \$local=$local\n"; print "g: \$my=$my\n"; } 実行結果: f: $local=3 f: $my=4 g: $local=3 g: $my=2 ということでどうでしょう? > IEとネスケの互換性の無さにあきれています DHTMLはわかりませんが、Javascriptを使っていて、 Winでは動くのだろうけど FreeBSD+NetscapeNavigatorでは エラーが出まくるようなページが たくさんあるので、 こんな変なものには絶対手を付けまいと誓いました(笑) というわけで僕はJavascript、DHTMLに関しては全くの素人です(^^; |
|
詳しい解説ありがとうございます。 いまいちおバカな頭で理解できないけど、 local と my の違いは、 サブルーチンからさらにサブルーチンに呼ばれた時に。 local = 前のルーチンの値を保持する。 my = 最初のサブルーチンを呼ばれた時(定義した時)の値を示す。 と、解釈していいのかなぁ? もしそうなら、具体的に使う時は再帰呼び出しの様な使い方を した時に違いが出る。ということでしょうか? それならmainルーチンから普通にサブルーチンを呼び出した時 (初期化ルーチンの様な)さらにルーチンを呼び出さなければ、 同じ結果ですね。 #localやmyで指定されたサブルーチン内の変数に当てられた分の #メモリは、そのルーチンが終了すれば開放されるのだろうか? >$a=$b=$c=100; は理解できました。 やっぱBASICが最初だと、Perlの構文は簡単に記述できるけど、 理解に時間がかかる!、単におバカなだけだったりして((((^^; >というわけで、\&finishと書くわけです…と青ラクダ本に 何ページに載ってます? よく言う青ラクダ本は持ってますが、あんまり読んでると眠く なるので、必要な部分だけ拾い読みしてます。(^^; #にしてもラクダ本って、何が何処に書いてあるのか解かりづら #い...、しかもたまに書いてある英語のジョークが、真剣に読む #と腰を砕くし....(; ;) 私は、恥ずかしいけど請け負いでホームページ製作をしてるんで すが、製作作業と勉強に掛る時間が同じ位です。(>_<) >こんな変なものには絶対手を付けまいと誓いました(笑) すいませんこんな変なもの作ってます(爆) Javascriptは、クライアント側のプログラムなんで、アクセス環 境で動いたり動かなかったりなので、大手サイトやアメリカのH サイトで使用している物を、見ながら使ってます。 これは無断コピーの意味ではなく、「沢山のアクセスのあるサイ トで使われているコードはエラーが少ないだろう」を前提にして ます。もちろんそのまま使うのではなくコマンドの使われかたを 流用するだけだけど。 一応ネスケとIEは、3と4のバージョンで動作確認しながら作 ってますが、他のOSは環境が無いのでどうにもならないし..。 私のページも、68userさんの環境からアクセスすると、最悪かも しれない。(^^ゞ 暇なら来た時BBSに書込みでもしていって下さい。 |
|
ちょっと横ヤリです(^o^;ゞ local も my も、その宣言位置から、これを囲む最も内側のブロックの最後までが有 効範囲であるという点は同じです。ただし、この「ブロックの最後まで」というのが、 localの場合が時系列的に判断されるのに対して、my はスクリプトの見た目上のブロッ クの階層構造で判断されます。 つまり、my は、C言語などと同じで、ブロックの異なる階層に同じ名前の変数が my で宣言されている場合、その変数が現れた位置の最も内側のブロックで宣言されたも のが参照されます(ブロックスコープ)。 これに対して、local は、LISPなどと同じで(これはちょっと?)、系列や階層が異 なるブロックに同じ名前の変数が local で宣言されている場合、プログラムの実行に 伴って、この実行のステップがどのブロック内にあるか(また、どのブロック内から 呼び出されたか)ということによって有効範囲が判断され、既に有効範囲を外れたも のを除いて、現在有効である最も最近宣言されたものが参照されます(動的スコープ)。 なお、自分自身を呼ぶだけの単純な再帰呼び出しでは、myもlocalも変わりないと思い ます(たぶん)。 ただ、perl4の解説では、localをループ内で使うと、ループのたびにスタックが消費 されると書いてあったのですが、perl5ではこの説明がなくなってました。なんでかな ぁ…? a=b+c などは、一般のプログラム言語では文(代入文)となりますが、Cやperlなどで は単なる式となります( = は b+c の値を返すだけの演算子で、副作用としてこの値 を a に代入します)。で、どちらの場合も = の右側には式が書けるので、Cやperlな どの場合にのみ x=(a=b+c) というような記述が可能になります。また、= は右結合の 演算子なので、68userさんの仰るように ( ) が不要になります。 |
|
手元の青ラクダ本では、6.2.1 シグナル(P.389)に書いてありました。 あとmmさん、どうもです。 ああ、もうちょい長く書きたいけれど、風邪がつらいです。 時期が時期だけにインフルエンザかなぁ…。発熱・頭痛・ 体の節々の痛み・せき、などなどフルコースです。 というわけで、今日はこの辺で…。 |
|
あっ、おだいじに>68user さん …のいぬ間に、ちょっと訂正(^^; 副作用という用語は、単純な代入式では使わないようです。 また、「= は b+c の値を返す」と書きましたが、正確には a に代入した値を返すようです。 つまり、a と b+c の型が違う場合は、a の型になるそうです。 |
|
う〜ん.... やばい!あたまが... ばくはつしそうぅ... Perlだけでも、CぢゃなくてBASICから入ったので混乱してるのに、 やれJavaScriptだ、DHTMLだと私の頭はいま、知恵熱で300度位です。(笑) もう少し時間を掛けて、勉強してみます。(>_<) mmさんありがとう。 #名前が似てますねぇ(^_^)V ここの常連さんは、レベルが非常に高いのでお勉強には最適です。 言い訳だけど、青ラクダ本はホント辞書の様なので、初心者には 何かの事をさせたい時に、それがどこに書いてあるのか探すのが 一苦労です。(国外のジョークはそれを理解するのにエネルギーが 必要なので、訳者に削除して欲しいと思うのは私だけ?) やっぱ一度、全部を時間を掛けて読破しないと..... う〜ん時間が無い... 誰か一日を30時間にするライブラリ知りませんか?(爆) ちょっと忙しくなってきたのでしばらく来ないかもしれないけど しばらくしたら、またわからない所教えて下さい。>ALL それでは。 68userさんお大事に! |
|
ちょっと変な質問ですが、解かれば教えて下さい。 IE2(win)とApache/1.2.6なんですが。 サーバーネームは、www.web.domain.co.jp バーチャルでは、 www.damain.co.jpです。 サーバーの設定は、バーチャルをメインのwebとして使用していま す。つまり一つのIPで2つのwebを運営してます。 なにが起こるかというと、IE3,IE4,ネスケ3,ネスケ4で、 www.domain.co.jpにアクセスすると、コンテンツ内容は正常に www.domain.co.jpで設定した内容を返すのですが、IE2のアクセス の時だけ www.web.domain.co.jpに指定した内容を返します。 関係無いかもしれないですけど、hostコマンドで、2つのネームを 叩くと同じIPを返します。 今度は、そのIPを調べるとwww.web.domain.co.jpを返します。 ネーム解決は、ドメイン名→ネームサーバーにIPを問い合わす→ TCPの通信はそのIPで行なう。(解釈が違ってたらごめんなさい) この際に、もしかしてIE2は単純にIPの指すサーバーにリクエスト を発行してドキュメントを取得する。 推測ですがこういう手順なら納得いきます。 現にIPをhostコマンドで調べると、www.web.domain.co.jp を返し ます。 でもそんなことあるのでしょうか、もしそうならIE2はバーチャル サーバーのドキュメントを参照できない事になります。 サーバーの設定がが悪いのか、IEが悪いのか、それともネーム解決 が悪いのか私には解かりません。(^^ゞ もしこの現象が解かれば教えて下さい。 サーバー設定が原因でありませんように...アーメン(^^) |
|
>IE2のアクセスの時だけ www.web.domain.co.jpに指定した内容を返します。 私は、Apacheはよく知らないので、68userさんの方が専門だと思いますが…(^^; 寝込んでらっしゃるかも知れないので…、とりあえず、 ↓の「さらなる改善点・バーチャルホストに対応」が参考になるんじゃないでしょうか。 http://X68000.startshop.co.jp/~68user/net/http-5.html 原因は、IE2 だけが Host: ヘッダを送ってないということかな…? Apacheにとっては、ブラウザがwww.web.domain.co.jp と www.damain.co.jp の どちらで接続して来たかの区別はないハズです。ただ、ブラウザから送られて来る HTTPヘッダが Host: www.web.domain.co.jp Host: www.damain.co.jp のどちらになっているかで、送り返すページを区別しているのだと思います。 IE2が使えるのなら、一度送信ヘッダを調べてみてはいかがでしょう。 ↓で環境変数を調べて、HTTP_HOST がちゃんと設定されているかどうかを見てみて下さい。 http://X68000.startshop.co.jp/~68user/Cgi-room/printenv.cgi それから、my と local の件ですが、perl5 しか使わないというのであれば、 local は忘れてもいいんじゃないでしょうか( local は古いバージョンとの 互換性のために残ってるだけだと思います)。 ↓でブロックスコープの基本が理解できるんじゃないかなぁ…? Algol系の言語(Pascal,C,awk,perl,Java,JavaScript..)の有効範囲の基礎に なると思います(たぶん(^^;)。 $a = 0; { my $a = 1; { my $a =2; { my $a = 3; print "$a\n"; } print "$a\n"; } print "$a\n"; { my $a = 666; print "$a\n"; } print "$a\n"; } print "$a\n"; ↓実行結果です(なお、この場合は、myをlocalに替えても同じです)。 3 2 1 666 1 0 >やっぱ一度、全部を時間を掛けて読破しないと..... えっ? 私は、全然読破してませんです(^^; 参照用と、項目別にその部分だけを読んでます。 >#名前が似てますねぇ(^_^)V すいません、面倒なんでイニシャルの mm にしてしまってます(^^; ★再度訂正(^^; LISPが動的スコープと書きましたが、Common Lisp は動的はありませんでした。 でも、確か動的スコープの Lisp もあるハズです(^o^;ゞ |
|
★再再訂正(^^;;; JavaScript の var って、ブロックスコープじゃないんですね。 試してみたら、単に関数内でローカルなだけでした(^^; それと、awk も、仮引数リストの変数が関数内でローカルなだけで、 これも関係ありませんでした(^^;; マジメな話に慣れてないので、訂正が多くってスミマセンですm(_o_)m |
|
どもども。なんとか熱も下がったのですが、もうちょい安静にしときます。 > あとlocalとmyは > (snip!) > ということでどうでしょう? 実は言葉でうまく説明することができなかったので、 サンプルソースでごまかしたというのはナイショです(笑) M.Masudaさんからメールをいただきましたが(500エラーで 書き込みできなかったそうで)やはり >> IE2はバーチャルサーバーのドキュメントを参照できない事になります。 ということのようですね。 メールからの引用ですが、 > 「もうIE2なんて使ってる人いないよ」と言っても、それを実現して > くれなきゃ困るなんて言われるんで、とほほ状態です....。 社会とは理不尽なところですね(^^; ところでM.Masudaさんのwebですが、奥深くまで入っていったわけ ではないですけど、FreeBSD2.2.7+NC4.04で、Javascriptのエラーはでませんでした。 > 私のページも、68userさんの環境からアクセスすると、最悪かも > しれない。(^^ゞ というわけでご安心を。まぁ もしエラーになったとしても、minorityの 宿命ということであきらめてます。 # 別にわざとエラー起こしているわけではないですし。 |
|
500エラーで書けなかった内容です。 ====================================== どうもありがとう。影の68userさん(^^)/ ブロック...そう今日読んでたとこに有りました。 ああいった使い方は、Cとかに多いみたいですね。 なんかPerlて、底無し沼の様に奥が深くって、ちょっとビビッてま す。(笑) 個人的には、プログラミング好きなんでいろいろ試したいし、構文 の柔軟さは、すごくうれしい!\(^O^)/ だけど、ホント誰かrequireできる、一日を30時間いや48時間くら いにするルーチン書いてくれないかな(笑) 【86.9%本気】←どっかで見たなぁ Webで使うCGIでする事なんて割と簡単なので、今のレベルで良いか もしれないけど、この業界で生き残るにはちゃんと勉強せねば! と、最近つくづく感じてます。 #最終的にはDBとの絡みが有るだろうし IEの件はちょっと情報が入ったのですが、やはりだめブラウザのレ ッテルが張られているようですね。 まだ確認は取ってないですが、IE2はどうもバーチャルが見れない バグがあるらしいです。(未確認なので信用しないように!) サーバーを管理している人と連絡をとって、いくつか対応策を思案 中です。 「もうIE2なんて使ってる人いないよ」と言っても、それを実現して くれなきゃ困るなんて言われるんで、とほほ状態です....。 JavaScriptも結構面白いんだけど、環境によってブラウザの対応レ ベルが違うので、バージョンが違うとエラーが出たりはよくありま すね。 そろそろインターネット界も仕様をもっと統一してくれると、私み たいにこの世界で生きている人もやりやすいんだけどなぁ。 ブラウザ毎のルーチンって具合で、各ブラウザに合わせたスクリプ トを作ってると、たまに暴れたくなります。(^^ゞ でもこういう場所があって、私みたいな人間にはとても助かります。 なんか愚痴っぽくなってしまいましたがご勘弁を!(^^)/ ==================================================== なんで500エラーが出たんでしょうか? >というわけでご安心を。まぁ もしエラーになったとしても、minorityの >宿命ということであきらめてます。 私のページは、右側の部分(個人的な内容)でスクリプトを多用しています。 特にMusicとFavoriteのなかの部分で使ってますが、くだらないから見る 価値ないかも?(^^ゞ >原因は、IE2 だけが Host: ヘッダを送ってないということかな…? 通信パケットを見たら、全くそのとおりでした。 IE2のバカ! でもこれで、私の範疇では無い事が解かりましたので一安心です。 でわまた。 |
|
@68userさん >500エラーで 書き込みできなかったそうで あれま…そんなことが… >サンプルソースでごまかしたというのはナイショです(笑) ワタシの文章も分かりにくいとは思いますが、実は最初に書いた初版は もっとひどくて、自分で読んでもワケ分からんモノでした(^^; (一応、アレは改定第2版(^^;) JavaScript は、私も、IE/NN間の相違に加えてバージョン間の違いも多いので、 自分でちょっと使うとき以外は、あまり深入りしないようにしてます。 でも、M.Masudaさんの場合は、そんな悠長なコトも言ってられないのかな(^^; @M.Masudaさん >>原因は、IE2 だけが Host: ヘッダを送ってないということかな…? >通信パケットを見たら、全くそのとおりでした。 やはりそうでしたか… いや、もしそうだとすると、IE2ではバーチャルホストにアクセスできない ことになるので、まさかそんなことが?…って思ってたんです(^^; >ブロック...そう今日読んでたとこに有りました。 >ああいった使い方は、Cとかに多いみたいですね。 うーん、あまり積極的に使うことはないような気はしますが…? せいぜいループカウンタくらいかなぁ…、 カウンタは慣習的に i を使うので、不要な衝突を避けるために便利かな…とは思います。 perl の場合は、foreach $i (LIST) の $i がループ内でローカルになりますね。 C++ の for( int i = 0; ... でも、ループの直ぐ外のブロック内にローカルなので、 こういう場合には有用かもしれません。 ただ、Pascalは、Cとかと異なり、関数や手続きを入れ子にできるんで、 親のローカル変数との衝突を避けるために、もっと積極的に利用してるかも知れません。 |
|
>> 500エラーで 書き込みできなかったそうで > あれま…そんなことが… ログを見ると、ここのwwwboard.cgiは最近2ヵ月で20回くらい 500エラーが起こってます。ここは無改造なのですが、ロック用 ディレクトリが残ってしまうと500エラーになってしまうので、 はやいとこ改造せねばいかんなと思いつつ…めんどくさいし〜。 # ログがどんどん増えていくのもなんとかしないと。 > perl の場合は、foreach $i (LIST) の $i がループ内でローカルになりますね。 それは foreach my $i (LIST) とかの場合では?と思いつつ試してみたところ… foreach $i (LIST) でも $i はローカル変数扱いなんですねぇ。知らなかったっす。 |
|
> 500エラーが起こってます。ここは無改造なのですが、ロック用 > ディレクトリが残ってしまうと500エラーになってしまうので、 他のスクリプトで、ロックファイルのタイムスタンプを調べて、 10分以上前なら削除、てな方法がありましたよ。 ># ログがどんどん増えていくのもなんとかしないと。 レスキューさん所みたくページ表示行数を決めて、[次ページ] なんてしたら? #言うだけは簡単なんだよな〜(^^; >でも $i はローカル変数扱いなんですねぇ。知らなかったっす。 自分もさっき実験してはじめて知りました。(*_*) >JavaScript は、私も、IE/NN間の相違に加えてバージョン間の違いも多いので、 >自分でちょっと使うとき以外は、あまり深入りしないようにしてます。 >でも、M.Masudaさんの場合は、そんな悠長なコトも言ってられないのかな(^^; 本来ちゃんとした手続をすればある程度、エラーを減らしたり出来るらしいですが 、私もそこまで出来てませんし今のところクライアントにはわざといろいろと難し い説明で逃げ回ってます。(^^ゞ #でもDHTMLのスタイルシートやレイヤーの方がもっとたちが悪いですよ(互換性で) 厳密な処理を必要とする部分はCGIを利用して、それ以外の処理をJavaScript等に 行なわせる。といったところでしょうか。 ところでmmさんて何者?(^^ゞ >ワタシの文章も分かりにくいとは思いますが、実は最初に書いた初版は >もっとひどくて、自分で読んでもワケ分からんモノでした(^^; >(一応、アレは改定第2版(^^;) 何か執筆していらっしゃるんですか? |
|
BBSに関しては、本気でちゃんとしたシステム作るつもりは ないんで、まぁ…こんなもんで(笑) # 引用の色変えはmmさんとこのBBSのマネ(^^; あとは何かありますかねぇ…。タグの自動補完とか二度書き禁止とか… うーん、いまいちそそる機能がない。 |
|
もいっちょテスト! |
|
ああやっぱりやだなぁ。 メッセージ数はいつでも変更可能にしたいなぁ。 …よく考えずにいじると後悔するという、いい例でした(^^; |
|
>68user さん >はやいとこ改造せねばいかんなと思いつつ…めんどくさいし〜。 ワタシも、flockに書き換えるつもりで、ロック部分をコメントアウトしたんですが、 未だにそのままになってます…(^o^;ゞ > foreach $i (LIST) >でも $i はローカル変数扱いなんですねぇ。知らなかったっす。 こちらは、C++の場合もループ内ローカルだと思い込んでて、 perlの場合と並べて書いてたんですが、調べてみると違ってたので、 ちょっとヘンな文章になってしまいました(^^; >M.Masuda さん >他のスクリプトで、ロックファイルのタイムスタンプを調べて、 >10分以上前なら削除、てな方法がありましたよ。 とほほさんのコードも ($mtime) = (stat("lock/wwwboard.loc"))[9]; if ($mtime < time() - 600) { rmdir("lock/wwwboard.loc"); } となっていて、10分以上前なら削除されるハズなんだけど、 利いてないのかな? >本来ちゃんとした手続をすればある程度、エラーを減らしたり出来るらしいですが >、私もそこまで出来てませんし今のところクライアントにはわざといろいろと難し >い説明で逃げ回ってます。(^^ゞ ウチの場合は、手元にNN4とIE3しかないってのが一番問題になるようです。 でも、NN2,3やIE2,4があっても、やっぱり面倒そうではありますね(^^; >#でもDHTMLのスタイルシートやレイヤーの方がもっとたちが悪いですよ(互換性で) そのヘンは、もはや別物って気がします(^o^;ゞ もっとも、ウチでも簡単なスタイルシートは使ってますが… >何か執筆していらっしゃるんですか? ん? 「第何版」ってのは、単なる冗談です(^o^;ゞ ワタシは、単なるパソコン好きの素人にすぎません(^^; >68user さん ># 引用の色変えはmmさんとこのBBSのマネ(^^; ウチのも、他所のマネです(^^;;; でも、おかげで、空行を入れずに済みます。 >あとは何かありますかねぇ…。タグの自動補完とか二度書き禁止とか… >うーん、いまいちそそる機能がない。 タグの補完は、前にちょっと考えたことがありますが、面倒ですよね。 <TABLE>タグの<TR>とかが入れ子にならないし、引用符の中で ">" を使われると、 正規表現でのタグの切り出しができないし… |
|
> <TABLE>タグの<TR>とかが入れ子にならないし おろ、TABLEまで何とかしようという魂胆で? 志が高いですね(笑) 僕が昔に書いたのは http://X68000.startshop.co.jp/~68user/tmp/tag.txt です。今考えると、element(って言うのかな?)とか全く考えて ないんで、ヘボヘボですね。 うーん、でも真面目に実装したら、 TABLE-TAG := <TABLE> TR-TAG </TABLE> TR-TAG := <TR> [TD-TAG] [</TR>] TD-TAG := <TD> <chars> [</TD>] なんてBNF式に定義して、それに基づいてparseさせなきゃダメなのかしら。 # 昔 yaccとlexで組もうとした事があるけど、エラーから回復させる事が # できずに(=文法エラーにぶつかると止まってしまう)挫折しました(^^; |
|
ちょっと質問!です。 すいませんシェルコマンドのmailって有りますよね。 #みんな使ってます? 私が聞いたmailコマンドの使い方ですが、 ================= mail "送信先のメールアドレス" <ENTER> Subject: "メールタイトル" <ENTER> メール本文、etc. 最後に"."ピリオドのみで終了。 ================= ここまでを、聞きました。 #OSによっては違うかもしれないけど。 http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#sendmail を見ると、sendmailとほぼ同じ操作ですよね。 シェルの場合、sendmailとmailコマンドの違いは、自動的にSubject:等 の文字がエコーされる事ぐらいなのですか? CGIで直接メールを出す場合、レスキューさんのWebFromを参考にすると sendmailに直接書込んでいますが、CGIで直接sendmailに書込みした場合 のエラーメッセージを取得したい時は、sendmail実行時にどんなオプシ ョンを付ければいいんでしょうか? 前にsendmailに実際に転送された手順を表示する様なオプションが ある事を聞いたのですが忘れました。(^^ゞ #man sendmailで調べたら -N dns ってのが怪しいのですが意味が #よく解からん。(ToT) ##前から思っていたけど、英語圏で生まれていたらもっと詳しくなっ ##ていたろうな。だってマニュアルって英語だもん(^^ゞ |
|
>おろ、TABLEまで何とかしようという魂胆で? 志が高いですね(笑) いや、入れ子構造だと決め付けて、作ってみてから気が付きました(^^; >僕が昔に書いたのは http://X68000.startshop.co.jp/~68user/tmp/tag.txt おお、ちゃんと < や > の対応もチェックしてあるんだぁ… なるほど、スタックを使うので、入れ子にならない例外的な処理も やりやすそうですね。 ウチのは、再帰を使ったので、スタックを直接操作できないんです(^^; 以前「とほほ」さんとこに書き込んだんですが、一応 http://www2s.biglobe.ne.jp/~cru/library/junk/tag.txt に置いときます。 例示した文字列では、</hr>の処理が 68user さんのとは違ってます。 ># 昔 yaccとlexで組もうとした事があるけど、エラーから回復させる事が ># できずに(=文法エラーにぶつかると止まってしまう)挫折しました(^^; yacc は私も挫折しました…ただし、68user さんよりはもっと手前でですが(^^; ところで、HTMLみたいなものも、yaccで解析できるんでしょうか? BNFで定義できれば問題ないのかな…? lexの方を独自の切り出しルーチンに替えればいいのかな…? |
|
crontabコマンドについて質問させてください。 あるプログラムAをcrontabで自動起動させたいのですが、 そのプログラムAはCシェルでしか動きません。 そこでcrontabで呼出すシェルスクリプトBを作成し、Bの先頭で Cシェルを指定し、次に必要な環境変数を設定し、 次にAを実行するようにしたのですが、 うまくいきませんでした。 Bにenvをいれて、環境変数を出力するようにしたら、 path等がshのデフォルトのままでした。 ちなみにAはオラクルに接続しSQL処理をおこないます。 どなたかご存知の方がいらっしゃいましたら、お知恵をお貸しください。 |
|
> http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#sendmail > を見ると、sendmailとほぼ同じ操作ですよね。 うーん、mailコマンドっていうのはメーラーなんですよ。メールも 読めるし返事も書ける。低機能ながら立派なメーラーです。一方、 sendmailというのはSMTPサーバ兼(低レベルなら)SMTPクライアントって 感じでしょうか。 # しかし上のリンク先の「SMTPポートに繋げてメールを送る方法」って # のは大嘘ですね。誰だ、こんなの書いたのは。…俺か(^^; > CGIで直接sendmailに書込みした場合のエラーメッセージを取得したい時は、 宛先がなかった場合などに返ってくるメールを指して「エラーメッセージ」と 言ってらっしゃるなら、 http://www2e.biglobe.ne.jp/%7es-hasei/cgi-bin/wwwlng.cgi?print+99020031.txt など。 > #man sendmailで調べたら -N dns ってのが怪しいのですが意味が > #よく解からん。(ToT) -Nは-N failure,successなどと指定できます。manを読むときは、 日本語マニュアルを使って楽をしましょう。 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=sendmail&dir=jpman-3.0.0%2Fman > あるプログラムAをcrontabで自動起動させたいのですが、 > そのプログラムAはCシェルでしか動きません。 状況がよくわかりませんが、プログラムAがCシェルスクリプトなら プログラムAの1行目に #!/bin/csh -f などと書いてあるでしょうから、crontabにプログラムAのスクリプト名を フルパスで書いておけばいいです。PATHは、プログラムAの先頭で set path=(/bin /usr/local/bin /usr/sbin ....) と書いてもいいですし、crontabの設定ファイルの先頭に PATH=/bin:/usr/local/bin:/usr/sbin:... と書いてもいいです。例えば PATH=/bin:/usr/local/bin:/usr/sbin:... 0 * * * * /home/user/bin/hogehoge とか。 |
|
> yacc は私も挫折しました…ただし、68user さんよりはもっと手前でですが(^ こっちも挫折は早かったですよ〜。 http://X68000.startshop.co.jp/~68user/tmp/html.l http://X68000.startshop.co.jp/~68user/tmp/html.y うーん、短いなぁ。今見ると、どこがどういう意味なのかさっぱり(笑) |
|
どうもありがとう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も 正規表現の一種又はサブセット?だということも含めておいた方が、 初心者の方にも後々のためにはいいんじゃないかなと思ったのです。 とは言うものの、議論するほどの問題ではないので、この話題は以降 無視して頂いて結構です。 |
|
すいません... >いえ、ただのログです。例えばこんなの。 これなんですが、 >.forwardに書いただけではログ作成や排他処理をやってくれないです。 procmailが勝手にログを作ってくれるのですか? もしそうなら、それは何処に出力されるのですか? と言う意味でした。 #日本語ヘタですいません...(^^ゞ > * ^Subject: hoge$ > は、ヘッダに「(行頭)Subject: hoge(行末)」という行があれば > commandに渡されるわけです。ヘッダ名(この場合はSubject)の > 前に ^ がありますから。 > # 本当は * ^Subject: *hoge$ にしなきゃいけないんだけど あっなるほど、よく見ると間にスペースが... これは、2つの条件([^hoge]、[hoge$])が指定されているのですね。 (↑ procmailの解説) #ネスケのデフォルトフォントをMS P明朝にしているのだけど #半角スペースが分かりづらいしアンダーバーが表示されないし、 #設定変更しようかな...気に入っているんだけど。←独り言 >namazuを使うなら... そうなんですか。最近よく見かけるのでもしかして、と思ったので すが。 #「ですよね〜。んが、」の行にはやられた... #思わず吹き出して周りの白い目が... >これくらいならシェルスクリプトでもできますよ。 う〜ん、シェル使い。というか、やっとPerlを使えるようになってき た私には、「さすが」以外言葉が出ない...(((((^^; >正規表現の一種又はサブセット?だということも含めておいた方が、 >初心者の方にも後々のためにはいいんじゃないかなと思ったのです。 初心者として、ありがたきお言葉。感謝感謝m(_ _)m >mmさん |
|
自己レスです。 偶然というか出来すぎ?でレスキューさんのページでprocmailの 解説を見つけました。 #しかも一昨日UPばかりの情報。もしかしてここでのやり取りを見 #ていた?! いやはや、だいぶ変な事を書いてますね(^^ゞ ログの件は環境変数に、 LOGFILE=$HOME/procmail.log の様な指定をしたときにprocmailによって作成される。 ですね。 >> # 本当は * ^Subject: *hoge$ にしなきゃいけないんだけど > あっなるほど、よく見ると間にスペースが... これは単純にメールのヘッダーの規則で、Subject:とその内容の 間には半角スペースが必要なんですね。 なんてオバカなんでしょう。 大変失礼をいたしました。(^^; 謎が解決しました。 |
|
> ログの件は環境変数に、 > LOGFILE=$HOME/procmail.log > の様な指定をしたときにprocmailによって作成される。 yes. 環境変数じゃなくてレシピに書くんですけどね。 > これは単純にメールのヘッダーの規則で、Subject:とその内容の > 間には半角スペースが必要なんですね。 Subject: hoge(スペース1つ) Subject: hoge(スペース2つ) Subject:hoge(スペースなし) のいずれにも対応できるようにするためです。調べてませんが、 どちらもメールヘッダとしてはアリなんじゃないでしょうか。 (RFC821あたりで決まってるかな?) ところで素朴な疑問ですが、補完って知ってます?>M.Masudaさん(や他の方) コマンドラインでTABやCtrl-Dを押すやつ。 知らない人が多いなら、軽く解説を書こうかなと思ってるんですが。 入門書でシェルの補完まで触れているのを見たことないんで、 もし補完を知らずに「UNIXのコマンド入力は めんどくさいものだ」 と思う方がいたらヤだなと思いまして。 |
|
初めてメールさせていただきます。 UNIX の bc コマンド/ dc コマンドの使い方を伝授していただけないでしょうか。 あるいは、このコマンドの解説本をご存知でしたら教えていただけないでしょうか。 お願いします。 |
|
先日はどうもでした。(^^ゞ >68Userさん 完成を期待しています。 >>ログの件... また変な事かいちゃった...(>_<) #RFCのどこに何がかいてあるかは、何で調べてるんですか? >ところで素朴な疑問ですが、補完って知ってます? もしこれが無ければ、あまりシェルを触らなかったでしょう。(^^) DOSの頃はこれが無かったので、長いコマンドでミスタイプすると 大変でした。 ついでにUPキー'↑'でのヒストリー機能もどうでしょう。 #bashだけ? 変な発見。 bashていうのはshの完全上位互換なんでしょうか? /bin/をみると、うちの環境では sh -> bash とリンクになってま した。(デフォルトシェルはbash)#OSはTorbo Linux 2.? #知らなかった。 それと、パーミッションについてちょっと聞きたいのですが。 #Groupはとりあえず無視。 chmod 700 hoge.cgi の場合、Otherに何も無いので、シェル上 からのみ実行可能。 chmod 705 hoge.cgi の場合、Otherに読込・実行共に有るので シェル上でもwebから(nobody権限)でも実行可能。 となりますよねぇ。 それでは、701の場合はどうなります? うちの環境では、webからでは動きません。 Other実行権が有れば(1が立っていれば)webからでも実行できる場 合はsuExecをインストールすれば可能なのでしょうか? それともう一つ。(^^ゞ .procmailで :0 * 条件 コマンド の「* 条件」行を書かなければ全ての場合に適応される。 で合ってますか? > UNIX の bc コマンド/ dc コマンドの使い方... bcならここにありますよぅ〜(浦部くみこ調) http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#bc |
|
> #RFCのどこに何がかいてあるかは、何で調べてるんですか? なんとなくです。僕が興味を持つ範囲は限られてるので、 FTPならRFC959、POP3は1939、SMTPは821、HTTPは1945/2068、 くらいを知っておけば、大抵調べることができます。 > もしこれが無ければ、あまりシェルを触らなかったでしょう。(^^) あ、ご存知でしたか。 > /bin/をみると、うちの環境では sh -> bash とリンクになってま Linixはsh->bashらしいですね。ただし現状ではshが使われるのは スクリプトくらいでしょうから、それなりの互換性があれば問題ない のでしょう。でもたまにshとbashで挙動の違いが原因で動かない、 なんて話は聞きます。 > それでは、701の場合はどうなります? 普通スクリプトはReadできないと実行できません。バイナリならeXecute だけでもいいですが。 #!/hoge で始まる scriptというスクリプトを、 script で実行した場合は、カーネル(かな?)が /hoge script を実行します。 #!/bin/sh sleep 10; を ./script で実行して、C-zでsuspendしてpsを実行すると、 322 p2 T 0:00.01 /bin/sh ./script などとなっているはずです。このとき scriptをReadできないと エラーになるわけですね。 > の「* 条件」行を書かなければ全ての場合に適応される。 たぶん…。試して見てください(^^; > UNIX の bc コマンド/ dc コマンドの使い方を伝授していただけないでしょうか。 実はbcやdcはかなり高機能なので、あの解説だけでは不十分かも しれませんが、どの程度の解説をお望みで?(でも僕はあれ以上の ことは知りません) dcは逆ポーランドで記述する計算機です。 % dc 2 3 + (2+3の結果をスタックにpush) p (スタックの先頭を表示) 5 (結果は5) 1 2 + 5 3 - * ( (1+2)*(5-3)の結果をスタックをpush) p (スタックの先頭を表示) 6 (結果は6) 計算式を逆ポーランドに変換すると、括弧の優先順位などを 気にせず、先頭から順番に処理していくことができます。 まぁ、コンピュータ向けの書き方で、人間向きではないですね。 |
|
>DOSの頃はこれが無かったので、長いコマンドでミスタイプすると >大変でした。 DOSでも、TSRを使えば、補完可能でした… というより、これがなければ、DOSのコマンドラインを使う気には なりませんでした。 私が使っていたのは、history.com というもので、コマンドライン 上での行編集機能、ヒストリー機能、補完機能、別名機能などが ありました。 ただ、unix上の補完機能の解説って読んだ覚えがないので、 本家のものがどういう仕様になっていたのか、できれば知りたいです。 DOSの場合、カレントに abc.exe というファイルがあって、 コマンドラインの先頭で a を入力して、補完機能を使うと、 abc というようなコマンド名(.exeがない)の補完が行われます。 でも、unixの場合は、補完は引数ファイルだけだという話を聞いた ような気もしたりしますんで…(違ったかも知れない(^^;) >dcは逆ポーランドで記述する計算機です。 少し前までなら、まだ逆ポーランド記法の電卓を使ってる人がいる って話を聞いたことがあるんですが、もう絶滅したかな…(笑い) 確か、FORTHも逆ポーランドだったような…? |
|
.>実はbcやdcはかなり高機能なので、あの解説だけでは不十分かも > しれませんが、どの程度の解説をお望みで?(でも僕はあれ以上の > ことは知りません) 実行させたいのは、プログラムが出力した(文字列)データを表計算のように 単純な合計や平均の演算を行いたいのです。 入力データは、いくつかの固定のデータ数を一つのグループとして(つまり行に相当) 扱いたいのです。 こんな具合です; " 10 22 110 20 30 200 5 25 300" この例では; 10 22 110 が一行目のデータ 20 30 200 が二行目 5 25 300 が三行目 として扱い、 一列目の合計を求める bc コマンド記述を実行すると 35 が求まり、 二列目の平均を求める bc コマンド記述を実行すると 25.6 が返ってくると いった使い方をしたいのですが。 そして、bcコマンドに実行させる処理内容は、C-shell でデータに合わせて Generate させようと考えています。 bc コマンドにこんなことを望めますか?コンパイルさせずに演算結果を 取り込みたいというのがこの目的です。 |
|
やはりみなさん知ってますか。僕はUNIXを使い初めて数か月 知りませんでした。僕のまわりでは補完を知らない人が かなりいます。 DOS時代は補完がないのが当り前、と思ってたので、別に面倒だとは 思いませんでした。 > unixの場合は、補完は引数ファイルだけ cshだと確かにそうですね。tcshは(多分bashも)コマンド/引数共に補完できます。 あと、completeという内部コマンドを使うと、どのコマンドが どういう引数を要求するのか、という情報を与えることができます。 例えば、cat (Ctrl-D)とすると ファイル/ディレクトリ名の一覧出てきますが、 man (Ctrl-D)ならマニュアルの一覧が出てくると便利ですよね。さらに man 3 (Ctrl-D) … マニュアルのセクション3 telnet (Ctrl-D) … ホスト名 rmdir (Ctrl-D) … ディレクトリ名 printenv (Ctrl-D) … 環境変数 gcc -f(Ctrl-D) … -fで始まる長い長いオプション名 と、状況に応じて補完対象を変えてほしいわけで。 というわけで、例えばこんな感じにするわけです。 http://X68000.startshop.co.jp/~68user/tmp/.completerc で、bashでは、tcshのcompleteに相当する機能はないのかなと思ってるんですが、 どなたかご存知ですか? > " 10 22 110 20 30 200 5 25 300" bcにこだわる理由がなければ、perlやawkを使った方がいいかもしれませんね。 #!/usr/local/bin/perl $raw = 3; # 一行あたりの項目数 $raw_num = shift || die; # 平均を得たい項目(1列目なら0) $sum = 0; @nums = split(/ /,<STDIN>); $i = 0; while ( defined $nums[$i*$raw+$raw_num] ){ $sum += $nums[$i*$raw+$raw_num]; $i++; } print "$raw_num列目の合計は $sumです。\n"; 実行例。 % echo '10 22 110 20 30 200 5 25 300' | ./b 1 1列目の合計は 77です。 bcでできるかどうかマニュアルを読んでみたのですが、よくわかりませんでした。 ところでbcで割り算の結果を小数点の精度で得る方法をご存知ですか? 3/4 も 3.0/4.0 も 3.1/4.1 も結果が0になるんですが…。 |
|
> ところでbcで割り算の結果を小数点の精度で得る方法をご存知ですか? man読んでたら書いてありました。scale=3などとして、有効桁数を 指定すればいいんですね。デフォルトはscale=0だから、小数点以下は 表示されない、と。 あと、ご存知かもしれませんが、bc(GNU bc)の日本語マニュアルは http://www.jp.freebsd.org/man-jp/search.html で見られます。 |
|
>> それでは、701の場合はどうなります? これは、最近小耳に挟んだ事なのですが、一部のサーバー(Apache1.3環境) での解説で、パーミッションを701でCGIが動くとの表記が有りました。 調べてみるとsuExecを使用していて、そのサーバー上ではファイルのオ ーナー権限で動くらしいのです、私の環境ではsuExecは使えないので、 状態が解からなく、疑問に思っていたので前回の質問となりました。 #それなら700でもweb経由のCGIが動くはずですよねぇ。 #これ出来ると、webから自分宛のメールを読んだり出来る。 >322 p2 T 0:00.01 /bin/sh ./script > などとなっているはずです。このとき scriptをReadできないと > エラーになるわけですね。 言い方を変えると、スクリプトを実行するためのインタープリタが そのファイルを読めないといけないと言うことですね。 suExecを使わない普通のCGIは、nobody権限で/bin/shとか /bin/perl が動くわけですね。 >でもたまにshとbashで挙動の違いが原因で動かない、 > なんて話は聞きます。 これは、頭に入れておかないと。φ(._.) sh と bashの違いを考慮しないとはまりそう...。 #滅多にそんな場面無いだろうけど。 > の「* 条件」行を書かなければ全ての場合に適応される。 「* 条件」の行を空行にすると、無視されました。 「*」のみだと全てのメールにマッチするようですね。 ちなみに、うちの環境だと .forwordに "| exec /path/procmail" としなくても、~/ に .procmailを置くだけでprocmailが動きました。 #Turbo Linuxだけなのかなぁ。 >FTPならRFC959、POP3は1939、SMTPは821、HTTPは1945/2068、 RFCのブックマークはとってあったのですが、よく見ると一部だけの ミラーサーバーでした。 自分でも探してみますが、早いサーバー(アクセスの少ない?)を 知っていたら教えて下さい。m(_ _)m >DOSでも、TSRを使えば、補完可能でした… 私もいくつかの常駐ソフトを知っていましたが、いずれも不安定な ものが多く、あまり使っていなかったのが現状でした。(^^ゞ >mmさん 関係無いけど、HSBというソフトリブートを可能にするNEC98シリーズ 用のソフトは便利でした。 メモリチェックをすっ飛ばしてくれるので、環境の切り替え時にバッチ 組んでメニューで再起動なんてよくやっていました。 |
|
> これは、最近小耳に挟んだ事なのですが、一部のサーバー(Apache1.3環境) > での解説で、パーミッションを701でCGIが動くとの表記が有りました。 700ではなくて701なら動く、ということはあり得ないはずです。 suExecを組み込んだapacheは、はある時点まではnobodyで動いていて SSI/CGIを動かす際に そのユーザ権限に変更するはずです。 ですので、そのCGIスクリプトを置いてあるディレクトリ(例えばcgi-bin) にはotherに対してxビットを立てる必要があるかもしれません。 # でも多分ファイルもディレクトリも700でOKだと思いますけど、 # suExecを使ったことがないのでちょっとわかりません。 > ちなみに、うちの環境だと .forwordに "| exec /path/procmail" > としなくても、~/ に .procmailを置くだけでprocmailが動きました。 え、ほんとですか? それだとsendmail(mail.local?)が、procmailだけを 特別扱いしてることになるんですが…。 |
|
> http://X68000.startshop.co.jp/~68user/tmp/.completerc ガ〜ン! やはり、ご本家は、スゴーイ!! DOSの貧弱な環境を何とかunixに近づけたいと思っていたのですが、 やはり所詮、マネはマネに過ぎなかったみたいですね(^^; (でも、プリミティブなDOSは、やはり問題外…) M.Masuda さん >メモリチェックをすっ飛ばしてくれるので、環境の切り替え時にバッチ >組んでメニューで再起動なんてよくやっていました。 えー、一体どのような環境を切り替えられたのでしょうか? キャラクタデバイスやTSRなら、リセットしなくても変更可能だし、 それ以上の環境の切り替えはウチでは必要なかったので、 そういうのは使ったことないです(^^; |
|
>えー、一体どのような環境を切り替えられたのでしょうか? すいません。ついオンラインで読んで疑問に思って書き込んでしまいましたが、 このボードとは無関係の話題でした(^^; この質問は、なかったことにして下さいませm(_o_)m (それに、RAMディスクやディスクキャッシュの構成を変える場合にも、 リセットは必要ですね(^^;) |
|
>えー、一体どのような環境を切り替えられたのでしょうか? すいません。ついオンラインで読んで疑問に思って書き込んでしまいましたが、 このボードとは無関係の話題でした(^^; この質問は、なかったことにして下さいませm(_o_)m (それに、RAMディスクやディスクキャッシュの構成を変える場合にも、 リセットは必要ですね(^^;) |
|
>700ではなくて701なら動く、ということはあり得ないはずです。 そのとおりです。suExec下ではユーザーの実行権が有効ですね。 #やっぱ日本語の書き方悪いかなぁ。(^^; 私の見たページです。 http://www.parkcity.ne.jp/~chaichan/bin/htmcount.cgi?name=howtocgi >え、ほんとですか? それだとsendmail(mail.local?)が、procmailだけを >特別扱いしてることになるんですが…。 今日は時間が無いので、後日試して結果を報告します。 >キャラクタデバイスやTSRなら、リセットしなくても変更可能だし、 最近触ってないし、DOS用マシンはご臨終なので忘れてしましまし たが。(^^ゞ ブロックデバイスです。その他ソフト同士の相性も有りました。 当時周りで、コンベンショナルを広げるのが流行っていたので、 必要最低限のデバイスを組込み直して使用してました。 あるマシンは拡張メモリが無かったりしたもんで...(^^; 4M積んだノートでは、620kbのfreeは確保出来たのですがそれで 限界でした。 #あの頃が懐かしいなぁ...(^^ゞ > http://X68000.startshop.co.jp/~68user/tmp/.completerc > ガ〜ン! > やはり、ご本家は、スゴーイ!! 全く同感です。 |
|
結果の報告です。 >え、ほんとですか? それだとsendmail(mail.local?)が、procmailだけを >特別扱いしてることになるんですが…。 おかしいな、やっぱ .forwardを設置しなくとも.procmailrcだけで いけてしまいます。 .forwardに転送先のアドレスとかが指定されていると.procmailrc は評価されないようです。つまり .forwardが無く.procmailrcがある 時にのみ.procmailrcが評価されるようです。 RedHat LinuxとTurbo Linuxの両方とも同じ動作でした。 レスキューさんとこも.forwardへの記述を指示してあったし? ん〜。 #sendmailの初期設定が違うとか... #このへんは初心者にはぜんぜん解からん(^^; ちなみにいろいろ試しているうちに、シェル上でmailを実行して メールを読み 'd'や 'q'で終了してもメールがスプールに残り mail終了時に、 Unable to lock mailbox: Permission denied と言われるようになってしまいました。 ロックファイルにアクセス権が無いって事でしょうが、それが どこに有るのか解からない。(>_<) どうすればいいでしょう。とほほ。 |
|
こんばんは。いわもとと申します。 今日1日散々悩んでいたんですが、crontabコマンドから シェルファイルを呼び出し、そのシェルファイルの中で SQL*PLUSを呼び出してPL/SQLプロシージャを実行させようと していたのですが、TNSサービス名が認識できないと エラーを返されてしまいました。 直接シェルファイルを実行させるとちゃんとサーバを 認識してプロシージャを実行してくれるのですが、 crontabコマンドから呼び出すとうまく行きません。 tnsnames.oraファイルも正しく入力されていましたし、 まったく原因がつかめません。 どなたかこういうエラーに詳しい方、解決方法を 教えていただけないでしょうか。 |
|
こんばんは岩本さん。 http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#crontab 上のページでcron実行時の注意として、 「なお、crontabで実行されるときには、ほとんどの環境変数が指定 されていないので注意が必要。」と有りますが、試しに簡単なスク リプトで、実行時に有効になっている環境変数を表示させてみて 必要な変数をスクリプトに追加してみたらどうでしょうか? 多分この辺のような気が... #またぜんぜん違ったりして。(^^; |
|
M.Masudaさんへ。 % grep -i procmail /etc/sendmail.cf の結果を教えていただけますか。 > crontabコマンドからシェルファイルを呼び出し… SQL*PLUSなるものも、TNSなるものも知らないので、あくまで一般論 ですが、確かに環境変数が原因であることが多いと思います。 csh/shスクリプトなら、-xや-vオプションを付けることで、 どこで止まっているかわかります。また、 % env - sh とすると、環境変数を完全にクリアした状態のshが立ち上がるので、 その状態でスクリプトを動くような状態にしてみてはいかがでしょう。 # ただし、cronでは設定されているはずのPATH、HOME、USERなども # クリアされてしまいます。 |
|
> % grep -i procmail /etc/sendmail.cf > の結果を教えていただけますか。 ##### @(#)local_procmail.m4 8.6 (Berkeley) 10/20/96 ##### ### PROCMAIL Mailer specification ### ##### @(#)procmail.m4 8.6 (Berkeley) 4/30/97 ##### Mprocmail, P=/usr/bin/procmail, F=DFMSPhnu9, S=11/31, R=21/31, T=DNS/RFC822 /X-Unix, A=procmail -Y -m $h $f $u Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40, A=procmail -Y -a $h -d $u と出ました。 これは吉か、はたまた大凶か? 出来れば意味を教えて下さい。(^^; |
|
こちらは RedHatの方です。 Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40, A=procmail -Y -a $h -d $u それから、WU-FTPDでの/etc/ftpaccessの設定について もし分かるのならメールで直接聞いてもいいでしょうか。 内容を見てもらいたいのですが、内容的に公開してもいい ものか分からないもので...。 内容は一般ユーザーへの、ftp接続時でのアクセス制限です。 |
|
へぇぇぇぇ、ほんとにprocmailを特別扱いしてるんですね。 > 出来れば意味を教えて下さい。(^^; きついことをおっしゃる(笑) Mで始まる行は、配信エージェントの定義を表します。 P=はプログラムのパス、S=とP=はエンベロープ/ヘッダの書き換え、 10/30、20/40ってのは書き換え規則(どこか別の場所で定義されている)、 F=はこの行の(他の行から参照する際の)設定の名前を決めてるのかな? それとも他での定義を参照してるのかな? T=は、メールヘッダに追加される? A=... はわかりません。 sednmail.cfを理解できるほどの知識があるわけではないので (コウモリ本も持ってない)、こんなもんでご勘弁を(^^; Slackwareの配布サイトを見てみましたが、やはり標準で procmailを特別扱いしているようです。Linux界では 普通なのでしょうか(僕からするとちょっと気持ち悪いですが)。 > それから、WU-FTPDでの/etc/ftpaccessの設定について > もし分かるのならメールで直接聞いてもいいでしょうか。 すいません、wu-ftpdは使ったことがないのです。 |
|
はじめまして、こんばんわ。ぬいぐるみバンザイと言います。 CGIについてですが、少し質問があります。 それは、ホームページの更新状況を(自分や他人のサイトも含めて)自動で (そのCGIを実行すれば)検知するようなものを作りたいor探しているのですが お心当たりはないでしょうか? 初心者の自分ではソケットを使ってターゲットとなるサイトに接続して、index.htmlあたりの ファイルの月日を取得できたらいいなと思うのですが、こういうことは可能なのでしょうか? 初心者ゆえ、何をいってんだ?的なところがあるかも知れませんが、よろしくお願いします。m(__)m ではでは |
|
自分のサイトならば、上のURLのスクリプトではいかがでしょう… 他人のサイトの場合は、仰るようにソケットを使って HEAD メソッドかな… M.Masuda さん >4M積んだノートでは、620kbのfreeは確保出来たのですがそれで >限界でした。 そう言えば、そんなことが流行ったことも…、でも620はスゴイ…(笑い) |
|
> それは、ホームページの更新状況を検知するようなもの mmさんのおっしゃる通り、HTTPのHEADメソッドを使えばいいでしょう。 レスポンスのヘッダ部分から Last-Modified: Wed, 20 May 1998 14:59:42 GMT などという情報が得られます。ただし、(少くともapacheでは)SSIを 使っているページでは、Last-modifiedを返してくれません(例えば うちのトップページ)。また、Last-Modifiedを返さないサーバもあるでしょう。 ソケットの使い方については http://X68000.startshop.co.jp/~68user/net/ が参考になるかもしれません。 > CGIについてですが、少し質問があります。 ただし、CGIとして動作させるのは非現実的かと思います。 なぜなら、いろんなサーバに接続するのはそれなりに時間がかかります。 重い時間帯なら数分待たされることも珍しくありませんので、 その間にCGIのタイムアウトが発生するでしょう。 ですから、コマンドラインから動作させるか、あるいはCGIで動かすとしても、 - すぐにclose(STDOUT)してコネクション自体を切断 - その後 更新時刻のチェック - チェック結果をHTMLに吐き出す - (あなたが)すこし時間が経ったらそのHTMLにアクセス とした方がいいと思います。 > or探しているのですが プログラム自体は比較的簡単に作れますから、探せばあるのでしょうが、 残念ながら知りません。ただ、IEやNNにそういう機能が付属しているのでは ないでしょうか。 |
|
はじめまして。 UNIX初心者なので、いろいろ分からない事があり、 いきなりですが、みなさんに教えて頂きたいことがあります。 シェルスクリプト内にてスーパーユーザーになりあるコマンドを 発行したいのですが、スーパーユーザーになったところで プロンプトが帰ってきてしまい、以降の処理に行きません。 どの様にすれば、シェルスクリプト内にてスーパーユーザーになって コマンドを発行できるのでしょうか? よろしくお願い致します。 できれば、シェルのサンプルを見せていただければと思っております。 |
|
>へぇぇぇぇ、ほんとにprocmailを特別扱いしてるんですね。 ありゃりゃ、ほんとにそうだったんですか、私の勘違いなのかなぁ なんて思って、「違いますよぉ」なんてレスが返って来るかと思っ てました。(^^;;;; 一番難しいと言われるsendmailに関しては、既に私の理解を超えてる ので、今は逃げます...(爆) 将来の、目標としておきます。(^^ゞ >きついことをおっしゃる(笑) そんなそんな、コウモリ本もなくてあれだけ理解してればぜんぜん ○では?...。 でも本当にシステムによってかなり設定が違うんですね。 勉強になります。 >すいません、wu-ftpdは使ったことがないのです。 残念です。一応目的の事は達成出来たのですが、その手順での 他の部分への影響が知りたかったのです。 この辺は、いくら1ソフトの設定が出来ても、システムそのものに 詳しくないと、分かりませんからね。 プログラマーの弟は、free630kbと私に自慢してました。(^^ゞ>mmさん #すいません、違う話題で...>68Userさん こんにちはtakashiさん シェルスクリプト内でrootになる? それってどうやるのですか? 普通suコマンドやpasswdコマンドでは、わざとユーザーに入力要求 を出して、システムを保護するようになっているという話を聞いた 事が有ります。 それに、スクリプト内にrootのパスワードを記述しなければいけな いのでは? もしそうなら、それはセキュリティー的に辞めた方がいいと思いま すよ。 何をしたいのかが分かりませんが、root権限でログイン中以外の時 に、何かをさせたいのであればcrontabなどで実現させるのがいいと 思いますヨ。 #外しているかなぁ(^^ゞ |
|
M.Masudaさん、ありがとうございます。 Masudaさんと言う通り、セキュリティの問題のあるやり方なので、 他の方法を考えたいと思います。 また、お世話になると思いますが、その時にもよろしくお願い致します。 |
|
>他の方法を考えたいと思います。 どんな事をしたいのかを書くと、きっと有効な情報が得られると 思いますヨ。 またまた、御世話になります。m(_ _)m シェルスクリプトのif文で、前のコマンドの終了結果を知りたい場 合はどうすればいいのでしょうか? 具体的にはこうです。 /#!usr/bin/sh vi text.txt if [ 条件(text.txtを更新したら) ];then date>>text.txt fi 条件のところでの指定法方が解からないのです。(^^ゞ #すげー初心者ですね←私 |
|
ありがとうございます。m(__)m>mmさん、68userさん やっぱり、CGIで全部自動というのは、難しそうですね。 教えて貰ったことを参考に作ってみます。また来ることがあるかも知れませんが その時はよろしくお願いします。m(__)m ではでは |
|
> takasiさん 僕がやるとすれば… sudoを使う 特定のユーザに対して、特定の権限(この場合root)で、特定のコマンドだけ 実行を許可するコマンド。例えば hoge というユーザだけ cat /etc/master.passwd を実行できる、と設定すれば、 % cat /etc/master.passwd Password: ***(rootのパスワード) (/etc/master.passwdの内容が表示される) となります。その後5分間以内(多分設定で変更可能)なら、再度同じコマンドを 打っても rootのパスワード入力を省けます。 wrapperを使う 普通スクリプトにはsuidビットを立てられません。でもバイナリなら可能です。 そこで、Cでwrapperを書き、その中でスクリプトを実行させるようにします。 % chmod 4755 wrapper % chown root wrapper としてwrapperを実行すると、root権限でスクリプトが実行されます。 suidperlを使う 普通スクリプトにはsuidビットを立てられませんが、perlだけは例外です。 % chmod 4755 perl-script % chown root perl-script とすれば、root権限でperl-scriptが動きます。 くらいでしょうか。2番目の方法のソースは、よろしければお見せしましょうか? |
|
ん〜、コマンドの status は $? を見ればいいですけど、 今試してみたところでは、更新してもしなくても、どちらも 0 を返してきました。正常終了は正常終了なので更新の有無は 関係ないのでしょう。 で、この場合は最終更新時刻が更新されたかを調べるとか、 /tmpにコピーして、それを編集させ、元のファイルとdiffする などするのがいいんじゃないでしょうか。 |
|
>ん〜、コマンドの status は $? を見ればいいですけど、 あれま、やっぱ甘かった!。 viの終了コードで判別しようと思ったんですが...、そうですね よく考えたら、保存しようがしまいが一応正常終了だから、それ では判別できませんね。(^^ゞ わざわざ試してもらってすいません。 #でも「$?」の方法が知らなかった... #ホント初心者です。(*^_^*) DOSの場合、終了コードはかなりいい加減だっただった記憶が 有ります。UNIXの各コマンドの場合正確にコードを返してくるの ですか?、それからどんな時にどんな終了コードが返るかは、man で調べる以外に基準の様なものはあるのでしょうか?。 #例えば正常終了だと0が返る等 /tmp/の方法でやってみます、もっと単純に出来ないかと思った のですが。(^^ゞ >2番目の方法のソースは、よろしければお見せしましょうか? この方法は、私も非常に興味があります是非お願いします。m(_ _)m |
|
gettimeofdayについて |
|
gettimeofday |
|
>2番目の方法のソースは、よろしければお見せしましょうか? この方法は、私も非常に興味があります是非お願いします。 すいません。これって「wrapperを使う」方ですね。 勘違いしてました。 興味があるのは、perlでの方です。 「suidperlを使う」ってのは、やってみましたが動きませんでした。 なぜなんだろう? |
|
> 「suidperlを使う」ってのは、やってみましたが動きませんでした。 書き方が悪かったですが、普通にperlスクリプトを書いて、 chown root script;chmod 4755 script として scriptを実行すれば、scriptがsuidされているかどうかを perl(/usr/local/bin/perl)が調べくれて、もしsuidされていたら 勝手にsuidperlを実行してくれます。suidperlはrootにsuidされている プログラムなので、そこで実行権限をscriptのオーナー(この場合はroot) に変えて実行してくれるわけです。 # perl4はどうなるか知らない。 shやcshはそういうことはしてくれないので、suidスクリプトは 実行者の権限でしか動きません。 ちなみにCで書く方法も簡単で、特定のコマンドをexeclやexecvする プログラムをCで書いて、コンパイルして、 chown root program;chmod 4755 program するだけです。 |
|
先日某所で尋ねられた件について、ちょっと分からなかったので、 質問させて下さい。 尋ねられた内容は、C言語に関して、 if ( NULL != (hp = gethostbyaddr(...)) ) return hp->h_name; というコードで関数が返すポインタが指し示す 文字列の実体が何処に確保されているか? (実際は、これに似たコードで、コンパイラが 警告を出したことが発端なんですが…) ということなのですが、gethostbyaddr()がポインタで返す struct hostent の実体については、 >NOTES >A return value points to static data, >which is overwritten by any subsequently called functions >using the same structure. というのを見つけて、ライブラリ内で1個だけ静的に確保して いることは分かったのですが、この struct hostent のメンバー である char *h_name が指す文字列の実体が何処に確保されて いるのかまでは分からなかったのです。 struct hostent の他のメンバーには char **h_addr_list なんてのもあるんで、これらがすべて静的領域に確保され ているとは考え難いと思います。 でも、もしmalloc()などでヒープに確保されるのであれば、 文字列の利用後に free する必要はないのでしょうか? (必要があれば、どこかに書いてあると思うので、 その必要はないとは思うのですが、だとしたら何故不要なのか がよく分からないのです。gethostbyaddr()の内部で atexti() により free() する関数を登録してるとか…?) それと、unix では、一般にプログラム内部で malloc() などで 確保したメモリをプログラムの終了までに free() を使って 明示的に解放しなかった場合、どうなるのでしょうか? WindowやMS-DOSでのFARヒープの場合のように、メモリ上に ゴミとして残るのでしょうか? それとも、プロセスの終了を見て、システムが自動的に解放 してくれるのでしょうか? |
|
>「suidperlを使う」ってのは... やっぱだめです。なんでだろ? ls -lの結果は -rwsrwxr-x 1 root 501 342 Mar 25 23:41 su.cgi* で、 su.cgiの内容は、 #!/usr/bin/suidperl $|=1; print "Content-type: text/html\n\n"; print "<html>"; print "<H3>su test</H3>"; print "<pre>\n"; print "#############################\n"; print "<hr>\n"; $_=system("cat /etc/ftpaccess"); print "$_\n"; print system("date>testfile"); print "</pre>"; print "<hr>"; print "</html>"; です。 試しに適当につくってあるので、内容が恥ずかしいんですが #!/usr/bin/suidperl の行も最初は普通にperlを指定したんだけどダメなので、 試しに上記の様にしてもやはりだめでした。 rootでコマンドラインから実行するとOKです。 もちろん /etc/ftpaccessは、600のパーミッションです。 う〜ん、わからん。 変なところが在ったら教えて下さい。 #ちなみにperlは日本語パッチが当たってますけど関係有ります? それからもう一つお願いします。 aliasを使って、あるユーザに来たメールを転送させる設定は /etc/aliasesに記述しないとだめなんでしょうか? いつもいつも御世話になりっぱなしで申し訳ないですが、お師匠様 なにとぞ宜しくお願いします。m(_ _)m |
|
M.Masudaさん > rootでコマンドラインから実行するとOKです。 一般ユーザでコマンドラインから実行するとどうなります? > $_=system("cat /etc/ftpaccess"); > print system("date>testfile"); ここらへんがくさいです。httpdのエラーログに、PATHがどうこう、と出て ませんか? うちは #!/usr/local/bin/perl print "Content-type: text/plain\n\n"; open(IN,"/etc/ftepaccess"); print <IN>; でOKでした。CGIからでも うまくいきました。 open(IN,"/bin/cat /etc/ftepaccess |"); だと、 Insecure $ENV{PATH} while running setuid at ./a line 4. とエラーになりました。あと、perl4ではsuidスクリプトは動かない ようです。 > aliasを使って、あるユーザに来たメールを転送させる設定は > /etc/aliasesに記述しないとだめなんでしょうか? 質問の意図がよくわかりません。どこか別のところに書きたいのでしょうか? mmさん > それとも、プロセスの終了を見て、システムが自動的に解放 > してくれるのでしょうか? はい、勝手にfreeしてくれます。gethostbyaddrの件は少し調べてから…。 |
|
LinuxWorldでredhatを入手して一週間! ついにLinux起動いたしました(笑) さぁ、次はインターネットに接続だ。 しかし、ここの話題についていけるようになるのに、どれだけの時間がかかるやら…(笑) |
|
なぜじゃ〜どうしてじゃ〜←狭間かんぺい調(爆) >一般ユーザで... これもだめです。68Userさんが前に書いたとおりアクセス件が無いと 怒られます。 Insecure $ENV{PATH} while running setuid at ./su.cgi line 13. と出ました。 >httpdのエラーログに、PATHがどうこう、と... アパッチのerror_logは、だんまりです。(>_<) >ここらへんがくさいです。 これも68Userさんと同じコードで試しました、がダメ。 ひとつ不思議を見つけました。 perl -c とすると、Args must match #! line at su.cgi line 1. と出ます。 んっ! とここまで書いて、他の事をいろいろ調べたらどうもこれが 前に疑問だった、suExecの機能のようです。 http://japache.infoscience.co.jp/japanese/manual/suexec.html ってことは、68Userさんの環境はsuExecが実装された環境のようで すね。 #今夜はずっとこの問題で格闘していたのでつかれた....ふげっ! aliasの件は、ダミーユーザー(ログオンしない)宛のメールを管理 者に転送するという意味です。 #やってみれば分かりますね...(^^; .bashrc等の設定ファイルに記述するのは、普通コマンドのailas なのですか? #なんかドッとつかれた....(T_T) |
|
うちでは #!/usr/local/bin/suidperl でも動きました。 > perl -c とすると、Args must match #! line at su.cgi line 1. と出ます。 suidスクリプトの実行時には、perlに渡す引数と suidperlに渡す引数が同じでなくてはいけません。 # …と、青ラクダ本に書いてありました。 > これも68Userさんと同じコードで試しました、がダメ。 /usr/bin/perl は perl5 ですか? FreeBSDの場合、FreeBSD 3.0R から /usr/bin/perl が perl5 に なったのですが(それまではperl4)、その /usr/bin/perl は suidperl が起動しないようになっていると聞きます。Linuxでも OSの方針で、suidperlを実行しないようにコンパイルされている のかもしれません。 > 68Userさんの環境はsuExecが実装された環境のようですね。 いえ、うちにはSuExecは入れてません。 何か問題が発生すると原因を切りわけていく必要があります。 httpdが原因かもしれないので、CGI経由で実行するより コマンドラインで実行すべきかと思います。 > aliasの件は、ダミーユーザー(ログオンしない)宛のメールを管理 > 者に転送するという意味です。 ん〜、まだちょっと意味がわかりかねます。 > .bashrc等の設定ファイルに記述するのは、普通コマンドのailas > なのですか? そうです。コマンドの alias と /etc/aliases は全く別物です。 ROLさん > ついにLinux起動いたしました(笑) FreeBSDじゃないんですねぇ(^^; > しかし、ここの話題についていけるようになるのに、どれだけの時間がかかるやら…(笑) やる気があればすぐですよん。 |
|
え〜、FreeBSDでは、gethostby* は libc に入ってますので、 gethostbyaddr のソースは http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/net/gethostnamadr.c?rev=1.10.2.1 ここらへんです。/etc/hostsなどを見て、見付からなかったらDNS引きに いきますが、それを担当するのは http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/net/gethostnamadr.c?rev=1.10.2.1 の struct hostent * _gethostbydnsname(addr, len, af) あたりでしょうか。で、そこらへんの絡みで、 static struct hostent * gethostanswer(answer, anslen, qname, qtype) が呼ばれますが、そこで host.h_aliases = host_aliases; host.h_addr_list = h_addr_ptrs; といったことをしています。で、host_aliases や h_addr_ptrs は gethostnamaddr.cの先頭で static char *h_addr_ptrs[MAXADDRS + 1]; static struct hostent host; static char *host_aliases[MAXALIASES]; static char hostbuf[8*1024]; などと定義されいます。ちなみに #define MAXALIASES 35 #define MAXADDRS 35 です。 > これらがすべて静的領域に確保されているとは考え難いと思います。 というわけで、全て static で宣言されているようですね。当然ですが if (hap >= &h_addr_ptrs[MAXADDRS-1]) { if (!toobig++) dprintf("Too many addresses (%d)\n",MAXADDRS); エラーチェックもしています。 > 先日某所で尋ねられた件について、ちょっと分からなかったので、 > 質問させて下さい。 もしよろしければ、その話題が出たのはどこなのか教えていただけますか? こういう楽しい話題が出るところに参加したいもので。 |
|
> いきますが、それを担当するのは > http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/net/gethostnamadr.c?rev=1.10.2.1 失礼、 http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/net/gethostbydns.c?rev=1.23 こっちでした。 でも、char **である host_aliases や h_addr_ptrs が指している char * な領域ってのはどこかな? よく読んでませんが、 static char hostbuf[8*1024]; っぽいですね。 |
|
>はい、勝手にfreeしてくれます。 なるほどー! freeしなかったリスクは、ユーザーだけが引き受けて、 他人に迷惑を掛けるおそれはない訳ですね。 マルチユーザーのメモリ管理をちゃんと勉強しないといけないなぁ… >え〜、FreeBSDでは、gethostby* は libc に入ってますので、 >gethostbyaddr のソースは あっ、すいません。先に教えて頂いたときに、いろいろあるなー と感心してたのですが、ライブラリのソースがあることまでは、 考えが及びませんでした(^^;;; MS-DOSでも、入手可能な場合はありますが、有償だったり… うーん、やはり羨ましい世界だぁ… ともかく、詳細な解説ありがとうございましたm(_ _)m >というわけで、全て static で宣言されているようですね。 ガ〜ン! こういうコーディングもありなのかぁ… 16bitアドレス(MS-DOSのnearポインタ)でアクセスできる 最大64KBのデータ領域に慣れてしまうと、8KBもの静的領域 ってのが発想しづらい…(^^; >char * な領域ってのはどこかな? よく読んでませんが、 > static char hostbuf[8*1024]; >っぽいですね。 ですね。hostbufのh_nameの後に順に書き並べて、このアドレスを h_aliases[]にストアしてるみたいです。 >もしよろしければ、その話題が出たのはどこなのか教えていただけますか? 残念ながらプログラミング関連のボードではないので、 ご期待には沿えないかもしれません(^^; それと、一応隠しボードなので、ここには書けないです。 でも、リンクを逆に辿って来るのはOKって言ってたので、 向こうからこっちにリンクを張っておきますんで、 覗いてみて下さい(笑い) |
|
ふぅ、この前はつかれてたのでなかば強制的に自分なりの解答と してしまいましたが、引き続き調べてみました。 #くっそー、グヤジイ!!!(怒笑) >/usr/bin/perl は perl5 ですか? This is perl, version 5.004と(TurboLinix) This is perl, version 5.004_04 built for i386-linux(RedHat)です。 > perl -c とすると、Args must match #! line at su.cgi line 1. コマンドラインでいくつかのパターンを試しましたが、ラクダ本のP644では >あなたが指定したものは、あなたが考えたようには解釈されない可能性がある。 という意味らしいです。 #このシステムではサポートされないという意味なのかなぁ。 だけどrootのコマンドラインからでは全く問題無く動きます。 ちなみに、一般権限でコマンド上の実行は、スクリプトの内容通り cat /etc/ftpaccess でエラー終了します。 その際のメッセージです。 Insecure $ENV{PATH} while running setuid at ./su.cgi line 15. #当然の結果ですよね。 > suidスクリプトの実行時には、perlに渡す引数と > suidperlに渡す引数が同じでなくてはいけません。 「青ラクダ本に書いて...」すいませんページ教えてくれません か。m(_ _)m >何か問題が発生すると原因を切りわけていく必要があります。 > httpdが原因かもしれないので、CGI経由で実行するより > コマンドラインで実行すべきかと思います。 コマンドラインでは、68Userさんの言う通りの結果だったので やはりhttpdの方なんでしょうか。 >そうです。コマンドの alias と /etc/aliases は全く別物です。 アッそうか! 完全に勘違いしていました。(>_<) で、/etc/aliasesを修正し newaliasを実行したのですが... 反映されませんでした。 FreeBSDだと、/etc/aliasesを修正して、newalisasを実行するだけで 反映されるのでしょうか? 現在英語マニュアルと格闘中です。 ちなみにnewalias事項の際に、以下のようなメッセージが出ます。 Couldn't open /usr/lib/aliases.text for input! #どうも/usr/lib/aliases.textが開けないと言っているらしい。 #英語圏で生まれていれば、こんな苦労は無かったのに(; ;) |
|
追加ですが。 > perl -c とすると、Args must match #! line at su.cgi line 1. これは、スクリプトのパーミッションを4755とした時にでます。 0755にすると出ません。 なにか関係があるのでしょうか? |
|
> ちなみに、一般権限でコマンド上の実行は、スクリプトの内容通り > cat /etc/ftpaccess でエラー終了します。 #!/usr/local/bin/perl $ENV{PATH}=''; open(IN,"/etc/ftpaccess"); print <IN>; ではどうですか? これでダメなら、suidperlは使えない設定になっている んじゃないでしょうか。 > すいませんページ教えてくれませんか。 > ラクダ本のP644では >>あなたが指定したものは、あなたが考えたようには解釈されない可能性がある。 > という意味らしいです。 の6行下に書いてあります(^^; M.Masudaさんが見てるのは違うメッセージの 説明ですよね。 > FreeBSDだと、/etc/aliasesを修正して、newalisasを実行するだけで > 反映されるのでしょうか? はい、そうです。 > ちなみにnewalias事項の際に、以下のようなメッセージが出ます。 > Couldn't open /usr/lib/aliases.text for input! FreeBSDでは /usr/lib/aliases.txt というファイルはないので ちょっとわかりません。newaliases(1)、aliases(5)あたりに書いて ありませんか? バイト行くんで、この辺で。では〜。 |
|
バイトお疲れ様でした。 いや〜ハマリまくりです。(^^; 結果から言えば動きました。ありがとうございました。 #68Userさんの助言が無ければ、解明する前に諦めていました。 実験で分かった事です。 いくつかの要因が有りました、私のスクリプトがおかしかったの ですが一番まずかったのは、一番最初に68Userさんの提示されたコー ドの通りで動かなかったので、試験スクリプトはsystem()や`コマンド` としていたのがいけなかったです。 つまり68Userさんのいうとおり、suidビットを立てると、あくまで perlが行う操作(openとか)はsuid権限で動きますが、forkされた プロセスでは、再びnobodyに戻ってしまう事です。 てっきりsuidの権限が継承されると思ってました。 #ちなみに $ENV{PATH}='';は削除しても動きました。 以下は試験に使用したスクリプトです。 生成されたファイルのオーナーを見てfork時の権限が分かりました。 #!/usr/local/bin/perl -w $|=1; print "Content-type: text/html\n\n"; print "<html><H3>suid</H3><pre>"; print "<hr>\n"; #$ENV{PATH}=''; open(IN,"./himitu.txt") || die "error:$!"; print <IN>; close(IN); open(OUT,">./make_open") || die "error:OUT $!"; print OUT "Open Command\n" ; close(OUT); if (!system("ls>make_system")) { print "Not Exec System $!\n"; } print "Next Step OK!\n"; print "<hr>\n"; print "Script END\n"; print "</pre></hr></html>\n"; それと検証不足かも知れませんが、perlスクリプト内でsystemコマ ンドを使うと、スクリプトが終了します。 上記の例でいうと、最後の方のprintが実行されません。 ファイルオーナーを、nobodyの時webから実行すると最後まで表示され たので、もしかしたらセキュリティー面での仕様かも知れません。 #エラー位出してくれればいいのに。 それからどういう訳か、perlスクリプト内で closeとするとSTDOUT までcloseしてくれちゃいます。#これってバグ? おかげで勝手にスクリプトが終了するので、これが分かるまで苦労 しました。 #closeにハンドル名をちゃんと指定するとOKでした。 とりあえずこんなとこまで分かりました。 設定は面倒ですが、これでやりたかった事に見通しが出てきました。 ありがとうございます。 >の6行下に書いてあります(^^; M.Masudaさんが見てるのは違うメッセージの > 説明ですよね。 お恥ずかしいばかりです。(>_<) aliasesの方は、どこの解説も68Userさんと同じ説明でした。 他のパッケージのサーバーで試してみます。 PS メール見てもらえましたか? PS2 私の隠しブックマーク見ましたね(^^; |
|
> メール見てもらえましたか? (僕にとっては)内容的に問題ないので、メールの続きはこちらでやります。 > その前に、田中 健という人物をご存知ですか? > http://www.club.kyutech.ac.jp/~hermit/ いやぁ、知らないです。イントラネット内(インターネットとは繋がって いない)で うちのページをコピーして社員向けに公開してもいいか、という メールは頂いたことがありますけど、それとは多分違う人だと思います。 ま、別にいいですけどね。どうせ間違いだらけ/役に立たないコンテンツ なので気にしません。おもしろいものを教えてくださって どうも ありがとうございました(笑) > forkされたプロセスでは、再びnobodyに戻ってしまう事です。 ん〜どうかなぁ? もしそうだとすると suidperl 内では、system や `` などで サブプロセスを(所有者権限で)使えないことになりますが、だとしたら suidperl の意味は半減しますよね。今 実行環境がないので、後からもう少し調べてみます。 > 私の隠しブックマーク見ましたね(^^; ははは、見たかもしれません。 カウンタのあるページは referer 取ってますので、ご注意を>All たまに、どんな風に紹介されてるか見に行ったりします。一度referer たどって行ったらボロクソにけなされてて、喜んでそこの人にメール 書いたこともあります。 # だって、「いいページだ」と書かれるより、「ひどいページだ」と # 書いてある方がうれしいから。悔しいので、ページを よりよいものに # しよう、という気が起こりますよね。 このBBSは referer 取ってませんでしたが、mmさんに > 向こうからこっちにリンクを張っておきますんで、 > 覗いてみて下さい(笑い) と言われたので、昨日から取り始めました(^^; でも、それらしいものが 見付からないなぁ。 > あっ、すいません。先に教えて頂いたときに、いろいろあるなー > と感心してたのですが、ライブラリのソースがあることまでは、 > 考えが及びませんでした(^^;;; まぁ僕はローカルにソースを展開しているので、grep 一発で探せますが、 ネット上で公開されてても探すのはつらいですね。 |
|
> forkされたプロセスでは、再びnobodyに戻ってしまう事です。 やはりうちではそうはなりませんでした。 #!/usr/local/bin/perl $|=1; $ENV{PATH}=""; print "Content-type: text/plain\n\n"; open(IN,"/bin/cat /etc/master.passwd"); print <IN>; if ( fork ){ system("/usr/bin/id"); } else { system("/usr/bin/id"); } というスクリプトをowner=root、permission=4755にして、コマンドライン、 httpd 経由両方で動くことを確認しました。600な/etc/master.passwdの 中身は表示されましたし、idの結果は uid=65534(nobody) euid=0(root) となりました。forkしても実効ユーザはrootのままでした(まぁ system を 実行するってことは、fork/execしてるわけですが)。 なお、PATHをクリアしないと Insecure $ENV{PATH} while running setuid at ./hoge.cgi line xx. となりました。 あ、ファイルを作成してみるのを忘れてた。もしかしたらそのとき作成した ファイルのオーナーは実効ユーザIDでなく、実ユーザIDが使われるのかも しれません。 |
|
えぇぇぇぇぇぇぇぇ!!!!!!??????? なんでぇ??? #すいません無駄な行を書いてしましました。(^^ゞ なんか、うちの環境system関数が変です。 suidを立てずに、普通に755のパーミッションです。 #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "Script Start\n"; if(system("")){ print "Done..\n"; }else{ print "NG! \n"; } #system("ls -l 2>&1"); print "End Script\n"; 2つめのsystem関数(system("ls -l 2>&1")の部分)を、コメントア ウトした時としない時の結果の結果を教えてくれませんか? うちの環境では、2つ目のsystemを有効にすると、サーバーエラー になります。 コマンドラインから実行すると、正常なんですが...。 #なぜ???? |
|
うちでも同じです。print文がバッファリングされた 状態でsystemの結果が先に表示されてるのでしょう。 先頭で $|=1 とすればいいでしょう。 httpdがログ(/var/log/httpd-error.logなど)に [Mon Mar 29 15:32:06 1999] [error] malformed header from script. Bad header=total 1406: と吐いてくれるはずです。 |
|
>先頭で $|=1 とすればいいでしょう。 なるほど、これ($|=1)も関係あったんですね。 う〜ん、もっと詳しく検証せねば。 もうちょっと探ってみます。 |
|
一般的には、以下のの方法でデバッグすると、大抵の場合解決すると思います。 #!/usr/local/bin/perl $|=1; print "Content-type: text/plain\n\n"; open(EXEC,"| .$ENV{PATH_INFO} 2>&1"); while (<STDIN>){ print EXEC; } という内容の wrapper.cgi を作ってください。hoge.cgiの動作チェックをしたいなら /~user/cgi-bin/wrapper.cgi/hoge.cgi や /~user/cgi-bin/wrapper.cgi/hoge.cgi?data などというURLで実行してください。そしたら、 - $|=1を付けないと Content-type より ls の結果が先に出力されてること - system や open(COMMAND,"command |") の中で cat: /etc/master.passwd: Permission denied などのエラーが起こっていること がわかるでしょう。一連の環境変数(QUERY_STRINGなど)は引き継がれますし、 POSTの場合のデータの受け渡しもできます。 というわけで、CGIが動かなかったら、まずはこれでチェックして みてください。 あと > もしかしたらそのとき作成したファイルのオーナーは実効ユーザIDでなく、 > 実ユーザIDが使われるのかもしれません。 は、suidなperlスクリプト中で新規ファイルを作成した場合は perlスクリプト所有者権限で動きました。つまり uid=65534(nobody) euid=0(root) の場合、新規ファイルのオーナーはrootになりました。 |
|
大変お騒がせしている、M.Masudadです。 こんどこそやっと解決マークがつけられそうです。(^^ゞ >なんか、うちの環境system関数が変です。 この件に関しては、原因はsystem関数実行時に、指定コマンドの パスが通って無いのが原因と判明しました。 フルパス指定するとsystem関数はちゃんと動きました。 今までsystemでコマンドを使ったサーバーのnobodyにはたまたま コマンドのパスが通っていただけみたいですね。 #いままでぜんぜん気が付かなかった....。 #なんか一人で大騒ぎしてますね。←私(>_<) まとめるとsuidスクリプトを、実行したい権限のオーナーにして chmod 4755 を設定。 $|=1; でバッファリングを止めて、systemで使うコマンドはフルパ スで指定するか、パスをあらかじめ指定しておく。 closeはどうですか?、ファイルハンドルを指定しなくとも最後に openしたハンドルのみクローズされると、思っていたのですが。 suidな時、STDOUTまでクローズされませんか? $|=1; は、保険と考えて全てのperlスクリプトに入れた方が、悩む 回数が減りそうですね。 やはりperlもosと密接に関係しているのが改めて分かりました。 こういうケースは、UNIXのシステムを十分理解していないとデバック しきれなかったかも知れないですね。 http://www.excel-net.co.jp/~masuda/su/ にある su.cgi に試験スクリプトを置きました。 これで見ると、だいぶ嘘ついてましたね。(^^ゞ 今までの件が判明しました。 実験に付き合ってもらってすいませんでした。 wrapper.cgiもありがとうございます。 非常に勉強になりました。m(_ _)m ところで、wrapper.cgiでのurl指定方法のwrapper.cgi/hoge.cgi は、知ってはいたのですがどういう動作になるのですか? ># だって、「いいページだ」と書かれるより、「ひどいページだ」と ># 書いてある方がうれしいから。悔しいので、ページを よりよいものに ># しよう、という気が起こりますよね。 いや〜こういう前向きな考え方をできる人って、今時なかなかいな いですよ。 #68UserさんってもしかしてA型? |
|
> ファイルハンドルを指定しなくとも最後に openしたハンドルのみ > クローズされると、思っていたのですが。suidな時、STDOUTまで > クローズされませんか? suidかどうか/httpd経由かコマンドラインか に関わらず、STDOUTが クローズされました。そもそもcloseってファイルハンドルを省略 すべきでないし、仮に省略した場合はselectで指定されたファイル ハンドル(デフォルトはSTDOUT)がクローズされるんじゃないですかね? # perl4、perl5.004で試しました。 > ところで、wrapper.cgiでのurl指定方法のwrapper.cgi/hoge.cgi > は、知ってはいたのですがどういう動作になるのですか? print文を埋め込んで試してみませう ;-) |
|
>suidな時、STDOUTまでクローズされませんか? ホントだぁ...これまた私の勘違い。 いままで作ったスクリプトを見直したら、ちゃんとやってました。 意識していたわけではなく、性格的な問題?からそうしていたの ですが、これって案外重要だったのですね。 この件でのスクリプトでの試験では、安易にそうしていただけでし た。#お恥ずかしい。(*^_^*;;; closeのみだとSTDOUTまでクローズされ、結果スクリプトが終了して しまうのですね。 >パスが通って無いのが原因と判明しました。 よく考えたら、スクリプト内で$ENV{PATH}=''としてるのに、何を 言ってるんでしょう私は。(; ;) でもなんで、$ENV{PATH}=''としなければいけないのでしょうか。 新たな疑問! #まるで小学生のガキが、なぜなぜ攻撃してるみたいですが..(^^ゞ #最近、私を含め周りにUNIX信者が増えている模様です。 #だって面白いんだもん。 >print文を埋め込んで試してみませう ;-) すいません、オバカでよく分からないのですが具体的にどうすれば 私にも理解できるでしょうか。 ↑完全に開きなおってるかもしれない(^_^)V これだけいろいろ御世話になっているので、何かお礼がしたいとこ ろですが、なにか出来る事が有れば言って下さい。 と、いっても何が出来るわけでは無いし....でも気持ちだけは有り ます。(本気度=120%) |
|
> すいません、オバカでよく分からないのですが具体的にどうすれば > 私にも理解できるでしょうか。 何を知りたいのかわからないので、全部は説明したくないです(結構な量になるので)。 何を知りたいのでしょうか? できれば open(EXEC,"| .$ENV{PATH_INFO} 2>&1"); というのを書いたのだから、「とりあえずPATH_INFOの値を見てみる」 くらいは試してください。 > でもなんで、$ENV{PATH}=''としなければいけないのでしょうか。 一言で言えば「汚れている」からです。消す必要はなくて、PATHを 再設定すればよかったですね。長くなるので青ラクダ本 P.409 参照。 別に質問するなってわけじゃないですけど、自分で調べる努力は必要です。 それでもわからなかったらどんどん質問すればいいですけど、その際でも 極限まで発生条件を切り詰めた上で、 「何がわからないか」「どのような状況で調べたのか」 などを書かないと、結局 回答者側が苦労するハメになります。 |
|
よかったやっと見れるようになった。(^^ゞ う〜んすいませんです。 >> すいません、オバカでよく分からないのですが具体的にどうすれば >> 私にも理解できるでしょうか。 > 何を知りたいのかわからないので、全部は説明したくないです(結構な量になるので)。 >「print文を埋め込んで試してみませう ;-)」 この意味そのものが分からなかったのです。m(_ _)m この文がどういう意味で書いたのか、何を言いたかったのか、 と言う意味で、単純に私の日本語理解度が足りないための質問でした。 > 何を知りたいのでしょうか? できれば > open(EXEC,"| .$ENV{PATH_INFO} 2>&1"); >「とりあえずPATH_INFOの値を見てみる」 > くらいは試してください。 setコマンドで環境変数を見てみましたが PATH_INFOは設定されてい ませんでした。 私なりに理解できた部分は open(EXEC,"| .$ENV{PATH_INFO} 2>&1"); .$ENV{PATH_INFO} の実行結果の標準&エラーを、openして標準入力 から読込み、表示させているという事位ですが。 前に使い方を、教えてもらい(wrapper.cgi/script.cgi)このような URL指定でscriptcgiを実行すると、コマンドラインでの結果の様な表示に なりました。 まず最初に、wrapper.cgi/script.cgi この様な指定をすると(URLで) httpdはどういう事を行うのでしょうか? 予想1: $ENV{PATH_INFO}には、コマンドでの引数に当たるものが代入される? 予想2: 最初に出現したwrapper.cgiの引数に、script.cgiを与えて実行する? $ENV{PATH_INFO}この環境変数自体が、いつどのように設定されるのかが 解からないので、動作の結果から推測だけですが.... スクリプトやコマンドの実行時に、コマンドラインでの引数を指定する のと同じような動作になるのでしょうか? 仮に上記の予想が合っているとして、「print文を埋め込んで試してみませう ;-)」 この文は、どこにprint文を入れろと言っているのかが、解からなかったのです。 私にとってまだ頭の中では、wrapper.cgi/script.cgiの様な指定方法は、 掲示板等では話題としては知っていましたが、具体的な内容まではまだ 未解析でした、すいませんです。 |
|
> よかったやっと見れるようになった。(^^ゞ サーバの定期メンテがあって、落ちてたようです。 そもそもの > ところで、wrapper.cgiでのurl指定方法のwrapper.cgi/hoge.cgi > は、知ってはいたのですがどういう動作になるのですか? からは、「何をわかっていて、何がわからないのか」が伝わって こないのですよ。 > 私なりに理解できた部分は open(EXEC,"| .$ENV{PATH_INFO} 2>&1"); > .$ENV{PATH_INFO} の実行結果の標準&エラーを、openして標準入力 > から読込み、表示させているという事位ですが でしょ? こちらもそれくらいはわかっているだろう、とは思うわけで、 一体何を説明すればいいのかわからんのです。ですが、例えば 「PATH_INFOというのはいつどこで誰が設定してくれるのか」 という質問なら答えられるわけです。 wrapper.cgi/hoge.cgi にアクセスすると、 ・apache が PATH_INFO に /hoge.cgi を設定する ・apache が wrapper.cgiを実行する です。それだけ。 別に特別な動作をするわけでなく、wrapper.cgi?hoge.cgi と 似たようなものだと思ってください。?を/に変えると QUERY_STRINGでなくPATH_INFOに値が入る、っていうくらいです。 という解説でいいですか? どうもそういうことを聞きたいんじゃ ないような気もするんですが、聞きたいことと違っていたら 「何が知りたいか」を書いてください。 |
|
>そもそもの 大変申し訳有りませんでした。 言葉が足りませんでしたね。 今までの流れから、「print文を埋め込んで試してみませう」 の所に何らかの意味合いが有ると思い、その意味合いを聴く為 あのような表現となりました。 それとは別に、最近の私の書込みも自分の中での疑問が次々に 解けていく快感に、つい調子に乗ってしまいフリートークBB Sの様な書込みをしてしまったことを、少々反省しています。 今回の場合は、解からないところ(自分の中での疑問点だった複 数箇所)が、同時に提示されたので私もどう理解を進めていけば いいのかが解かりませんでした。 >極限まで発生条件を切り詰めた上で そうですね、これはデバックやコーディングの上で大事な事で すね。 自分で解決する努力がすこし足りなかったですね。 というより本業の作業の間に行っている事なので、手抜きして いたのは事実ですね、反省してます。 >「何が知りたいか」を書いてください。 そうですね、デバック用に教えて下さったwrapper.cgiのコード の中には、解からない事が沢山ありますが、本来はオライリーの 動物シリーズを揃えて自分で調べればすむ事かも知れませんが、 >wrapper.cgi/hoge.cgi にアクセスすると、 > ・apache が PATH_INFO に /hoge.cgi を設定する > ・apache が wrapper.cgiを実行する という機能が何の目的でapacheに実装されているのか? デバック目的だけの機能では無いだろうし、本来の目的は何だろ う、というのがあります。 それから、基本的な動作を完全に理解しているわけでは無いので、 open(EXEC,"| .$ENV{PATH_INFO} での .$ENV{PATH_INFO}の記述が よく分かりません。 open(HANDLER,"shellcommand")とした時は""で囲まれた部分は、 シェルでの動作と、全く同じと考えていいのでしょうか。 そうするとPerlだと変数を結合するためのピリオドが、シェルの 場合頭にピリオドが付くと何を表すのか。 ちなみにecho `.$ENV{PATH}` としましたが、 ./home/masuda/.bashrc{PATH} と返り意味が分かりません。 と、こんなところです。 いろいろ他にもありますが、これから書込みの際は十分吟味した後 に書込みしたいと思います。 今後もよろしくお願いいたします。 |
|
> デバック目的だけの機能では無いだろうし、本来の目的は何だろう 「なぜその機能があるのか」と考えるのは、「C言語にはなぜ構造体があるのか」 というのと同じで、結局想像するしかないと思います。 でも、なぜ僕が wrapper.cgi?file=hoge.cgi(A) でなく wrapper.cgi/hoge.cgi(B) という引数の取り方をしたのかは説明できます。 hoge.cgiが ?data=content などと、GET方式でデータを取得する CGIだった場合、(A)より(B)の方が hoge.cgiに与える影響が少なく、 さらに wrapper.cgi 自体のコードも短くなるからです。 あと推測するに、ユーザにCGIであることを意識させない、という のもあるでしょう。例えばcgiwrapは /cgi-bin/cgiwrap/~username/hoge.cgi というURLでアクセスすることで、所有者権限でCGIを実行できます。 /cgi-bin/cgiwrap?user=username&cgi=hoge.cgi だったとしたら…思いつく限りではSave Asでファイルをセーブした際、 全てのCGIプログラムはcgiwrapというファイル名で保存されるでしょう。 ついでに言えばディレクトリのような階層構造を、素直な形で表現できます。 例えば http://www.freebsd.org/cgi/cvsweb.cgi など。 > そうするとPerlだと変数を結合するためのピリオドが、シェルの > 場合頭にピリオドが付くと何を表すのか。 そういう場合にprint文で値を表示してみてほしいわけです。例えば > open(EXEC,"| .$ENV{PATH_INFO} 2>&1"); の前に print "PATH_INFO = $ENV{PATH_INFO}\n"; と書いたとすれば、$ENV{PATH_INFO} eq "/hoge.cgi"であることが わかるでしょう。ならば、".$ENV{PATH_INFO}" eq "./hoge.cgi" と なります(これに確信がもてなければ print ".$ENV{PATH_INFO}\n"; を挿入してください)。で、「./hoge.cgi」とは何かと言うと、カレント ディレクトリにある hoge.cgi というスクリプトを実行しているだけですね。 |
|
なるほど、やっと理解できました。 68Userさんがわからないと言っていた事や、自分の勘違いが。 理解したと思っていた事が、全然理解できていなかったのですね。 やはり他の仕事の片手間のように勉強しているのと、基礎からしっか り勉強している人にはかないませんネ。 ちょっとプログラミングに深入りしすぎたかも知れません、web上で よく見かけるプログラム程度なら書けるかもしれませんが、システム や応用した機能みたいな部分(少なくとも私から見ると)は、ちゃんと 勉強しないと難しすぎます。 最近、業界では有名(らしい)なプログラマー人とファイルロックの 事で話しをする機会がありましたが、私とは基礎概念が違いました。 もう少し、時間をかけて基礎的な部分から修行したいと思います。 wrapper.cgi、ありがとうございました。 |
|
UNIXは初心者です、ここで質問して良いかもわかりませんが、よろしければお教え下さい。 OSはだいぶ古いSONY製のNEWS−OSというのを使用しています。相当古いマシンなので、また UNIXなのでちょっと恐くてさわれないのですが、基本的なコマンドは少し勉強しました。 前置きが長くなってしまいましたが・・・ハードディスクの空き容量を調べたいと思うのですが、どの ようなコマンドを使えば良いのかよくわかりませんでした。どうぞ、お教え下さい。そういうコマンドとか は無いのでしょうか? |
|
NEWS-OSはよく知りませんが、df -kで Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/sd0s1a 118959 25837 83606 24% / などという表示が出るんじゃないでしょうか。これだと 118M中 25M(全体の24%)を使用中ってことです。 |
|
はじめまして。他にはないCGIスクリプトばかりで大変助かっています。 それでですが、.htaccessで <files browser.log> deny from all </files> <files referer.log> deny from all </files> : : というような設定がありますが、 <files *.log> deny from all </files> <files *.dat> deny from all </files> とやるだけで全ての***.log、***.datファイルが見れなくなります。 どうぞお試しくださいませ。(知ってたらごめんなさい。(汗)) |
|
ども、おひさしぶりです。 お元気でしょうか? 私は相変わらずです。(^_^; 何度もここで色々聞こうと思っては思いとどまり何とか自分で解決してきたんですが、 とうとういきずまりました...。 データのチェックで foreach $line (@lines) { ($a,$b,$c,$d) = split(/\,/,$line); if ($d ne '') { $dd++; } } とした時の @line の値(?)が 22,,55, 23,1,25, というような時、$dd に+1されてしまいます。 本当は何か値が入っていたら+1したいのです。 なんとなく「22,,55,(改行)」となっていて $d ne '' で改行が判断できないからかなと思うのですが...。 そんなモノなんでしょうか? $d ne '' ではないなら式はどうなるのでしょう? なんか解りにくくてすみません。 説明下手なんですが...そこを何とか...。(-_-; |
|
> とやるだけで全ての***.log、***.datファイルが見れなくなります。 どうもです。本当は *.log というファイルだけではなく、 /~j5306050/log/ 以下を見られないようにしたいんです。 <directory /home/95s/j5306050/public_html/log/> deny from all </directory> とか <location /~j5306050/log/> deny from all </location> などと書いても、 500 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. になっちゃうんで、仕方なくああいう風にしました。 これって書き方間違ってるんでしょうか? あと、試しているうちに、 <files browser.log> deny from all </files> と書いても、/~j5306050/log/browser.log は見ることができるのに気がつきました。 ずっと誰かに見られてたかも…(^^; <files log/browser.log> だとうまくいきましたけど。 > というような時、$dd に+1されてしまいます。 おそらく$lineの最後に改行コードが付いているからだと思いますので、 foreach $line (@lines) { chop $line; とするか、 if ( $d =~ m/\d/) { $dd++; } と、$dに数字が入っているかどうかを調べてはどうでしょう。ちょっと変ですけど、 if ( $d ne "\n" ) { $dd++; } もアリかも。 |
|
なるほど(?)、ありがとうございます! Perl の専門書を買わないと駄目ですね...、コマンド(?)が全然解らない...。 唯一理解できたのが、 if ( $d ne "\n" ) { $dd++; } ですが...、そっか! 改行コードって \n でしたね...、普段使ってるのにすっかり忘れてました...。 また勉強してきます!! |
|
68Userさん、皆さんこんにちは。 横やりですが... >/~j5306050/log/ 以下を見られないようにしたいんです。 www.cs.gunma-u.ac.jp は Apache1.2.6ですよね。 <Directory>ディレクティブは.htaccess では使えません。 この場合<Limit>を使ってこんな感じでできると思います。 ##### .htaccess内 ###### <Limit POST GET> order deny,allow deny from all allow from HOSTNAME </Limit> ### .htaccess 終了#### 外してたらごめんなさい。 |
|
> <Directory>ディレクティブは.htaccess では使えません。 なるほどなるほど、確かにdirectoryやlocationは、server configだけ でしか使えないみたいですね。それは知りませんでした。というわけで、 <files log/*> deny from all </files> にしました。public_html/log/.htaccessに deny from allと書いても いいんでしょうけど、設定ファイルが分散するのが嫌だったので 一つにまとめました。 > Perl の専門書を買わないと駄目ですね...、コマンド(?)が全然解らない...。 前にROLさんにも同じような事を書きましたが、はっきり言って 本を買わずに プログラミング言語を理解しようとするのは時間の無駄です。数千円の金を 惜しむあまり、結果的に数十/数百時間の貴重な時間を無駄にしています。 手元に本があれば数分でわかるのに、BBSで丸1日かけて質問するのは とても非効率的ですよね。 悪いことは言いませんから、早く本を買いましょう。オンライン版がいいなら http://www.cec.co.jp/usr/hasegawa/Docs/perl-jman/index.html ftp://ftp.mei.co.jp/free/others/Languages/perl/perl5/perl5.000/perljref-5.000.0.tar.gz |
|
すいませんまたまた教えて欲しいのです。 下のスクリプトでおかしい所は無いでしょうか。 #!/usr/bin/perl -w use Net::Ping; print "Content-type: text/plain\n\n"; $hostname = 'pingコマンドの返らないホスト'; print "Checking $hostname\n"; if (pingecho($hostname,$timeout)){print "Echo on\n"} else{print "Echo off\n"} $hostname = 'pingの返るホスト'; print "Checking $hostname\n"; if (pingecho($hostname,$timeout)){print "Echo on\n"} else{print "Echo off\n"} exit; リャマ本のP531でのNet::Pingを試しているのですが、 上記の試験結果は両方ともEcho offです。 もちろんホストの指定の間違いもありません。 初めて use コマンドを使うので、何か他に間違いがあるのかと use行をコメントアウトしたり、他のコマンドを使ってみましたが (use Cwdの結果は正常に表示)原因が不明です。 最初このコマンドを知らずに、自分で`ping -c1`とararmを使って コーディングしましたが、シグナルを受け取った後の制御がうまく できずにリャマ本を調べていたら、「なんだこんな便利なものがあ るじゃないの!」と思い使ってみましたがこれもまたうまく行かず 原因が分かりません。 Net/Ping.pmも存在しますが、その記述内容は私には高度すぎて 全然分からずお手上げ状態です。 どうかご教授よろしくお願いします。 |
|
下には書き忘れましたが、$timeout=2;も指定してあります。 |
|
リャマ本って、「プログラミングPerl改訂版」ですよね? ラクダ本じゃなくてリャマ本が正式名(というか通称)なんですか? それとも「ラクダ本=旧版」「リャマ本=新版」? 何も試さずに書きますが、リャマ本にも書いてある通り、pingechoは 「TCPのechoプロトコル」を使って ホストが生きているかどうか調べます。 が、少くともFreeBSDのデフォルトでは echoポートは閉じられていますので、 一般的に「echoが通る=生きている」とは言えないでしょう。 echoプロトコルってのは http://X68000.startshop.co.jp/~68user/net/echo-1.html です。だから、telnet hostname echoでお話しできたら、pingechoでも 正しい答えが返ってくるはずです。 |
|
追加。これまた何も試さずに書きますが、さらっとNet.Pmを見た限りでは 適切な引数を渡せば ICMPのecho も使えるようです。これを使えば /sbin/ping と同じ挙動をさせられると思います。 |
|
> さらっとNet.Pmを見た限りでは Net/Ping.Pm の間違いですね。で、ちーと試してみました。結論から言うと、 use Net::Ping; $p = Net::Ping->new("icmp",$timeout); $p->ping($hostname); ですかね。でも、root権限が必要です。Ping.Pm の croak("icmp ping requires root privilege") if $>; を外せば、一般ユーザ権限でもいけるかも(試してません)。 |
|
>リャマ本って、「プログラミングPerl改訂版」ですよね? すいません誤解を招くような書き方をして(^^; そうです「プログラミングPerl改訂版」を指しています。 他でそのような表現があったので、安易に使ってしまいましたが >ラクダ本じゃなくてリャマ本が正式名(というか通称)なんですか? 私も正式には不明です。 #ラウンジで聞いてみようかな... > croak("icmp ping requires root privilege") if $>; > を外せば、一般ユーザ権限でもいけるかも(試してません)。 そうですか、確かに icmp ping requires root privilege と言われました。 suidや、Ping.pmを編集する事まではしたくないのです。 やはり「なんだこんな便利なものがあるじゃないの!」の認識は ちょっと甘かった様ですね。 一発での`ping -c1 $hostname`とararmの方法はわかりますので、CGI単体 で行おうとせず他の方法を組み合わせて試してみます。 ちなみにあのスクリプトの目的は、普通のサーバーではなくダイアルアップ サーバー?(プロバイダーでユーザーの電話回線経由の接続を受け取るヤツです) が生きてるかどうか、つまり一般的にいうPPPxxx.domain.ne.jpとかが 接続状態かどうかを調べるツールを作ろうとして、そのための動作確認 用の試験スクリプトでした。 >http://X68000.startshop.co.jp/~68user/net/echo-1.html これからの課題なので勉強します。 それから、ちょっと違うとは思いますがBASICの場合でいう割り込み処理から 復帰する際のリジュームコマンドの様な事はできないのでしょうか。 つまりラベル等で復帰先の指定をするという事です。 最初がBASICだったものでこういう表現しかできませんが、68Userさんがその 辺(BASIC)詳しくなければ無視してください。 ありがとうございました。 |
|
> 一般ユーザ権限でもいけるかも(試してません)。 /sbin/ping もsuidされてるので、ICMPをしゃべるにはroot権限が 必要なんじゃないでしょうか。だから多分コメントアウトしても ダメだと思います(未確認ですけど)。 > つまりラベル等で復帰先の指定をするという事です。 んー、gotoとかですか? Perlでは、ほとんどgoto文を使う必要は ないと思うのですが。他の方法で代用できませんか? # alarmのシグナルハンドラからの復帰先を指定したいとか? |
|
>/sbin/ping もsuidされてるので 本当ですね。今まで気づかず使っていたみたいです... #mount等がそうなのは分かりますが。ICMPをしゃべる事自体 #root権限が必要なのだろうか?無駄なトラフィックを避ける為? > alarmのシグナルハンドラからの復帰先を指定したいとか? はい、まったくそのとおりです。 #やっぱ表現力足りないみたい>自分 gotoは68Userさんと同じ理由で使うつもりは有りません。 ラクダ本でのalarmの解説が、私にとっては不十分なので上記の 方法があるのかさえ分かりません。 #シェルスクリプトでも同様の方法があるのでしょうか? またこういう処理をする時に定石の様なものは有りますでしょうか。 あれば簡単でも教えてもらえれば助かります。 |
|
> またこういう処理をする時に定石の様なものは有りますでしょうか。 定石かどうかはわかりませんが、 sub alarm_handler { # ここに処理がきたということは、2秒以内にpingが終了しなかったということ # なので子プロセスを殺す。 kill 1,$child_pid; $flg = 0; } $SIG{ALRM}=\&alarm_handler; $flg = 1; if ( $child_pid = fork ){ # 親 alarm 2; # 2秒後にalarmセット wait; # 子プロセスの終了を待つ alarm 0; # 2秒以内に終ったら、alarm解除 } else { # 子 exec "ping -c 1 host"; } if ( $flg == 1 ){ ping成功 } とか。本来はもっと賢い方法があるのかもしれませんね。 子プロセスの始末まで考えなくていいなら、 sub alarm_handler { $flg = 0; } $flg = 1; if ( fork ){ alarm 2; sleep 4; } else { exec "ping -c 1 host"; } if ( $flg == 1 ){ ping成功 } でもいいかも。 |
|
サンプルまで書いてもらってありがとうございます。 自分で書いたスクリプトも、ほとんど同じような事をして、 さらに引数で秒数を指定できる様にしてあります。 #もっともこんなスマートには書いてないですが(^^; >子プロセスの始末まで考えなくていいなら、 自分のスクリプトではこの部分の処理まではしていません。 試験時にスクリプト実行後(シェル、web経由)にpsで確認しても プロセスが残る事はなかったので。 シェルやアパッチがこの辺の処理はやってくれると思っています。 #そう思いたいってのが本音。 スマートなスクリプトの為の勉強になりました。 いつもありがとうございます。 |
|
初めまして。 HTTPについてのページを読ませていただきました。 telnetでHTTPに接続できるとは思いもよりませんでした。 そこで、質問があるのですが、cookieを送信するときは、 どのようにすればよいのでしょうか?おしえてください。 |
|
> cookieを送信するときは どのようにすればよいのでしょうか? 送信するだけなら、 Cookie: hoge=fuga などとします。 % telnet www.cs.gunma-u.ac.jp 80 GET /~j5306050/cgi-bin/printenv.cgi HTTP/1.0 host: www.cs.gunma-u.ac.jp Cookie: hoge=fuga てな感じ。そしたら printenv.cgi の中では $ENV{HTTP_COOKIE} eq 'hoge=fuga' となります。 > 試験時にスクリプト実行後(シェル、web経由)にpsで確認しても > プロセスが残る事はなかったので。 たしかに、親プロセスが死ぬ(終了も含む)と子プロセスには SIGTERM(だったかな?)が送られますので、普通は特に後始末を する必要はないです。 もちろん子プロセスがシグナルをブロックしていたら その限りではありませんけど。 |
|
どうもありがとうございました。 netscapeはちょっと重いので、簡易ブラウザーを作ってみようかと 考えています。 |
|
端末のネットスケープで日本語入力をしたいのですが いつもemacsで書いてカットアンドペーストをしています。 ダイレクトに入力することはできないのですか? |
|
kinput2を立ち上げて、NN/NC上のテキスト入力エリアで、 Shift+Spaceで変換モードONだったような気がします。 kinput2 は .xsessionの中で起動すると楽です。 |
|
ども、こんばんわ。 今、初めて1から CGI を書いているのですが、 そこでちょっと質問が...。 JPERL でチェックした所、問題なく動いた(様に思う)のですが、 アップロードしてパーミッションを変更しても、お約束の 「Internal Server Error」がでます。 68user さんはエラーチェックなどはどうやってますか? |
|
> 68user さんはエラーチェックなどはどうやってますか? 1. サーバのログ(/var/log/httpd-error.logなど)を見る。 2. コマンドラインで実行。 3. 思い当ったところをいろいろ変えてみる。 3-1. 環境変数(PATHなど) 3-2. スクリプトの文字コード(EUC or SJIS) 3-3. 実行権限(nobody権限で動くかどうか) 4. http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1999-03-26 の 68user 1999/03/29(月) 16:11 一般的には、以下のの方法でデバッグすると、大抵の場合解決すると思います。 で説明したスクリプトをかまして実行。 5. 怪しいところから順にコメントアウト。もし動いたら、直前にコメントアウトした 部分がおかしい。 てな感じでしょうか。実際にやったことがあるのは1〜3くらいです。 あとさ gunma-u の方、質問して回答をもらったら、それに対する 返事くらい書いてね。「わかりました」「やってみたけどうまく いきませんでした」くらいでいいから。それが最低限の礼儀だと 思います。それが嫌なら trouble@cs.gunma-u.ac.jp に質問して下さい。 # 別に gunma-u に限ったことではないけどね。 |
|
当然のことですが、念のため補足を。 > それが嫌なら trouble@cs.gunma-u.ac.jp に質問して下さい。 trouble宛なら返事出さなくていい、ってわけじゃないです。 |
|
はい、わかりました。 「ありがとうございます、うまくいきました」と書けば良かったですね。 本を見ながら初めて頭から書いたので多分色々不都合やら効率が悪い所やら あるんでしょうが、これから一個一個潰していきます。 でわ、また御礼か泣きつきに来ます。(^_^; 毎度毎度、ありがとうございます。 |
|
はじめまして,こんにちは. つい1週間ほど前にFreeBSDに手を出した者です. さっぱり解らないので色々と探してここにたどり着きました. ”UNIXのお部屋”は大変参考になりますね.すごく重宝します. また何か解らないことがあったらこちらに伺おうと思っているので その時は何卒よろしくお願いします. |
|
どもども。今後ともよろしくです。 表現がわかりにくい/構成が悪い部分があったら教えて下さいね。 どうも肥大化しすぎて、どこをどうすれば利用しやすくなるのか わからなくなってしまいましたので。 |
|
たぶん完成しました。(^_^; http://www.raidway.ne.jp/~nouveau/dc/sh/ に置く、race.htmlとrrr.cgiです。(cgiはrrr.txtにしておいてあります) どんなもんでしょう? wrapperが非常に役に立ちました、ありがとうございます。 ところでハッシュというものは一時的にでも並べ替えは出来ないんですね。 代入した数値順での並べ替えでずっと詰まってました...。 |
|
> http://www.raidway.ne.jp/~nouveau/dc/sh/ > に置く、race.htmlとrrr.cgiです。(cgiはrrr.txtにしておいてあります) では拝見…と思ったら not found。 どこにあるんでせう? > 代入した数値順での並べ替えでずっと詰まってました...。 毎回ソートする必要がありますね。解決されたようですが、 一応書いておくと、キーを数字順でソートしたいなら foreach ( sort {$a<=>$b} keys %hash ){ print "$_ $hash{$_}\n"; } 値を数字順でソートなら foreach ( sort {$hash{$a} <=> $hash{$b}} keys %hash ){ print "$_ $hash{$_}\n"; } 文字としてソートなら <=> ではなく cmp、などなど。 |
|
すみません、置く前に書いたんで...。 設置にも手間取ってたりしました、何故かエラーが...。 ハッシュの件は解決しなかったので処理が終わったら 別の変数に代入しちゃいました。 この辺はかなり無駄がありそうですし、エラーがあるなら この周辺でしょう...。 むぅ、foreach ( sort〜ですか...、組み込めるかな...。(-_-; お手数おかけしました。 |
|
あ、見れた。で、気づいた事。 - $monが0月〜11月になっちゃいませんか。 うーん、これくらいかなぁ。後はどーでもいいというか、些細な事というか、 好みの問題というか。 - EOF は End Of File の略なので、EOTが適当…なんでしたっけ? (EOT=End Of Textのつもり)。 - if ($... <10) { $... = "0..." } の羅列より、 $now = sprintf("%4d/%02d/%02d ...",$year+1900,$mon+1,$mday,...) の方がすっきりするかも。 全体的に特に問題はないんじゃないでしょうか。 |
|
後は > ($dtm,$soft,$point,$reho) = split(/\,/, $data[0]); ($dtm,$soft,$point,$reho) = split(/,/, $data[0]); > $temp = $now."\,".$FORM{'soft'}."\,".$FORM{'point'}."\,".$ureho."\n"; $temp = "$now,$FORM{'soft'},$FORM{'point'},$ureho\n"; くらいかなぁ。ほんとに細かいことですけど。 それからこれは根本的な問題ですが、FORMから渡される値をチェックして ないので、変なのを入れられる可能性がありますね。旧SEGA BBSのように。 渡された値が適切かどうかを調べるのは(僕は)必須だと思います。 |
|
あ、3月だ...、全然気付きませんでした。(-_-; 変な書き方してますね私、指摘されると自分でも思う...。 sprintfは便利ですね。でもなんで%02dの時だけ『0』が...。 私の持ってる本も%02dだけ0が付いてる...。 > FORMから渡される値をチェック... とりあえず$ENV{'HTTP_REFERER'}のチェックを入れてみます。 って、コレだと投票できないブラウザがあったか...。<SSとか 全部の値をチェックするんだったら投票フォーム部分も組み込んだ方が 楽そうだし、そうしようかな...。<いづれ(^_^; 勉強になりました! >変なのを入れられる可能性がありますね。旧SEGA BBSのように。 ギクッ! |
|
111111 |
|
2222222 |
|
こんばんは。 Perlのreaddirでの現象でお聞きしたいのですが。 普通、以下の様な記述で@filesには、ディレクトリ内のファイル& ディレクトリが入りますが、この配列の中に返される文字列の中に 複数のバイナリが混じるというのは、ディレクトリエントリが壊れ ているのでしょうか。 opendir(DIR, "./"); @files = readdir(DIR); closedir(DIR); 特にヌル(\x00)が多量に含まれます。 さらにこの状態のディレクトリを、他のディレクトリにコピー した時に症状が引き継がれるのは、壊れていると仮定すると 親ディレクトリからの影響が出ているのでしょうか。 またこの症状が出るのは、nfs等で共有しているディレクトリです。 何か分かる事が有りましたら、よろしくお願いします。 ちなみに以下のスクリプトでは問題無く表示されます。 #!/usr/local/bin/perl $|=1; print "Content-type: text/plain\n\n"; $_ = system("ls -l ./ 2>&1"); print "$_\n"; |
|
> でもなんで%02dの時だけ『0』が...。 要は桁合わせですな。 Ex. printf("%d,%4d,%04d\n",10,10,10); > この配列の中に返される文字列の中に複数のバイナリが混じるというのは、 > ディレクトリエントリが壊れているのでしょうか。 うーん、どうなんでしょうねぇ。漢字のファイル名ってこともありますし、 バイナリが混じっているだけで壊れているとは言い切れないです。 > 特にヌル(\x00)が多量に含まれます。 ファイル名にヌルってありだったかなぁ…? 具体的な出力結果を見てみないことには、なんとも言いがたいです。 |
|
あ、しょうもないことかも知れませんが emiclock の costumes で Transparent dress (一番下のコスチューム) を、どうやったら拝めるのでしょうか? |
|
>漢字のファイル名 これは無いです。 本によると「システムによって保守されるディレクトリ構造の内容」 とあります。という事からエントリが壊れているのかと思った訳です。 しかし、意図的に壊してみることまではさすがにできないので、 困ってしまいました。 もう少し調べてみます。ありがとうございました。 |
|
> Transparent dress (一番下のコスチューム) > を、どうやったら拝めるのでしょうか? あはははは。誰もが一度は思った疑問ですね。 僕も知らなかったんで調べてみました。 1. 30分チャイムを鳴らす設定にする。 2. alarmを....年............に.....。 3. 30分チャイムが鳴るまで待つ(0分or30分) 4. Costumesに…なんとアレが! ちなみにオリジナルのMac版のドキュメントには以下の記述がありますなぁ。 > < ひとりごと > > ある日、もとそふと探検隊は某秘境の洞窟の壁に書かれた落書きを発見した。 > 壁には、「1958年10月24日06時33分」と落書きされていた。これ > が、いったい何を意味するのかはわからない。 > 洞窟は、さらに奥へと続いていた。仲間と30分に待ち合わせることにして、 > チャイムをセットし、隊長はさらに奥へと進んだ。 > 30分を知らせるチャイムが鳴った。そのとき、隊長の顔は、笑顔に変わって > いた。ついに秘宝を発見したのだ。 …で見れますか? うちのemiclockは30分チャイムがなぜか選べないようになってるんですが… なんでだろ。というわけでソースを1行書き換えて見てしまいました(^^; |
|
大変お久しぶりです。岩本です。 とは言っても覚えている人はいないでしょうけどね(笑) 実はUNIXでお伺いしたいことがあります。 crontabでシェルを動かしたいのですがうまくいきません。 以前Masudaさんに「実行時に有効になっている環境変数を 表示させてみて・・・」のアドバイスを頂き、その通りやって 見たところ、確かに環境変数がほとんど指定されていませんでした。 そこで環境変数をスクリプト内で追加設定させたいのですが どうすればよいのでしょうか。ちなみにスクリプトに envやsetenvを使って自ユーザログオン時の環境変数を 設定させてみたところ結局実行時に変数は変わってませんでした。 OSはソラリス2.5、マシンはsun7の300です。 ご存知の方、お詳しい方がいらっしゃいましたら よろしくお願いいたします。 |
|
> そこで環境変数をスクリプト内で追加設定させたいのですが > どうすればよいのでしょうか。 動かしたいものがshスクリプトなら、先頭付近に export HOGE=fuga 書くとか。cshスクリプトなら setenv HOGE fuga てな感じでしょうか。 |
|
68userさん、ありがとうございました。 無事問題が解決しました。 今後ともよろしくお願いします。 |
|
ども、はじめまして。パソコンスクランブルの方でこのページ をターゲットにしてしまったREMAHLと申します。EUCとリンクフリー という条件が重なったため、あちらの掲示板にてソースが化ける 例として取り上げさせていただきました。この度は大変失礼しました。 それからスクリプト2、3頂きました。CGI勉強中なので研究材料 として使わせていただきます。これからもよろしくお願いします。 |
|
どもども。ああいう場合に他サイトを例に出すのは 僕もよくやることなので、お気になさらぬよう。 |
|
>どもども。ああいう場合に他サイトを例に出すのは >僕もよくやることなので、お気になさらぬよう。 お気遣い、有り難うございます。 つい最近CGIを始めたばかりなので「CGIの小部屋」は 私のような素人には非常に参考になります。今は人様の 作られたスクリプトを改造している程度なので、まだまだ 分からないことだらけです。もし分からなければこの掲示板で 質問を、と思っていますので、その時はよろしくお願いします。 |
|
始めまして。 掲示板を発見したので、感謝の言葉でもと思い書き込みました。 仕事中に壁にぶつかるといつもこのサイトをみて解決の手助けにしてます。 とても助かってます。 これからも宜しくお願いします。 |
|
こんにちは。 ためになる、きれいでわかりやすいページなので大変よろこんでいます。 (色使いなんかも目に優しくていいですね、コードなんかを白バックで 読むのなんて耐えられませんです ^_^;) がんばって勉強させていただきます。 これからもがんばってください。 最高にクールです |
|
お褒めいただき、ありがとうございます>しょいちさん、pzさん ただ、ここの記述がわかりにくいとか、このコマンドの この機能が解説されていないなど、悪いところも書いて いただけると なおうれしく思います。何かお気づきに なりましたら、また書き込んでください。 |
|
はじめました、bsdのコマンドマニュアルとして重宝させてもらって ます。ところで hello worldと一行書いてccでコンパイルしたら a.outができましたが ./a.out と入力しないと動きません。 単純にa.outと入力して動かすにはどうしたらよいのですか? |
|
PATH に . を加えれば、カレントディレクトリのプログラムが実行されます。 しかし、セキュリティ上お勧めしません(共用のマシンなら特に)。例えば set path = ( . /bin /usr/bin /usr/local/bin ) とすれば a.out だけでも動きます。しかし、誰かが /tmp/ls に #!/bin/sh rm -rf ~ という内容のプログラムを置いていた場合、あなたが cd /tmp; ls としただけで、あなたのホームディレクトリ以下のファイルは 全て消えます。 ですから、PATHには . は含めない方が賢明です。どうしてもというなら、 set path = ( /bin /usr/bin /usr/local/bin . ) などと、最後に付け加えましょう(でもお勧めはしません)。 タイプがめんどくさいという理由なら、シェルの補完(Ctrl-DとかTAB)を 有効に使う方がいいと思います。 |
|
さっそくの解答thanksです とりあえずset pathの最後に.を追加致します。 シェルの補完はよくわからないので、もう少ししたら やってみます(^^ゞ |
|
お久しぶりです。(^^; やっぱ68Userさんは、プログラマー志望だったのですね。 #当り前と言えば当り前なのかもしれないですが... ところで、BSDIというOSを知っていますか? 実はうちの環境にソレが入ったのですが、BSD系らしく作法が 少々異なっています。 なにか、知っていたら教えてください。 Linux系(SystmV系?)との操作上の違う所とか注意点とか。 #やっと日本語manを入れて少し分かりはじめたのにまた振り出し... もちろん漠然と聞いているので、思い付いたような事でいいです。 hoppyさんへ >シェルの補完はよくわからないので、 コマンドを途中までタイプして、タブキーを押すとうれしい事が 起こりますヨ! |
|
> やっぱ68Userさんは、プログラマー志望だったのですね。 いや、プログラマというわけでは…。どちらかと言えば、 プログラムを書けるSEかなぁ。 > ところで、BSDIというOSを知っていますか? 名前は知ってますが、使ったことはないです。 # 多分OS名はBSD/OSじゃないですかね。BSDIは会社名。 ## ちなみに BSDIのBSDとFreeBSDのBSDは、意味が違います。 ### ってことはどーでもいいですね(^^; > Linux系(SystmV系?)との操作上の違う所とか注意点とか。 うーん、ps の引数の違いくらいしかわからないなぁ (Linuxのpsって、BSDともSysVとも少し違ったんだっけ?)。 あとはカーネルが /vmunix か(SysV)、/kernel か(BSD) とか…(ほんとか?) あと、FreeBSDもLinuxもGNUのソフトをたくさん使ってますが、 BSD/OSがそこらへんを独自に作ってるなら、結構そこらへんで はまるかもしれません。 # http://www.gnu.org/software/software.html のfileutils、shellutils、 # diffutils、GNUtarあたり。 あと、パッケージ管理(pkg_add/pkgadd)とかユーザ管理(adduser/useradd) なんてのは各UNIXごとにバラバラなんで、ご注意を。 |
|
どもです(^^; >プログラムを書けるSEかなぁ。 なるほど、志が高い(^^; ただ、私の周りにはちょっと偏屈な技術者が多く、人間性は信じら れない人がおおいです。初心者を馬鹿にしきった口振りや態度など、 誰でも始めは初心者で、識者からの教えられかたでその人間がどの ように覚えてゆくかが決まると思うのですが... たとえば、とほほさんとは何度かメールのやり取りをしてますが、 プログラマーな人なのに、おおらかな人間性を感じました。 68Userさんは、くれぐれもそうならない様に期待します。 #これは本心です、いやみじゃ無いので誤解なさらぬように。 > # 多分OS名はBSD/OSじゃないですかね。BSDIは会社名。 > ## ちなみに BSDIのBSDとFreeBSDのBSDは、意味が違います。 > あと、FreeBSDもLinuxもGNUのソフトをたくさん使ってますが、 > BSD/OSがそこらへんを独自に作ってるなら、結構そこらへんで > はまるかもしれません。 > # http://www.gnu.org/software/software.html のfileutils、shellutils、 > # diffutils、GNUtarあたり。 > あと、パッケージ管理(pkg_add/pkgadd)とかユーザ管理(adduser/useradd) > なんてのは各UNIXごとにバラバラなんで、ご注意を。 ありがとうございます、ぜんぜんOKです。 こういう事を知りたかったのです。(^^)/ 最初に触れたUNIXがLinuxなので、その他のOSやその作法について はまだまだなんです。 #変更後まだ数日しか経ってないもので。 ただ私は、プログラマー志望では無いので余り深みにはまらぬよう に慎重にしないと、ついつい...(^^; ちなみにBSDIは、「Berkeley Software Design Inc」の略だそうです。 プロバイダの商用OSとしてかなり普及していると聞きました。 しかし、私が借りた無料レンタルWebスペースのOSは Linuxでした。 |
|
>プログラマーな人なのに ここ、訂正します。 これじゃ、偏見ですね。(^^; プログラマー方すいませんでした。 |
|
とほほさんとこの話題が出てますね(笑い) そのとほほさんのラウンジの質問を見ていて思い出したのですが、 (質問自体は、ホームぺージの作成には関係なさそう…) statが返す構造体のmodeの上位7ビットはどのような意味がある のでしょうか? 上位3ビットは、 0x8000 ブロックデバイス 0x4000 ディレクトリ 0x2000 キャラクタデバイス であることは分かったのですが、下位の 0x1000 0x0800 0x0400 0x0200 が分からないのです。 検索で探しても、ビットの意味まで記述した記事が見つけられなくて…(^^; ところで、perlのCGIで、 (stat(STDOUT))[2]&0x2000 (stat(STDOUT))[2]&0x8000 を調べて見ると、下の方が真となって、ブロックデバイスと 出たのですが(STDINも同じ)、これってウチのWebサーバーが CGIの標準出力を一旦ファイルにリダイレクトしている ということなのでしょうか? |
|
あれから、ls のソースを調べればいいと考えたのですが、 その中で、S_IFDIR とかを #defined した stat.h を探すのに 手間取ってしまいました。 (やはり、grep一発でカタが付く環境が羨ましい…(^^;) それはともかく、各ビットが意味を持つ訳ではなく、 0xF000 type of file mask でマスクした値が以下の意味を持つようです。 0x1000 named pipe (fifo) FIFO 0x2000 character special キャラクタ型スペシャルファイル 0x4000 directory ディレクトリ 0x6000 block special ブロック型スペシャルファイル 0x8000 regular 通常ファイル 0xA000 symbolic link シンボリックリンクファイル 0xC000 socket ソケットファイル 0xE000 whiteout 0x0200 save swapped text even after use ところで、最後の2つは何なんでしょうか? |
|
> ただ、私の周りにはちょっと偏屈な技術者が多く、人間性は信じら > れない人がおおいです。 ん〜、まぁ初心者の程度にもよるかと。僕の場合、自分で調べようと しない人、一度聞いたことを覚えようとしない(メモを取らない)人には、 教えたくないですね。 もちろん、 > 初心者を馬鹿にしきった口振りや態度 がよろしくないのは当然ですが、教えをられる側の程度にも よるのではないかと思います。 > たとえば、とほほさんとは何度かメールのやり取りをしてますが、 > プログラマーな人なのに、おおらかな人間性を感じました。 いや〜僕はあんなに心が広くないので(^^; ちなみに僕は他人に(直接面と向かって)教えてると、だんだん 不機嫌になってきますので、あまり教えないようにしてます(笑)。 |
|
> その中で、S_IFDIR とかを #defined した stat.h を探すのに > 手間取ってしまいました。 stat(2)を見るのが一番早いんじゃないでしょうか。 > 0x0200 save swapped text even after use sticky bitです。chmod 1755、chmod u+t などとすればこのビットを立てられます。 以下、知ってたらごめんなさいな説明。 昔のUNIXでは仮想記憶はなく、実メモリと HDD上のスワップ領域の 2本立てでした。で、sticky ビットが立っているファイル(実行ファイル?) のテキスト領域は、実行後もスワップ領域に保持され、再実行する際は 高速に実行できるようになっていました。つまり頻繁に使うプログラムの stickyを立てておけば高速に実行が可能だったわけです。 しかし、現在のコンピュータはキャッシュや仮想領域が進化したので、 stickyビットの重要性はなくなりました。FreeBSDではファイルに 対する stickyビットは無視されています。 # ここらへんは、正しいことを書いているかどうか自信がありません。 一方ディレクトリに対する stickyはちゃんと意味があって、 誰でもその下にファイルを作成することはできるけど、削除する際は ファイルのオーナーしか削除できないという意味があります。 /tmp がいい例ですね。 % ls -ld /tmp drwxrwxrwt 18 bin bin 1536 May 30 07:57 /tmp/ > 0xE000 whiteout うーん、ローカルの全ファイルに対して、このビットが立ってるか どうか調べてみたんですが、1つもありませんでした。なんでしょうね? > 下の方が真となって、ブロックデバイスと > 出たのですが(STDINも同じ) 僕のまわりのFreeBSD/Solarisでは、STDIN/STDOUTともに、普通の状態だと キャラクタデバイス(ttyですな)、ファイルにリダイレクトするとregular、 パイプならFIFOになりました。CGI上で実行すると、IN/OUTともFIFOでした。 # http://X68000.startshop.co.jp/~68user/tmp/mode.txt # http://X68000.startshop.co.jp/~68user/tmp/mode.cgi > これってウチのWebサーバーがCGIの標準出力を一旦ファイルに > リダイレクトしているということなのでしょうか? mmさんのところってHPですから(でしたよね?)、実装の違いがあるの かもしれないので、僕の知識では何とも言いがたいです。 |
|
>stat(2)を見るのが一番早いんじゃないでしょうか。 あっ、すいません、以前教えて頂いた、 http://www.jp.freebsd.org/man-jp/search.html で、stat を検索すると、 マニュアルがみつかりませんでした。"stat.[1-9n]" という警告が出たんで、こっちは諦めてたのですが、 ウチのサーバーの man にはありました…(^^; ただし、ビットの意味までは書いてないです…× ところで、この stat(2) の (2) とかの数字は、どういう 意味なのでしょうか? 以前から少し気にはなってたんですが、ついつい放ったらかし にしてました…(^o^;ゞ >sticky bitです。chmod 1755、chmod u+t などとすれば >このビットを立てられます。 あっ、sticky bitと聞いて思い出しました(^^; swapの話や/tempの例も読んでたのですが、 昨日は連想が全く働きませんでした…すいませんですm(__)m >以下、知ってたらごめんなさいな説明。 とんでもないです。知らない可能性の方が高いので、 お手数でなければ、ぜひ今後ともよろしくお願いしますm(_~_)m >どうか調べてみたんですが、1つもありませんでした。なんでしょうね? ls のソースを見てると、S_IFDIRに'/'、S_IFSOCKに'='という感じで、 S_IFWHTには、'%'を付けてるので、何か意味があるんでしょうね。 とにかく、下位9ビットの上の3ビットは 01000 sticky bit 02000 SGID 04000 SUID ということで、8進で書いたら、UIDとかとの関連で思い出しました(^^; (modeはやはり8進の方が分かり易い…) >CGI上で実行すると、IN/OUTともFIFOでした。 私もそれを期待してたのですが… それはともかく、先にウチで実行したCGIはマスクが 間違ってたので、mode.cgi を実行してみました。 環境は、HP-UX Netscape-Enterprise/2.01b です。 # http://www2s.biglobe.ne.jp/~cru/test/mode.cgi 1100000 000000000 is SOCKET 1100000 000000000 is SOCKET ウッソー? なんで、ソケット?? 実は、nph-cgiで実行されてて、WWWサーバーの代わりに ラッパーがヘッダを付加してるとか??? ちなみに、Windows95での実行結果です。 C>perl mode.cgi 0010000 000000000 is CHAR_DEV 0010000 000000000 is CHAR_DEV C>perl mode.cgi < file1 >file2 C>cat file1 | perl mode.cgi | more 1000000 110110110 is REG_FILE 1000000 110110110 is REG_FILE ついでに、Win95 のJava WWWサーバーでの実行結果 0001000 000000000 is FIFO 0001000 000000000 is FIFO あれ? is REG_FILE を予想したのですが…?? |
|
> http://www.jp.freebsd.org/man-jp/search.html > マニュアルがみつかりませんでした。"stat.[1-9n]" > という警告が出たんで、こっちは諦めてたのですが、 このページ、日本語版がなければ英語版を表示してくれればいいのに。 改善要求出しておきます。 > ところで、この stat(2) の (2) とかの数字は、どういう意味なのでしょうか? セクション番号です。 http://X68000.startshop.co.jp/~68user/unix/pickup?man 結構OSによって違っていて、SunOSなんかだと、1B,1C,1Fなどがあったり、 またあるOSではシステムコールだけど、別のOSではライブラリという ものもあるので、セクション番号はあまり絶対的なものではありません。 各セクションの詳しい説明は、man 1 intro とか man 2 intorでわかります。 > S_IFWHTには、'%'を付けてるので、何か意味があるんでしょうね。 どうやら、unionファイルシステムというものに関係があるようですね。 でも役割などはよくわかりません。 http://home.jp.freebsd.org/cgi-bin/namazu.cgi?key=whiteout&dbname=users-jp http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/miscfs/union/Attic/libc.fts.c?rev=1.1.1.1 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&cmd=&man=mount_union&dir=jpman-3.2.0%2Fman > C>cat file1 | perl mode.cgi | more > is REG_FILE > is REG_FILE DOSのパイプは、一度ファイルに落としてから再度そのファイルを リダイレクトして実現しているんでしたっけ。 |
|
会社でホームページを開設するんですが,サーバを管理してほしいとの事なんです。 NTTから直接らしいんですが、ネットワーク用なんです。 回線はOCNエコノミーです。 具体的にどんな本を読んで勉強すればいいか教えてください。 具体的に教えていただけると、本当に感謝です。 勉強しますんで是非アドバイスを下さい。 お願いします |
|
あーうー、あなたが現在どれだけの知識を持っているか、どんな OSを使うのかがわからないので、なんとも答えにくいです。 # それに、僕はその分野の良書を知らないので…。 サーバおっ立てるなら、とりあえず DNS/WWW/SMTP/POP くらいを 勉強すればいいでしょう。書店に行けば 「FreeBSD(Linux)で始めるインターネットサーバ」(この書名はあくまでも例です) などという本が結構置いてあると思うので、数冊買って読んでみては いかがでしょう。ドメイン登録が必要なら、JPNICへの手続きの 方法が書いてあるものを買うといいかも。 とまぁ非常に簡単なアドバイスしか言えませんが…。 |
|
>セクション番号です。 ありゃ〜! すいません、詳細な説明があったのですね(^o^;ゞ ついでに質問してしまったもので、ロクに調べてませんでしたm(__)m >セクション番号はあまり絶対的なものではありません。 なるほど、分かりました。 >このページ、日本語版がなければ英語版を表示してくれればいいのに。 >改善要求出しておきます。 そういえば、検索フォームに >日本語はセクション 1,5,6,7,8 のみです(無いものもあります)。 とありました。 セクションの意味が分かってなかったので、ぜんぜん気にしてなかったです(^^; それと、日本語で見つからなければ、言語で英語を選んで探せばいいと 思って今見に行ったら、なぜか英語が選択できなくなってた…なぜだろう?? >DOSのパイプは、一度ファイルに落としてから再度そのファイルを >リダイレクトして実現しているんでしたっけ。 本来のDOSではその通りです。 パイプの使用中にディレクトリエントリを取ると、ファイルが見えます(笑い) Win95のDOS窓でも同じみたいです。 ただし、Win95のWin32では、プロセス間通信としてのパイプを サポートしてるようなので、Win32のperlで、 open(FH,"| cat"); &get((stat(FH))[2]); を実行すると、Javaの場合と同じ is FIFO になりました。 |
|
68userさん, 大昔のSEGA PC-BBSでピンボケ発言をしていた Netboyです. 'にくぽんBBS'の掲示を見て,お邪魔しました. お肉さんは会社の研修で,今月はネットできないそうです. SEGA PC-BBSの過去ログの件なんですが,私がサーバーと 回線を用意しますので,そちらで公開を継続していただく ことは可能でしょうか? T1以上の回線上のサーバーを新しく仕込む予定です. 68userさんにアカウントを発行して,68userさん用のHP領域を 差し上げますので(ログ展開用と合わせて2G程度), そちらで当面の間,公開を続けていただきたいのです. '当面の間'とは,具体的には,来夏くらいまでです. その後のことは,やってみてからご相談したいと思います. 勝手なお願いですが,よろしくお考えいただけますよう, お願い申しあげます. - - - - - - - - - - - - - - - - お肉さんの過去ログ置き場である私の自宅サーバー (ODN;64kbps常接;Linux)なら,とりあえずすぐに使えます. ログを移設したりする用途であれば,すぐにでも アカウントを発行できます.ただし,遅〜いボロサーバー ですけど. |
|
こんにちは、Netboyさん。 > お肉さんは会社の研修で,今月はネットできないそうです のようですね。書き込んだ後に知りました(^^; > T1以上の回線上のサーバーを新しく仕込む予定です. > 68userさんにアカウントを発行して,68userさん用のHP領域を > 差し上げますので(ログ展開用と合わせて2G程度), え〜、T1って1.5Mbpsですよね(違いましたっけ)。 2Gと言えば2GBですよね(そりゃそうだ)。結構な容量です。 しかし、それだけのリソースを僕に貸し与えることによって、 Netboyさんにメリットが発生することは全くないように思える のですが、なぜそういうお申し出をされるのでしょうか? # 失礼な質問かもしれませんが、素朴な疑問です。 > '当面の間'とは,具体的には,来夏くらいまでです. これは2000年の夏、ということでしょうか。 僕が持っているログは、1997/4〜1998/4のもので、現在は 更新していません。よって、一度設置してしまえば保守する 必要はないので、HDDがクラッシュでもしない限り、永遠に 存続させられると思います。 容量は向こうに書いたように、ログ自体が100M、namazuの インデックスが300MB超(400MBいくかも)です。 過去ログ自体、懐古主義以外のなにものでもありません。アクセス 自体もそんな頻繁にあるわけでなく、たまに現BBSで「ここで昔のが 見られるよ」という発言があったときに、アクセスが増えるくらいです。 # http://X68000.startshop.co.jp/~68user/cgi-bin/view-count.cgi?log=day4 昔を懐かしむためだけに、何も新しいものを生み出さない コンテンツのために、T1の回線と数百MBの容量を僕に与えて いいのでしょうか? 今一度お考えください。 なお、別に断っているわけではありません。こちらがお受けした後に Netboyさんが「こんなはずでは…」と思われるのは避けたいので、 現状を御理解いただいているのか確認したいわけです。 # もちろん「やっぱりやめます」ということになっても、全く構いません。 |
|
68userさん, ご質問いただき,ありがとうございます. >しかし、それだけのリソースを僕に貸し与えることによって、 >Netboyさんにメリットが発生することは全くないように思える >のですが、なぜそういうお申し出をされるのでしょうか? お申し入れをした理由は次のようなものです. 1.SEGA PC-BBSのファンであること 2.ログの保存と公開について68userさんの 活動に関心を持っていたこと 3.Web掲示板CGIにちょっとした機能を付け加える計画を 進めていて,このような'ログの置き場所・公開方法の問題'を ある程度解決したいと考えていること さらに,たまたま私がお手伝いしているPCパーツショップさん のサーバーを任されていて,偶然予備のWebサーバーが空いている のです.このサーバーはFreeBSDです. >一度設置してしまえば保守する >必要はないので、HDDがクラッシュでもしない限り、永遠に >存続させられると思います。 もっとアクセス量があるのかと思っていました.それなら 帯域幅を圧迫しないと思いますので,特に期限は無しで 構いません.アクセス量があると,来年のサーバー設置 料金が上がってしまうので難しいところです. 領域の余った部分はお好きに使っていただいて構いません. Telnetごしに普通の感じで触れるようにします. 詳細はメールでご質問にお答えできますし,ご説明したい ことがらもいくつかあります. メールを差し上げて構いませんでしょうか? (長文で失礼しました) |
|
追加して補足します. 予定しているサーバーは,群馬の両毛インターネットさんという 業者さんのところにある,上流が東京インターネット系6Mbps (又はODN系1.5Mbps)のサーバーです. 商用サーバーですが,営業内容とは関係ない,お得意様ユーザーさん のHPやパーツのドライバ類,データシート,掲示板などを収容する 予定のものです.よってコンテンツはすべてコピーフリーになります. ただし,メインWebサーバーがコケたときは,こちらを復旧機材に 徴用されますので停止します.オマケにこの業者の米NIC用2nd-NS サーバーと兼用になっていて,Webトラフィックがあまりに重くなると 怒られてしまいます. |
|
> お申し入れをした理由は次のようなものです. なるほど、概ね理解しました。では、 ・僕もNetboyさんも、一切の義務/責任を負わない ・アカウントの存続、容量などは、Netboyさんの一存にお任せする ということなら、お申し出をお受けしたいと思います。 > もっとアクセス量があるのかと思っていました ちなみに5月のアクセス数(ヒット数: httpd-access.logをgrep|wc -l したもの)は10000弱です。全文検索を付ければもう少し増えるかも しれませんが、倍増とか3倍増などということはありえないと思います。 > メールを差し上げて構いませんでしょうか? はい、よろしくお願いします。 > 群馬の両毛インターネット takauji.or.jp でしたっけ? ところで、なんでtakujiなのかしら。 |
|
>・僕もNetboyさんも、一切の義務/責任を負わない >・アカウントの存続、容量などは、Netboyさんの一存にお任せする >ということなら、お申し出をお受けしたいと思います。 ありがとうございます. 上記の条件は了解いたしました. >ところで、なんでtakujiなのかしら。 さぁ...(笑) 企業向けのryomonet.co.jpというのもあります. では,メールをこれから送りますので. |
|
え〜、トップページにも書きましたように、 http://X68000.startshop.co.jp/~68user/index.html にリンクを張っていらっしゃる方は http://X68000.startshop.co.jp/~68user/ に、 http://X68000.startshop.co.jp/~68user/unix/index-unix.html にリンクを張っていらっしゃる方は http://X68000.startshop.co.jp/~68user/unix/ に修正していただくようお願いします。 /~j5306050/index.html や /~j5306050/unix/index-unix.html を指してるリンクは 全部修正したつもりです。 なんでかと言うと、webを作り始めたときは index.html を省略できることを 知らなかったんですが(^^;、やっぱりURLは短い方がいいよなと思って 変えてみました。めんどくさいことさせてすいませんが、ぜひご協力を。 あと、(やっと)UNIXのとこに検索フォーム付けました。 |
|
このサイトを Infoseek で見付けてしまった、高山と申します。 68user さん、はじめまして(笑)。 このサイトには、HTTP クライアントや、POP3 クライアントの作り方 など、他にはあまり無い情報があって、hacker 志望(実力は全然で すが)な僕には、かなり為になります。 これからも、たまに見に来ようと思いますので、頑張ってください。 では。 # www-links Project 。もっと人手が欲しい〜。 # 特に、三平さんの収集した URL の整理とか、相当キツそう(涙)。 |
|
余談ですが、HTTPのソースを見たい時はブラウザに view-source:http://abc.hogehoge.com/ とかするとソースウインドウが開きます(笑) 既に知ってますかね、でもCGIだと色つけとかすれば 便利そうです、作ってみようかな・・・ |
|
<a href="http://abc.hogehoge.com/">http://abc.hogehoge.com/ |
|
x−mate3.0をしている人、おしえてください。 メールを待ってます。 |
|
x−mate3.0をしている人、おしえてください。 メールを待ってます。 |
|
> 68user さん、はじめまして(笑)。 どうも(^^; > hacker 志望(実力は全然ですが)な僕には、かなり為になります。 いや〜、ほんとは「カーネルの読み方」とか「デバイスドライバの作り方」とか 書きたいんですけど、実力がないのであれが精一杯…。 高山さんはとっても若いので、今のうちに勉強して立派なハッカーになってください。 > # www-links Project 。もっと人手が欲しい〜。 担当の部分が進んでなくてすいません。システムができないことには メンバの協力も得られませんから、早く仕上げなくてはと思っているんですが。 URLの整理くらいなら、www-links-workで手伝ってくれる人を募集しては どうでしょう。 > view-source:http://abc.hogehoge.com/ これは知りませんでした。というか、この手のはいろいろあることは 知ってるんですが(about:とか)、細かい部分は全く知りません。 # ところでウスターソースさんって、どこかで見かけた記憶があるんですが(失礼)、 # SEGA? それとも、とほほBBSかな。 |
|
始めまして。 ちょっと悩んでいるので教えていただきたいのですが、 日本語(漢字使用可)のtalk,write,phoneを探しているのですが ご存知ですか。お分かりになれば教えていただきたいのですが。 |
|
okphoneはどうでしょう。 ftp://ftp.win.or.jp/pub/network/okphone/ ただし、クライアントだけが日本語に対応すればいいのか、それともサーバの 対応も必要なのかはわかりません。あと、talk/writeはわかりませんです。 # ICQを使うってのは? |
|
はじめまして。 REF HAT5.2をインストールしていろいろテストしているのですが、 PCの場所移動のためにIPアドレス等を変更したいのですが、 どのファイルを直せば良いのでしょうか? Xが使えれば簡単に直せるようですが、ディスプレイが悪いのか、 設定が悪いのかわかりませんが、まともに画面が見れなくなってしまうので、 Xでの設定は出来ないんです。(こっちを直せという意見もありますが・・・) 詳しく説明しているページを紹介してくださってもかまいません。 どうかご教授ください。 |
|
RED HATの打ち間違えです(^^ |
|
Linuxは知りませんが、一般的に/etcの下なの確かでしょうね。 /etc/sysconfig/ の下とかにないですか。 grep 133.8.3 /etc/{*,*/*,*/*/*} などとして、どこで設定しているのか調べてみてはどうですか。 # 133.8.3 は現在のIPアドレスね。/etc/hostsや/etc/resolv.conf、 # デフォルトゲートウェイの修正も忘れずに。 |
|
UNIXプロセスの終了について質問したいと思います。 普通はkill プロセスIDという方法で終了できるのですが、 なぜかうちのsolarisは終了できません。 そのやり方を以下のように再現します。 g10410@iclab[1]/home/g10410>ps -ef | grep java g10410 19018 19011 0 14:41:16 pts/8 0:00 grep java g10410 17832 1 0 5月28 ? 0:03 /usr/java/bin/java -classpath /usr/dt/appconfig/hotjava/classes:/usr/dt/appconf g10410@iclab[2]/home/g10410>kill -KILL 17832 g10410@iclab[2]/home/g10410> g10410@iclab[3]/home/g10410>ps -ef | grep java g10410 19026 19011 0 14:41:53 pts/8 0:00 grep java g10410 17832 1 0 5月28 ? 0:03 /usr/java/bin/java -classpath /usr/dt/appconfig/hotjava/classes:/usr/dt/appconf 最後の一行のように、なぜか終了できませんでした。 そもそも /usr/java/bin/java -classpath /usr/dt/appconfig/hotjava/classes:/usr/dt/appconf なんで動いたままになってるのかわかりませんので、どうか御教授下さい。 サーバーの負荷が重いから停止させてくれと、文句を言われているので、 なんとか終了したいものです。 |
|
ゾンビプロセスや、ディスク入出力待ちのまま固まってる プロセスは殺せません。 > 文句を言われているので、なんとか終了したいものです。 え〜、リブート…とか(^^; |
|
はじめまして。 インストール後に表示言語設定を コマンドを使って変更する事は可能なのでしょうか? ちなみにインストール時に設定したのは英語と日本語の 混在で、変更したいのは日本語表示です。 |
|
ネットワークプログラミングの基礎知識について すごくわかりやすかったです。 ありがとうございました。 |
|
何とか自力でできました。 これからも度々来させてもらいますので その時はよろしくお願いいたします。 |
|
はじめまして。超初心者です。 xvの説明のところに 「Xの起動時に背景に好きな壁紙を貼りたい場合は.xsessionに % xv -root -quit file.jpg などと書いておけばよい。」 とありますが、.xsessionが見つかりません。 どこにあるにでしょうか。 |
|
.xsession がなければ .xinitrc でいいです。具体的には xdmで Xを起動しているなら .xsession 、startxやxinitでXを起動しているなら .xinitrcです。 |
|
はじめまして。 私も日本語表示で困ってます。 Solaris2.6にTeraTermを使ってコーディングを行っているのですが、 日本語が文字化けしてしまいます。 LANGはjapanese、TeraTermの設定はEUCに設定してあります。 このほかに注意する個所がありましたら教えてください。 ちなみに他の人は同じ設定で文字化けしてないようです。 |
|
> LANGはjapanese 化ける化けないに関してはLANGはあまり関係ないです(と思います)。 症状がよくわからんのですが、日本語が書かれたファイルをcat するだけで化けますか。cat hoge|nkf -eでEUCに変換すると どうなりますか。 補足。 > .xsession がなければ .xinitrc でいいです。 どちらもホームディレクトリに置けばいいです。どちらもなかったら http://X68000.startshop.co.jp/~68user/unix/config.html#%7E%2F%2Exsession のような内容のファイルを作成しておきましょう。 |
|
再び日本語表示 さんへ 設定を保存しましたか? 設定し直した後に setup→save setup で設定を保存します。 一回終了してもう一度立ちあげると直ると思います。 |
|
cat hogeでは、日本語は表示されます。 問題はviで日本語入力した際、文字化けしてまうことです。 (説明不足でした。すみません) OSのエラーコメントなどは、正常に日本語で表示されます。 |
|
いい忘れました。設定するのはtera termの方です。 ついでにこちらの方から質問があります。 OSをインストールしたのですが、root直下に.Xdefaultsが できません。インストールに失敗したのでしょうか? それからVXVAをインストールしたのですが’本マシンではVxVAを起動することはできません。’というメッセージがでて起動しません。 バージョンも対応osにも問題ありません。よろしくお願いします。 |
|
>ユニ男 さん TeraTermの設定を保存し、再び起動してみましたが、 まだ文字化けするようです。 |
|
>再び日本語表示さん Telnetではどうですか? |
|
Telnetも同じ症状です。 設定を日本語EUC、SJISのどちらにしても 日本語の入力は文字化けします。 うーん・・・なぜなんだろう??? 正常に動いている人の.profileを見ても 環境変数は同じなんですけどねぇ。 |
|
> 問題はviで日本語入力した際、文字化けしてまうことです。 じゃあTeraTermの問題ではないですね。そのviは日本語を通しますか? 手元のSolarisには、 /usr/xpg4/bin/vi /usr/bin/vi /bin/vi /usr/ucb/vi がありますし、それに加えてelvisもあります。少なくとも/bin/viは setenv LANG ja しないと化けてました。 他の方はviを使っていても化けないのなら、その人の環境でwhich viして どのviを起動しているか、環境変数はどうなっているかを調べてはどうでしょう。 > OSをインストールしたのですが、root直下に.Xdefaultsが > できません。インストールに失敗したのでしょうか? OSと言ってもいろいろありますけど、普通インストール直後には .login、.cshrc、.profile、.mailrc、.rhosts くらいしかできない はずだと思います。 # /usr/share/skel あたりに置いてあるやるがコピーされるわけです。 > それからVXVAをインストールしたのですが VXVAとは何か知らないので、残念ながらお役に立てそうにありません。 |
|
>再び日本語表示さん Telnetではどうですか? |
|
viは日本語を通します。 which viでは、私も正常に表示される環境も /usr/bin/viを使用しています。 LANG=ja export LANG とし、envでちゃんと格納されているのを確認しました。 TeraTermの設定も確認させてもらいましたが、 やっぱり同じです。表示されない理由がわかりませんが、 もうすこしあがいてみます(苦笑) |
|
>68user さんへ 返答ありがとうございました。 .XdefaultsはべつのCDからインストールすることがわかりました. それからVXVAとはVXVMというディスクのミラー化(ROOTいかのファイルを全て万が一のために同じものをバックアップとしてさくせいする)するためのソフトのユーザーインターフェイスのことです。 とりあえずこれは再インストールすることになりました. >再び日本語表示さんへ そうゆうことになると私もお手上げです. 力不足の私をお許しください・・・ |
|
こんにちは。 X ウィンドウシステムというのは OSとは別個にインストールするものなのでしょうか? もしそうだとすればどこから手に入れれば良いのでしょうか。 よろしくお願いします。 |
|
OSはなんでしょうか。UNIX系OSならば、よほど変なOSでない限り Xも一緒に付いてきますので、何も入ってないとしたらインストール時に 選んでないだけだと思うのですが。 |
|
>68user OSはUX/4800です。 結局ほかのサーバーからコピーしてきました。 でも変ですね。インストール時にディレクトリ も指定したんですけど・・・。 |
|
>68user ’さん’ 呼びつけで送ってしまいました。ごめんなさい。 よろしくお願いします. |
|
.xinitrcもないのですが・・・ |
|
日本語入力ができるようになりました。 原因は stty istrip なるものが.profileに記述されてたことです。 自分で書いたものでないので、気づかなかったのですが、 これは入力文字を 7 ビットにストリップする処理でした。 相談に乗ってくださった68userさん、ユニ男さん、ありがとうございました。また何か合った際はよろしくお願いします。 |
|
> 原因は stty istrip なるものが.profileに記述されてたことです。 stty istrip だと、catは通っても vi は化けるのですか。 勉強になりました。 # こちらのSolarisでは再現できませんでしたが > OSはUX/4800です。 HP-UX か HI-UX ですよね。どっちも使ったことがないのですが、 > .xinitrcもないのですが・・・ .xinitrc も .Xdefaults も .Xresources も、最初は存在しないもの じゃないかと。 xinit/startxを実行すると、最初に ~/.xinitrc を探し、それがなければ サイト標準の設定として /usr/X11R6/lib/X11/xinit/xinitrc (FreeBSDの場合) を実行します。ですので、ユーザごとにカスタマイズしたい場合は、その ファイルを ~/.xinitrc にコピーして、いろいろ設定するものだと思います。 # see man xinit |
|
相談に乗って頂きありがとうございました。 (結局わからずじまいなのですが・・・) 今度はもう少し勉強してから質問したいと思います。 では、またいつかお世話になると思いますので、 その時まで・・・ |
|
gzipをインストールしたのですが gzipコマンドで.gz拡張子ファイルを解凍しようとしたら 'gzip:コマンドは見つかりません'と突っぱねられてしまいます。 とりあえず本当にgzipがインストールされているか確認したのですが しっかり入っています。 なにか、コマンドの登録などが必要なのでしょうか。 初歩的な質問で申し訳ありませんがよろしくお願いします。 |
|
以下の問題解決しました。 ついでにお聞きしたい事があるのですが、sendmailの バージョンを strings /usr/ucblib/sendmail | more で開いて確認しようとしたのですが、どれがバージョンの数値か 解りません。もし知っていらしたら教えていただけないでしょうか。 |
|
はじめましてnyaと申します。よろしくお願いします。 質問があります。 ファイルのなかにコマンドをいれておいて 実行出来るようにパーミッションを変更したら ファイルの中のコマンドを実行してくれますよね。 そこで、「cd」をおこなったら、ファイルが終了 したときにファイルを実行したディレクトリに もどってます。これを、実行しおわったらその移動先の ディレクトリにする方法はないでしょうか? 説明がよく分からない質問だとは思いますが よろしくお願いします。 |
|
> 以下の問題解決しました。 簡単にでいいから、どういう風に解決したか書くといいと思います。 > sendmailのバージョンを sendmailのバージョンって調べにくいんですよね。 SMTPサーバとしてsendmailを動かしているなら、telnetを使えば % telnet ホスト名 smtp 220 ホスト名 ESMTP Sendmail 8.8.8/8.8.8; Fri, 9 Jul 1999 16:06:17 +0900 (JST) などと表示されるはずです。 > ファイルのなかにコマンドをいれておいて 要は、スクリプトの中でchdir(cd)したとき、そのスクリプトが 終了した後に、カレントディレクトリが戻らないようにしたい、 ということですか? だとしたら無理です。シェルがスクリプトを実行すると新しい プロセスが生成されますが、カレントディレクトリはプロセスごとの 固有の情報ですので、スクリプト(子プロセス)の中でカレント ディレクトリを変更しても、シェル(親プロセス)には影響を 与えません。 解決方法はない…と思います。多分。 |
|
68userさん、ありがとうございます。 質問の意味はその通りです。 無理なんですか・・・。わかりました。 これからもよろしくお願いします。 |
|
68userさん、ありがとうございます。 質問の意味はその通りです。 無理なんですか・・・。わかりました。 これからもよろしくお願いします。 |
|
2重投稿してしまいました。 どうもすみません。気にしないでください。 |
|
>> 以下の問題解決しました。 >簡単にでいいから、どういう風に解決したか書くといいと思います そうですね。 まあ簡単なことで、gzipをインストールしたディレクトリのパス(/usr/local/bin/gzip ….gz)を付け加えないで、そのまま(gzip … .gz)打ち込んでいたために解凍できなかったようです。 そんなこんなで今sendmail.cfをCFツールを用いて編集しています。 そこでもまたいろいろな問題があがってきています。 そのことについてはまた後日質問させていただきます。 初歩的な質問ばかりでうんざりだと思いますが、そこをあえてよろしく お願いします。こっちも知ってることがあったら(薄い知識しかありま せんが)極力答えていきたいと思います。 お互いがんばりましょう!! |
|
こんにちは。 sendmail.cfファイルをCFツールを使って作成しようとして いるのですが、'****.def'を編集した後'make ****.cf'で .cfファイルが生成されるはずですが'`****.cf' is up to date.' というメッセージが出るだけでモノが生成されません。 なにかMakefile内での編集が必要なのでしょうか? perlのディレクトリ設定はしてあります。 なお現在使っているCFツールは'CF-3.7Wpl2.tw.gz'を解凍したもの です。 よろしくお願い致します。 |
|
はじめまして、GLINDAと申します。いつも参考にさせて いただいております。 HP-UX10.20をVUE環境にて使っているのですが、 ログイン時にいちどだけ走らせたいスクリプトを作り、 .loginに入れてみたのですが動いてくれません。 (.vueprofileのVUESOURCEPROFILEはtrueにしてあります) 初期プログラムは/bin/cshで、.cshrcでパスを通していますので そのあとであればスクリプト実行の記述は.loginの中でなくとも かまいません。 いろいろ調べたのですがわからなくて、とても困っています。 なにか解決方法があったら、どうか教えていただけないでしょうか。 よろしくお願いします。 |
|
> '`****.cf' is up to date.' 一般的に - tar zxvf CF-3.7Wpl2.tar.gz で展開して - cd CF-3.7Wpl2 で移動して - make cleantools、make tools して - make samples して - 好きなファイルを cp Standards/sendmail-*.def sendmail.def でコピーして (CF-3.7Wpl2の直下にコピーすること) - sendmail.defを適当に編集して - make sendmail.cfを実行すると sendmail.cfが作成される - sendmail.defを編集しないまま makeすると、sendmail.cfが sendmail.defより新しいのでup to dateとなる というところだと思いますが、ここらへんをちゃんとやってるなら ちょっとわかりません。 > GLINDAさん HPもVUEも知りませんが(VUEってナニ?)、~/.login に setenv HOGE fuga などと書いて、本当にその部分が実行されているか調べてみてはどうですか? % printenv HOGE fuga となるなら、スクリプトの記述ミス、と。 |
|
68userさん、返答ありがとうございました。 もう一つ質問させて下さい。 とりあえず'****.def'を編集して、makeをかけたのですが、以下のよ うなメッセージが出てしまいます。 MASTERDIR=./Master TOOLDIR=./Tools \ ./Tools/Configure sendmail.def > sendmail.cf.tmp UX:sh (sh):エラー:./Tools/Configure:実行できません. *** Error code 1 (bu21) make: fatal error. sendmail.cf.tmpというのはできています。 Configure内を編集しなければならないのでしょうか? マニュアルにはtoolディレクトリ内のsendmail.cf作成用ツールを自分 のPCの環境に合わせてくれとかかれていますが、それと関係があるのでしょうか? よろしくお願いします。 |
|
> 68userさん、返答ありがとうございました。 解決しましたか? 回答が役に立ったら「〜の部分が抜けていた」とか 「〜をしていたがこれが余計だった」などと書いてください。 原因が別のことだったら、その原因を書いてください。 こっちもこういうやりとりを通じて知識を得たいので、 聞きっぱなしは ご勘弁を。 > makeをかけたのですが、以下のようなメッセージが出てしまいます。 どこでこけてるのかわかりませんが、Configure は shスクリプトなので、 % env MASTERDIR=./Master TOOLDIR=./Tools ./Tools/Configure sendmail.def % env MASTERDIR=./Master TOOLDIR=./Tools sh -x ./Tools/Configure sendmail.def などとしながら原因を切り分けてみては。 |
|
> 68userさんへ 投稿したときの状況としては解凍・展開してできた(68userさんが示していた手順で)STANDARDディレクトリ内の適応する***.defファイルをCF-3.7Wpl2 ディレクトリにsendmail.defとしてコピーしviで編集しCF-3.7Wpl2 ディレクトリ内でsendmail.cfをmakeしたところで下のようなメッセージが出ていました.それに加えてMAKEFILE内のPERLの存在するディレクトリを編集したのですが、make toolsを実行した時点でNOT FOUND PERL と言うメッセージが出るのも気になります。 投稿したあと自分のほうで調べてみたのですが、setenvで現在の環境を確認してみたのですが、シェルの部分がSHELL=/sbin/cshとなっていました。Configure内をみてみると、どうやらshの方を使おうとしているようなのでcshではなくshを使うように環境を変えなければならないのではとは思っていましたが設定を変えてみても(完全に変わっているか疑問)、Configure内の頭の部分、PATHなどを変えてみましたがうまくいかず、結局バージョンの古いCFがOSの付属についてきたCDROMに入っていたのでそれでもう一度チャレンジしている途中です。こっちの方はmake tools実行時のPERLの参照もうまくいき、Configure内もCF-3.7Wpl2のものとPATHなどが異なっているのでこっちで一回試してみようと思います. それでだめなようであれば、68userさんの今回示してくれた手順で試してみたいと思います。 |
|
> 68userさんへ 68userさんのいう通りに環境を変えようとしましたが、 肝心のConfigureの部分だけ許可を与えられていないと拒否されてしまいます。(以下のメッセージ) UX:env:エラー:許可を与えられていまん.: ./Tools/Configure 許可ははずす事が可能なのでしょうか? なお、CFツールはshとPerlは必須のようです。 よろしくお願いします。 |
|
68userさん、レスありがとうございました。 setenv文を入れて実行したところ、.loginが 起動していないということがわかりました。 >HPもVUEも知りませんが(VUEってナニ?)、 VUEというのは、HP-UX上で動くグラフィカル・インターフェースで Visual User Environment の略称です。AIX等では同等の機能を CDEと呼んでいます。 DOSに対するウィンドウズシステムのように、コマンドをアイコン/ボタン 化して使う環境のことです。説明不足ですみませんm(__)m .loginが動かないのは、どうやらこのVUE環境の設定がよくない ようなのです。前回の質問で「VUESOURCEPROFILE="true"にしてある」 と書いたのですが、この設定が有効であれば.loginを起動するはず なのにされていない…設定ファイルの書式に間違いがないか、 調査中です。 |
|
> AIX等では同等の機能をCDEと呼んでいます。 なるほど。なんとなくわかりました。 最初の一回だけ実行すればいいのなら、~/.cshrc に if ( $?FIRST_FLG ) then command setenv FIRST_FLG endif などと書くという手もあります。$prompt や $shlvl(これはtcshだけかな?) を使ってもいいでしょう。 > UX:env:エラー:許可を与えられていまん.: ./Tools/Configure chmod +w ./Tools/Configure してもダメですか? |
|
>68user さん .cfファイルできました。(まだ.defの方の設定が適当なので.cf内は空っぽですがとりあえず現れました・・・) Tools/Configureファイルが実行形式になっていなかったので >chmod +x Configure と入力して、なおかつsetenvコマンドでSHELLの設定をshのあるパスに変更してmake *****.cfしたら.cfファイルができました。 これからちゃんとした設定をしよう思います。 またこの件で解らない所がありましたらお邪魔します。 ありがとうございました。 |
|
こんにちは。 *****.defファイルの設定をしているのですが、 各設定のコメントというのは設定の必要内もの についてもはずさなければいけないのでしょうか? |
|
マニュアル読んでます? README.jpn には 多くのホストで共通な最小限度の設定については doc/INTRO.jpn を、 詳細な設定の説明については doc/MANUAL.jpn を参照してください。 と書いてありますが、doc/INTRO.jpn、doc/MANUAL.jpn を読みましたか? |
|
ありました. 何とか設定できそうです. .cfファイルもちゃんと現れました。 後は現在使っているサーバーと全く 同じ設定にしなければなりません. がんばります.ありがとうございました. |
|
こんにちは。 viでファイルの中身を編集しているのですが、 '@'を入力しようとすると入力が解除されてしまいます。 どうすれば文字として認識してくれるのでしょうか? よろしくお願い致します。 |
|
xwindowの画面全体を画像保存する方法を教えてください。 それにしても、そんなこと、可能なのでしょうか? |
|
>くにろぅさん レスありがとうございました。 画像保存とありますが具体的にどう行ったことを やるんでしょうか。(面倒なら結構です.) もうひとつUNIXサーバーがあるのですが、 そっちのほうは'@'は問題なく入力できます. 今、sendmail.cfの編集をしているのですが、 どうしても'@'を入力できないと先には進まないのです・・・ よろしくお願いします. それから、どなたか使えるsendmailについてのページ、書物などを ご存知でしたら教えてください. |
|
> '@'を入力しようとすると入力が解除されてしまいます。 うちの環境では@も普通に使えましたが…。「入力が解除」ってどういう意味ですか? viは2つのモードを切替えて使うものだということはご存知ですか? > xwindowの画面全体を画像保存する方法を教えてください。 http://X68000.startshop.co.jp/~68user/unix/pickup?xwd http://X68000.startshop.co.jp/~68user/unix/pickup?import などを使います。 % xwd -root > image.wd % convret image.wd image.gif |
|
> そっちのほうは'@'は問題なく入力できます. ああ、基本的な使い方は大丈夫なんですね。ならばちょっと僕にはわかりません。 where viして、いろんなviを試してはどうでしょうか。 # あるいはemacs/muleを使う、と :-) |
|
'@'の入力できました '\'→'@'といれるとできました。 UX/4800のみに起こる現象らしいです。 >68userさん 返答ありがとうございました >「入力が解除」ってどういう意味ですか? @を入力すると入力できなくなり、ESCキーで抜けた状態に なってしまうという事です。 |
|
> レスありがとうございました。 > 画像保存とありますが具体的にどう行ったことを > やるんでしょうか。(面倒なら結構です.) はい。.gif fileなり、なんなりにして画像保存したいとおもっているのですが・・・。 無理なんでしょうか。もし成功したらなんか、homepageの壁紙にでも・・・とか。 |
|
> 無理なんでしょうか。 回答してるじゃん…。 % xwd -root > image.wd % convret image.wd image.gif 試してみましたか? convertがなければxvでも可。ただし色が壊れるかも。 |
|
こんにちは 質問があるのですが、SOCKS5というものをご存知でしょうか? socks5-v1.0r9.tar.gzというものを解凍して、新たにできた ディレクトリの中に入り、その中で >./configure を実行 その後 >make all と実行すると ld: fatal error: Symbol referencing errors. No output written to socks5 *** Error code 1 (bu21) make: fatal error. *** Error code 1 (bu21) make: fatal error. というメッセージてその後 >make install としても同じエラーが出て/etc/socks5.confが作成されません。 新たにできたディレクトリ以下のMakeflieを見てみたのですが premixがMakeflieで指定されているディレクトリに存在しないの も気になります。 もしこの件についてご存知でしたらよろしくお願いします。 |
|
みなさんはじめまして。 仕事中にちょくちょくみさせてもらっていますが、 なかなか活発(?)な掲示板ですね。 それで、質問ですがsolaris2.5.1でリモートホストに 接続されたCD-ROMドライブをローカル側で使うときは 「share」「mount」コマンドを使いますが、 HP-UXではどんなコマンドを使うのか、知っている方が いらっしゃいましたら教えていただきたいのですが。 ローカル接続すればいいといわれてしまうと それまでですが...(^^;) |
|
> なかなか活発(?)な掲示板ですね。 書き込みはあっても、解決に結び付くことがあまりないのが痛いですが(^^; # なので、ほんとにお困りの場合は fj などで聞いてくださいね。 > リモートホストに接続されたCD-ROMドライブをローカル側で使うときは > 「share」「mount」コマンドを使いますが、 すいません。全くわかりません。SolarisってamdとかNFSとかじゃなくて、 リモートからCD-ROMをマウント/アンマウント/参照したりするんですか? > ld: fatal error: Symbol referencing errors. No output written to socks これだけの情報では リンクの段階でこけてます。configureの時点でおかしいか、 ライブラリがおかしいか、適切なライブラリを見てないか、 変なコンパイラ/リンカを使っている、などが原因が考えられる。 としか言えません。でも、ldってこれくらいのエラーしか 表示しないんだっけ…。 > premix prefix? 「Makefileのprefixで指定されているディレクトリが存在しない」と 言いたいんでしょうか。 |
|
>prefix? 「Makefileのprefixで指定されているディレクトリが存在>しない」と >言いたいんでしょうか。 そのとおりです.prefixってファイルが存在するのでしょうか? |
|
「prefix=接頭辞」。そのプログラムをインストールするトップディレクトリ。 例えば prefix=/usr/local なら、バイナリは/usr/local/bin に、ライブラリは /usr/local/lib に、マニュアルは /usr/local/man にインストールされる ということです。prefix が何なのかわからなければ、Makefile をエディタで 開いて prefixで検索しましょう。そしたらなんとなく意味がわかると思います。 |
|
はじめまして。こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて 大変参考になるサイトですね。 今後も利用させて頂こうと思います。 さて、さっそくですが、質問をさせてください。 X Window System に関する質問ですが、現在、X11R5からX11R6への バージョンアップを考えています。 バージョンアップに際して、仕様の変更箇所( 特にXlib のライブラリ 関数について )を調べているのですが、詳細が記述されている書籍や ホームページなどがなかなか見つかりません。 変更個所などの具体的な記載はありませんでしたが、X11R5 から X11R6 へのバージョンアップでは、Xlibについては特に仕様変更は無いように 感じました。 具体的にどのような点が変更されているのか、ご存知でしたら 教えてください。 |
|
> 詳細が記述されている書籍やホームページなどがなかなか見つかりません。 Xの規格を決めてる OpenGroup の、Xについての部分 http://www.opengroup.org/tech/desktop/x-window-system/gettingx.htm X11R6のリリースノート http://www.opengroup.org/tech/desktop/x-window-system/r6.1doc/relnotes/relnotes.htm リリースノートの「What Is New in Release 6」 http://www.opengroup.org/tech/desktop/x-window-system/R6doc/relnotes/chap4.html あたりでしょうか。Xlibに関してどういう関数が追加されたとかも 書いてあります。これ以上の細かいことは ftp://ftp.u-tokyo.ac.jp/pub/X11R6/ (最新版はR6.4です) などから落としてきて、実際のソース/manを見るしかないと思います。 # ちなみにXIEとは何ですかとか聞かれても、僕はわからんです。 > Xlibについては特に仕様変更は無いように感じました。 もちろんR5とR6では上位互換性はありますので、R5で作ったバイナリも ほぼ100%動くでしょう。 あと、R6について説明してある日本語の書籍は出ていないと思います。 |
|
> 68userさん 早々のご回答、ありがとうございます。 欲しかった情報そのままのページでしたので、大変助かりました。 英語が苦手なので、翻訳ソフトなどを使ってがんばってみます。 ありがとうございました。 |
|
音々です。 Xに関して、R5, R6は上位互換であることが確認でき、Xlib, Xt, Xaw での 作成部分は移行後そのまま利用できそうです。 ただ、ウインドマネージャ( OSF/Motifを使用しています。 ) に依存する部分、 ( Xm の Widgetセットを利用している部分) に関して確認ができていません。 Motif は、R1.0 から R1.2 へのバージョンアップを考えていますが、 こちらも資料が乏しく、詳細が不明です。 関連するホームページなどございました、是非、教えてください。 |
|
いや〜、Motifは知らんです。ただ、WidgetセットごときでR6の 機能を使っているか、と言えばちょっと疑問ですね。大丈夫じゃ ないでしょうか(無責任)。とりあえずR6(/usr/X11R6/に)を インストールして、様子を見てみるのはどうでしょう。 ところでXサーバはどこのを使ってるんですか? あと、Motifが必要なウィンドウマネージャって何でしょう? |
|
失礼しました。説明が解り難くかったですね。 今回は、Motif の R1.0 から R1.2 へのバージョンアップ (X との依存ではなく単に Motif に関する内容) について、 何か資料があれば教えて頂きたいと思いました。 > R6(/usr/X11R6/に)をインストールして、様子を見てみるのはどうでしょう。 そうですね、現在のところ、実際に動作させてから詳細を確認しようと、 考えていますが、事前に調べられるところまで調べておこうと思いまして。。。 >ところでXサーバはどこのを使ってるんですか? 現在問題があって手元にはありませんが、SunOS です。 >あと、Motifが必要なウィンドウマネージャって何でしょう? ウィンドウマネージャに、Motif(mwm)を使用しているという意味です。 |
|
うーん、MotifとはHPが作ってOSFにゲタをあずけたもの、という くらいしかしらないのですが、 http://www.opengroup.org/tech/desktop/ordering/#motif http://www.opengroup.org/tech/desktop/motif/xjournal.htm あたりでしょうか? でも 2.0 とか言ってますので、大外れかも しれません。 > ウィンドウマネージャに、Motif(mwm)を使用しているという意味です。 あ、そっか。mwmってMotif使ってるんですね。 |
|
>> なかなか活発(?)な掲示板ですね。 >書き込みはあっても、解決に結び付くことがあまりないのが痛いですが(^^; ># なので、ほんとにお困りの場合は fj などで聞いてくださいね。 >> リモートホストに接続されたCD-ROMドライブをローカル側で使うときは >> 「share」「mount」コマンドを使いますが、 >すいません。全くわかりません。SolarisってamdとかNFSとかじゃなくて、 >リモートからCD-ROMをマウント/アンマウント/参照したりするんですか? 68userさん、レスどうもです。 ユ○シスとこちらと、どちらが回答が早いかな?というぐらいの 気持ちだったもので、とても困っているわけではありません。 でも、ユニ○スは1ヶ月たっても回答をくれない(;;) |
|
>http://www.opengroup.org/tech/desktop/ordering/#motif >http://www.opengroup.org/tech/desktop/motif/xjournal.htm >あたりでしょうか? でも 2.0 とか言ってますので、大外れかもしれません。 そうですね。2.0やCDEに関する情報は多いのですが、 やはり旧バージョンの情報は少ないようですね。 今回、X11R5 と X11R6 が上位互換であることが確認でき、 Xm の Widgetセットを利用している個所はそれほど多くないので、 移行は比較的スムーズに行えそうです。 後は、実際に動作させて確認してみます。 いろいろとありがとうございました。 |
|
こんにちは。またまた質問です.お願いします。 コマンドライン上でrcpを行うとうまくいくのに、 ファイルの中に書いて行うと「文法があいまいです」 といわれて実行出来ません。 「文法があいまいです」とはいったい何が間違っている のでしょうか?よく意味がわからないです。 rcp フルパスのファイル名 サーバ名:転送先のディレクトリ であっていると思うのですが。 それとも、$argvなどで指定しているのがわるいのでしょうか? 前までは、上手くいってたのですが・・・。 わかりにくいとは思いますがよろしくお願いします。 |
|
> それとも、$argvなどで指定しているのがわるいのでしょうか? くさいですね。csh では % echo $user:/dir などはエラーになります。シェル変数の後の : は修飾子(?)だから。 正解は ${user}:/dir。 これ以上は、何を使ってスクリプトを書いているのか(sh? csh?)、 実際はどういうふうに記述しているのか、$argvの中の値は何か、 などを書いていただかないと何とも言えません。 そうそう、この前のシェルのカレントディレクトリですが、 一つ方法がありました。evalを使う方法です。 % cat mycd #!/bin/sh echo 'cd /' % pwd /usr/home/user % eval `mycd` % pwd / % cd /usr/home/user % alias mycd \`\\mycd\` % mycd % pwd / ただしスクリプト中では、cd 以外の出力をしてはいけません (STDERRになら出力できます)。 |
|
> ただしスクリプト中では、cd 以外の出力をしてはいけません 間違い。echo文 自体を出力すればできますね。 #!/bin/sh echo 'echo hoge;' echo 'cd /' |
|
システムコールについて調べているのですが、 OS毎に、システムコールに違いがあります。 SystemV Release4.0(SVR4.0) の 全システムコールの種類を 知りたいのですが、どこかに情報はありませんでしょうか? |
|
こんにちは 今、qpopper2.53というPOP3でメールを受信できるようにする モジュールをインストールしているのですが、 解凍して、./configureをかけた際、 loading cache ./config.cache checking whether make sets ${MAKE}... yes checking for gcc... gcc checking whether the C compiler (gcc ) works... no configure: error: installation or configuration problem: C compiler cannot create executables. というメッセージがでてMakefilesなどのファイルが生成されません。 Cコンパイラがconfigureのプログラムを実行可能にしてくれないらし いのです。 LIBSの設定は"-lsocket -ldl -lnsl"と設定してあります。 ccというのが/usr/abiccs/necbin 内にあったので、 そのパスを指定したのですが、いざ中身をviでみてみたら #!/sbin/sh #ident "@(#) cc.m4,v 1994/01/26 06:37:31 1.3" /usr/abiccs/bin/cc -Kssizeof -Yi,/usr/abiccs/necinclude -YP,/usr/abiccs/neclib:/ usr/abiccs/lib:/usr/lib "$@" -lnec という感じになっていました。 どうもこのようなモジュールやツールなどを解凍、インストールする時 ドキュメント通りにはいきません。 UX/4800特有の設定などをしなければならないのでしょうか。 それから、CC コンパイラはどこかで手に入れられるものなのでしょうか? よろしくお願いします。 |
|
> SystemV Release4.0(SVR4.0) の 全システムコールの種類を > 知りたいのですが、どこかに情報はありませんでしょうか? すいません、知らないです。SVR4と言ってもいろいろありますから、 全部調べるとなると大変でしょうね。 > ccというのが/usr/abiccs/necbin 内にあったので、 あぁ、ずっと HP-UX かと思ってたら、NECのUXだったのね。 > そのパスを指定したのですが、いざ中身をviでみてみたら スクリプトでもバイナリでも、要は動けばいいんです。 で、動いたんですか? ちなみに /usr/abiccs/necbin/cc は ANSI C準拠コンパイラだと思います。 > それから、CC コンパイラはどこかで手に入れられるものなのでしょうか? そのシステムにgccは入ってませんか? ないようなら ftp://ftp.eos.hokudai.ac.jp/pub/gnu/gcc/ から お好きなバージョンをどうぞ。2.8.1あたりが安定してるんでしたっけ? ユニ男さんへ。僕が UX 知ってるなら教えてあげられるけど、 残念ながら使ったことがないし、これまでいくつか回答しましたが どうも的外れな答えしか書いてないような気がします。近くにUNIXを 知ってる方がいたら その人に質問するか、あるいは fj.unix などで 質問する方がいいと思います。 |
|
いつもお世話になってます。 >あぁ、ずっと HP-UX かと思ってたら、NECのUXだったのね。 UX/4800なんです。周りにあまり聞ける人がいなくて・・・ >スクリプトでもバイナリでも、要は動けばいいんです。 >で、動いたんですか? ちなみに /usr/abiccs/necbin/cc は >ANSI C準拠コンパイラだと思います。 動きませんでした。 >そのシステムにgccは入ってませんか? ないようなら > ftp://ftp.eos.hokudai.ac.jp/pub/gnu/gcc/ >から お好きなバージョンをどうぞ。2.8.1あたりが安定してるんでし >たっけ? GCC入っています。PATH指定しても下のメッセージが出てしまいます. 稼動していないみたいなんです。 >どうも的外れな答えしか書いてないような気がします。近くにUNIXを >知ってる方がいたら その人に質問するか、あるいは fj.unix などで >質問する方がいいと思います。 そんなことありません。とても参考になります。こちらこそあやふやな質問ばかりで迷惑をかけているのではないか常日頃思っています。 >近くにUNIXを知ってる方がいたら その人に質問するか、あるいは >fj.unix などで質問する方がいいと思います。 fj.unix ですね。探していってみたいと思います. ちなみにSOCKS5の件ですが、 setenv LIBS "-lsoket -ldl -lnsl" として./configure→makeで解決しました。 |
|
>すいません、知らないです。SVR4と言ってもいろいろありますから、 >全部調べるとなると大変でしょうね。 米国Sun社のサイトにありました。ご参考まで。 http://www.sun.com/smcc/solaris-migration/docs/transition-guide_2.5/apx_b.html |
|
CGIのファイルをサーバにおいて パーミッションを変更しようとすると、 下のように出て変更できません。 502 SITE command not implemented. どなたか助言をお願いします。 |
|
はじめまして、かんじゃと申します。 こちらのホームページで 「UNIXネットワークベストプログラミング入門」技術評論社 が紹介されています。 じつは小生もこの本のプログラムを 実行してみたのですが seg fault のメッセージが表示され てうまく実行できません。 >文字列リテラルを書き換えており、 FreeBSDで >実行するとコアダンプしてしまった(どちらもC >言語中級者なら 自分で問題箇所を修正できるレベル)。 というコメントが書かれておりましたが、具体的にはどういった ことが問題なのでしょう? よろしければご教示、お願いします。 |
|
はじめまして、かんじゃと申します。 こちらのホームページで 「UNIXネットワークベストプログラミング入門」技術評論社 が紹介されています。 じつは小生もこの本のプログラムを 実行してみたのですが seg fault のメッセージが表示され てうまく実行できません。 >文字列リテラルを書き換えており、 FreeBSDで >実行するとコアダンプしてしまった(どちらもC >言語中級者なら 自分で問題箇所を修正できるレベル)。 というコメントが書かれておりましたが、具体的にはどういった ことが問題なのでしょう? よろしければご教示、お願いします。 |
|
メールアドレスの記入ミスで同じ内容のものを2度書き込んで しまいました。 申し訳ありません。 |
|
> 502 SITE command not implemented. FTPでのパーミッションの変更は、SITEコマンドを使用するんですが、 相手側のFTPサーバにはSITEコマンドが実装されていないので、 できない、ってことです。telnetでログインしてchmodするか、 管理者に頼んでまともなFTPサーバに置き換えてもらうしかないです。 > seg fault のメッセージが表示されてうまく実行できません。 現在、手元には その本もUNIX環境もないので、確かなことは 言えませんが、どこかで char *buf="abc" などと初期化して いる部分があると思います。で、それを buf[0]='X' などと 変更していますが、そこで落ちるはずです。"abc" は文字列 リテラルなので変更することはできないから(変更できる 環境もありますが)。なので、char buf[]="abc" などと書き 換えれば動いたと思います。 *buf="abc" と buf[]="abc" の違いについては、ネット上に 落ちてる「C言語FAQ」に詳しく書いてあります。 |
|
>> seg fault のメッセージが表示されてうまく実行できません。 > 現在、手元には その本もUNIX環境もないので、確かなことは > 言えませんが、どこかで char *buf="abc" などと初期化して > いる部分があると思います。・・・以下省略 さっそくのご教示ありがとうございます。 以上参考にさせていただき、さらに修行していきます。 |
|
文字列リテラルは、昔のCでは、結構普通に書き換えたりしてたみたいです。 unixの古いccのライブラリでも、この書き換えをやっているという話を聞いたことがあります。 (聞いたのは、一時ファイルの名前を作るライブラリ関数だったような…) ANSI C以前は、自動変数の場合には、配列の初期化ができなかったために、 便宜的に利用してたのかもしれません。それとも、スタックに文字列を確保しても、 これを関数の呼び出し元に返すことはできないので、mallocを使う代わりに 静的領域を利用してたのかな…にしても毎回同じ領域が使用されるので、 static にすれば済むことって気も…? いずれにしても、ROM化やコンパイラが同じ文字列リテラルを共用させるために、 ANSI C以降は、文字列リテラルの変更は未定義とされたようです。 |
|
> いずれにしても、ROM化やコンパイラが同じ文字列リテラルを共用させるために、 に加えて、複数プロセスでデータセグメントを共有させるため、 例えば ls を並行して2個実行した場合、スタックとヒープは 2個用意されるが、データセグメントは1個しか用意されない、 と思ってるんですが、全然違うかも。 # アセンブラやってないんで、ここらへん いまいち感覚的に理解できない。 |
|
>に加えて、複数プロセスでデータセグメントを共有させるため、 DOSが長いもので、マルチプロセスのメモリ管理はよく分からないです(苦笑)。 >例えば ls を並行して2個実行した場合、スタックとヒープは >2個用意されるが、データセグメントは1個しか用意されない、 とすると、文字列リテラルだけでなく、静的な変数まで共有される 訳ですよね。 素人考えでは、ホントにそれで良いの?と思っちゃいます… 例えば、コマンドラインオプションで設定されるフラグが グローバル変数だったりすると(あり得ますよね)、前後のlsの オプション指定が異なる場合に、先のlsのフラグまで影響を 受けちゃうおそれがないのかなぁ…? |
|
すいません、よく考えずに適当なことを言ってしまいました(^^; では、2個のlsで共有される領域は何だろう? |
|
>では、2個のlsで共有される領域は何だろう? うーん、unixのメモリ管理はよく知りませんです(苦笑) |
|
ここすごいですねっ!内容がすごく充実しててびっくりしました。<BR> 分からないことがあったら来てみようと思います。<BR> ところで質問です。<BR> ○○○.zip のようなファイルはどうやって解凍すればいいのでしょうか?<BR> gzip -d とか uncompress も試してみたけど、やっぱりだめでした。<BR> UNIXでは解凍できないんですか? |
|
> ここすごいですねっ!内容がすごく充実しててびっくりしました。 ども。ついさっき更新しましたのでよろしく。 http://X68000.startshop.co.jp/~68user/unix/history.html > ○○○.zip のようなファイルはどうやって解凍すればいいのでしょうか? unzip、zipなどのコマンドがあります。unzip -l hoge.zip で一覧表示。 unzip -e hoge.zipで展開です。 |
|
私もここのファン(?)ですが掲示板の投稿は初めてです。早速ですが、UNIXのコマンドについて教えて下さい。 su - username この時のハイフンはどんな意味を持つのでしょうか? |
|
FreeBSD の su ならば - は -l と同じです。 マニュアル: http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=su&dir=jpman-3.2.0%2Fman ソース: http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/su/su.c?rev=1.29.2.2 多分他のUNIXでも同じだとは思うけど、確信はありません。 |
|
ありがとうございます。 ご教示の通り、 - と -l は同じでした。 |
|
WindowsでFTPサーバのソフトを作成したいのですが、 よくわかりません。UNIXの場合は拝見させて頂いたのですが winの場合はちょっと違うみたいでして・・・。 宜しければレスお願い致します。 |
|
すいません、Windows環境は持ってない&使ってないので わかりませんです。 # FTPクライアントではなくて、「FTPサーバのソフト」なんですか? # いわゆる ftpd を作成されるのですか? |
|
>FTPクライアントではなくて、「FTPサーバのソフト」なんですか? >いわゆる ftpd を作成されるのですか? はい、ftpdです。1ヶ月ほど前より悩んでおります。 RFC日本語版やら、winsock本を読んでいるのですが、 どうしてもFTPportが開いてくれないのです。 >すいません、Windows環境は持ってない&使ってないので >わかりませんです。 いえいえ。私もわからなかったので、ご存知かと思いまして 質問しました。有難う御座いました。また悩み続けます(^^;)。 |
|
echoサーバのような単純なサーバではうまくいってるんでしょうか? まずはそういう簡単なサーバを作りながら winsock を理解しては どうでしょう。 # winsockを知らない人間が言う言葉ではないな(^^; ## 既にやっておられたらすいません。 |
|
>## 既にやっておられたらすいません。 全くやってなかったですが、今、ソースは見つけました。 http://www.macnica.co.jp/soft/prog/win_echo.txt こういうので良いのでしょうか? >まずはそういう簡単なサーバを作りながら winsock を理解しては >どうでしょう。 了解しました。echoサーバっていうのは、サーバーにあるMSGを 送るとそのMSGを送り返してくる機能を持ったものみたいですね。 調べてみました。ちょっとソースを理解してみます。 有難う御座いました。 |
|
> こういうので良いのでしょうか? そういうのです。 それで Winsock 上での socket・bind・listen・accept を覚えてから、 ftpd を作る、と。最初からコネクション2本な ftpd にチャレンジする よりは簡単だと思います。 |
|
有難う御座いました。 頑張ってみます。 |
|
UNIXでフロッピーディスク(FD)に書き込んでWindows98で読み込む事が出来るのですか。 またその逆はできるのですか。できるとしたらどのようなファイルが出来るのですか。 教えて下さい。 |
|
# Who are you? UNIXで書いてWinで読む、Winで書いてUNIXで読む、両方できます。 UNIX/Win の両方から読める形式は、FAT ファイルシステムというものですが、 Windows で普通にフロッピーをフォーマットすれば FAT になります。 UNIX でフロッピーを見る場合は mount という作業が必要になります。 FreeBSD の場合はこちら。 http://www.jp.FreeBSD.ORG/QandA/HTML/350.html 他の UNIX 系 OS でも似たようなもんだと思います。UNIX からの 読み込み・書き込みは、ふつーに cp・mv・エディタなどで /mnt 以下のファイルを操作すればいいでしょう。 あるいは UNIX からフロッピーにアクセスする際には、mtools を使う という手もあります(たしか mount は必要なかったような)。 |
|
始めまして 始めてここにきました。 ア!? だから始めましてなんですね^^;; 偶然検索していて見つけました。 今日はとってもお勉強になりました。 また、ちょくちょく来ますです♪ 頑張ってくださいね。 敬具。 |
|
はじめまして、塩蔵です。 すごく充実した内容ですね。 UNIX初心者の僕としましては、びっくりです。 突然ですが、質問あります。 EUCコードで、全角Aは、16進でa3c1となるんですが、 あるファイルに全角Aを書いて、 odコマンドで、”od −x ファイル名”を実行すると、 c1a3と表示されてしまいます。 なぜ、EUCコードで、全角Aは、16進でa3c1であるのに、 c1a3と表示されるのでしょうか? それとも、odコマンドの使い方が間違ってるのでしょうか? お願い致します。 |
|
> c1a3と表示されてしまいます。 http://www.cs.gunma-u.ac.jp/~j5306050/net/c-http-1.html に少し書いてありますが、バイトオーダーの違いです。 試してみると、Pentium のようなリトルエンディアンマシンでは c1a3、 Sparcのようなビッグエンディアンマシンでは a3c1 になりました。 しかし、バイトオーダーを意識させるダンプコマンドってのは アリなのかなぁ…? |
|
システムリプレイス時のトラブルで、24日朝〜25日23時の間の メールが全部消えてしまいました(25日21時にPOPを覗くと数十通 あったけど、その分が全部消えてしまった)。 「alloc:/ file system full」な方と、出版社の方、 申し訳ありませんが、もう一回メール下さい。 多分私信はその2通だけだったと思うけど、他にメール出してた方が、 いらっしゃいましたら、すみませんが再送して下さい。 |
|
日付を間違えてた。 システムリプレイス時のトラブルで、24日朝〜24日23時の間の メールが全部消えてしまいました(24日21時にPOPを覗くと数十通 あったけど、その分が全部消えてしまった)。 です。 |
|
こんにちわ。 自分のページにカウンターを置きたいのですが、 fluteでCGIは使えますか?掲示板は可能なんですが 他から取ってきたカウンタはエラーが出て良く分からないんです。 ここにあったカウンターもいただきましたが、どう変更して、どのようなファイルをどう置いたらいいのかよくわかりません。助けてください。 |
|
> fluteでCGIは使えますか? 使えます。勝手に覗かせてもらいましたが wwwcount.cgi の内容が変です。 コマンドライン上から % perl -c wwwcount.cgi とすると、 Unmatched right bracket at wwwcount.cgi line 75, at end of line syntax error at wwwcount.cgi line 75, near "}}" wwwcount.cgi had compilation errors. となります。改行コードの問題でしょうか? 最初からもう一度転送しなおして下さい。少なくとも % perl -c wwwcount.cgi でエラーが出る状況では、CGI経由でも絶対に動きません。 > ここにあったカウンターもいただきましたが うちのは設置手順がめんどくさいので、お勧めしません :-) |
|
できました。自宅のパソコンでダウンロードしたものを 学校に転送してやると、やはり改行コードがおかしくなってるようでした。 結局、学校の端末からもう1度作り直しました。 さすがプロ!ありがとうございました(笑) |
|
こんにちは。 新しいサーバーを構築して、そのサーバーに現サーバーの /etc/passwd と /etc/shadowファイルを移行したいので すが、試しに1つだけ /etc/passwd をそのまま移して( group,ホームディレクトリ、シェルのパスは変えました。) 、/etc/shadowはそのまま現サーバーの/etc/shadowを移し ました。 そのあと、 > pwconv > creatiadb として、メールを送受信してみたのですが、ログインは認識 しているようなのですが、パスは認識してくれないようです。 何か、他にやる事が有るのでしょうか? よろしくお願いします。 |
|
Linux ですか? 僕は FreeBSD 以外知らないのですが、 > パスは認識してくれないようです これは、「ログインシェルが認識されない」という意味ですか? あるいは「パスワードが認識されない」という意味ですか? 前者なら、一般的な UNIX では、ログインシェルとして使う シェルは、事前に /etc/shells にフルパスで書いておく必要が ありますが、それはいじりましたか? 後者ならわかりません。もちろん現サーバのパスワードを 入力したんですよね? あとLinux って、デフォルトではシャドウ パスワードを使わないそうですが、新サーバのそこらへんの設定は しました? |
|
ちょっと前の話。アドレス空間は低位から順に テキストセグメント text ... マシン語コード データセグメント data ... static な初期化済変数 bss ... static な未初期化変数 heap ... malloc() で確保される領域 スタックセグメント stack ... auto変数 というふうに使われるので、UNIX で共有されるのはテキストセグメントだけ。 …かな? たぶん。 # うう、gas の吐くアセンブリがわからん。ebp,eax レジスタってナニ? |
|
こんちは。自分の名前をGOO検索したら、なんか BBSが有ったので、やってきました。 ネットを止めてカフェでたまにやってるいまでも 自分の偽物が居て結構楽しいです。 今度インターネットを始める時は CGIが使えるプロバイダを選ぼうと思うので その時は、管理のキビしーBBSの作り方を 教えてください。では、失礼します。 |
|
学校のUNIXで"http://www.freemail.ne.jp/" のようなfreemailを使うことができるのですか |
|
> こんちは。自分の名前をGOO検索したら、なんか > BBSが有ったので、やってきました。 お久しゅう。2年振りくらいかね。元気でやっておられるようで なにより。こっちもそれなりに生きてます :-) > 学校のUNIXで"http://www.freemail.ne.jp/ > のようなfreemailを使うことができるのですか 名前(ハンドル)さえ名乗れない人に教えるほど、僕は心が広くないので。 出直してらっしゃい。 # 名前書かない人って、こちらが回答しても返事を返してこないから嫌い。 |
|
初めましてAyaと申します。 検索で偶然見つけたのですが、内容の充実ぶりに驚きました。 突然なのですが質問させていただきます。 sedmailで添付ファイルを送るにはどうしたらよいのでしょうか? 私は何も知らないと言っても過言でないくらいUNIX初心者なので、 的外れなことを言っていたらすいません。 |
|
> sedmailで添付ファイルを送るにはどうしたらよいのでしょうか? 自分で MIME ヘッダを付ければいいです。まず http://www.mew.org/Newsletters/3.html をよく読んで、multipart mail の構造を理解すると。で、sample.txt に From: my@mail.address To: foo@bar.com Subject: This is test mail. Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part--" Content-Transfer-Encoding: 7bit ----Next_Part-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit ほげ ----Next_Part-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit ふが ----Next_Part---- などと書くと。そしたら % nkf -j < sample.txt | sendmail foo@bar.com で送信です (nkf で文字コードをiso-2022-jpに変換してるわけ)。 勝手に MIME ヘッダを付けてくれるソフトもあるんじゃないかと 思うんですが、残念ながら僕は知りません。 |
|
始めまして二太郎と申します。 大学で急にメールサーバーの管理をさせられてしまいました。 sedmailを使ってメールの送受信のテストをしたところ、「$ mail」 としてメールを読むとメールの本文が半角だけの場合はヘッターと 本文ともに読めるのですが、本文に全角の文字を使うと「*** Mess age content is not printable:delete, write or save it is to a file ***」とでてメールの本文が読めません。しかし「$ mail | more」としてメールを読むと全角の文字が含まれるメールでも読む ことが出来ます。「$ mail」としても全角の含まれるメールを読め るようにしたいのですが、初心者の私にはどの辺から手を付けてい いのか分かりません。何かアドバイスをいただけたらと思い、書き 込みをさせていただきました。よろしくお願いします。 ちなみに今日1日調べて私なりに考えたのは「sendmail.cf」の「KA NJI_CONVERSION」の所かと思っています。どうでしょうか? |
|
> *** Message content is not printable:delete, write or save it is to a file *** このメッセージを出してるのは mail コマンドであって、sendmail ではないです。 % env LANG=ja mail % env LANG=ja_JP.JIS mail などとするとダメですか? あるいは日本語対応の mail コマンドが用意されて ないですか? ガッコの Solaris では /bin/mail、/usr/bin/mail は LANG をいじっても 「*** Message content is…」となってしまいましたが、/usr/ucb/mail では LANG をいじらなくてもできました。 # はて、Solaris の /bin/mail・/usr/bin/mail では日本語メールは # 読めないのかなぁ…? > $ mail | more としてメールを読むと全角の文字が含まれるメールでも読む > ことが出来ます。 デフォルトでは文字が不正かどうか調べるけど(結果的に日本語が含まれていると 「表示できない」と判断されることもある)、パイプで他のコマンドに渡すときは そのまま渡すというコマンドは結構あります。例えば ls なんかもそうですね。 日本語を含むファイル名を作って ls で見ると、日本語部分は ??? などと表示 されますが、ls | cat とすると、ls はファイル名を変換せずに cat に渡します。 |
|
ありがとうございました。 添付ファイルを送ることに成功しました。感激♪ また、質問することもあると思いますが、 そのときは、またお願いします。 |
|
レス本当にありがとうございました。 さっそくLANGをいじってみましたが、私の大学も solarisなのでダメ でした。しかしメールソフト(Windous95用)を使えば、きちんと読 めるので、今のところメールの利用者からは問題がでていないので 困っているのは私だけのようです。(笑) 急がなくてもいいようなので、もう少しいろいろと試してみたいと 思います。 UNIXの勉強が全然足りないのでこのページを参考に頑張っていきま すので今後またお世話のなるかもしれませんがよろしくお願いしま す。 |
|
思い出した。SystemV 系 UNIX には mailx コマンドというのが あって、これなら日本語が通ります。 |
|
「mailx コマンド」を今、家からtelnetでログインして試したと ころ、日本語が通りました!! これでぐっすり眠れそうです。 本当にありがとうございました。 |
|
再び、質問させていただきます。 テキストデータを添付することはできたのですが、 バイナリデータの場合どうもうまくいきません。 符号化して書きこまなければならないのでしょうか。 もしそうなら、どうやって符号化するのでしょうか。 それとも、他に方法があるのでしょうか。 どうか御教授お願いいたします。 |
|
> バイナリデータの場合どうもうまくいきません。 次にこの質問がくるんじゃないかと予想はしてました :-) バイナリは http://www.mew.org/Newsletters/3.html の 「安全な符号方式の定義」のように、 Content-Type: image/gif; name="hoge.gif" Content-Transfer-Encoding: base64 LS0tIGRyYWZ0LW5ndHJhbnMtdHJhbnNsYXRvci5vcmlnCVN1biBOb3YgMTUgMTY6MzI6NDYg MTk5OAorKysgaWQtdHJhbnMJU3VuIE5vdiAxNSAxNToxNDo1NCAxOTk4CkBAIC0xLDggKzEs MTIgQEAKICNyZXYgMDAuMDIKIEludGVybmV0LURyYWZ0ICAgICAgICAgICAgICAgICAgICAg と、適切な MIME TYPE を付けた上で、BASE64 でエンコードする必要があります (name="hoge.gif" は必要なら付けてください)。なので、プログラム書いて 自動化しないと苦しいでしょう(まぁ手動でやってるわけじゃないんですよね?)。 perl がわかるなら http://www.cc.rim.or.jp/~ikuta/mime_pls/ を使って、 open(GIF,"hoge.gif"); $buf = join("",<GIF>); require 'mimew.pl'; $data = &mimeencode($data); などとするのが簡単ですかね。最後の &mimeencode は $data = &bodyencode($data); $data .= &benflush; だったかもしれない。試してみて下さい。 |
|
あ、やっぱり mimeencode じゃうまくいかないや。 mimeencode は =文字コード?エンコード方式?BASE64化されたデータ= という MIME 形式に変換します。一方、bodyencode は BASE64化します。 今回は MIME 形式(正確な用語じゃないかもしれない)じゃなく、 BASE64 のデータが欲しいので、bodyencode を使って下さい。 mimeencode はメールヘッダなどのエンコードに使えますね。 |
|
ようやくできました。 やっぱり、エンコードしなくてはいけなかったのですね。 ありがとうございました。 |
|
ウインドウズが一番だぜかかって来い |
|
tcshの補間機能の説明について補足です。 Ctrl-dは補間そのものではなく補間候補をリストし、 実際の補間にはTabを使うようです。 |
|
おぉ、歌って踊れるハッカーを目指していらっしゃる にゃんさんの居られる研究室の方(長い)ですね。 UNIX/FreeBSD のえらい人が身近にいるなんて、うらやましい。 # にゃんさんは僕のことを知らないです。念のため。 > 実際の補間にはTabを使うようです。 TABのことをすっかり忘れていました。今度更新するときに直して おきます。ありがとうございました。 |
|
はじめまして。 他のユーザーがファイルを使用していることを確認するfuserコマンドがうまく使えません。fuser -u filenameと指定するだけではだめなのでしょうか?またこのコマンドはvi等で使用しているだけでは作動しないのでしょうか? |
|
はじめまして。 他のユーザーがファイルを使用していることを確認するfuserコマンドがうまく使えません。fuser -u filenameと指定するだけではだめなのでしょうか?またこのコマンドはvi等で使用しているだけでは作動しないのでしょうか? |
|
ふーん、SystemV には fuser ってコマンドがあるのね。 で、fstat は BSD only なのか。 > vi等で使用しているだけでは作動しないのでしょうか? vi は emacs はオープンしてバッファに読み込んだらクローズして しまうので無理だと思います。tail -f filename などオープンしっぱなしの プロセスなら表示できます。 |
|
どーも。はじめまして。 セガBBS過去ログすごいですね。 こういうことってできるんですね。 そこで、便乗要望、、。 比較的新しい99年7月辺りの過去ログ とかって、みることできますかね、、? どうか、宜しくお願いします。 |
|
一部のBBSだけですが、お肉さんのとこで取ってるはずです。 http://www.lunartecs.ne.jp/~segabito/fushigi.html |
|
どもども^^; DCやサターンの人もいるかもしれないので、 ↓こちらを紹介したほうがいいかもしれません http://gamelay.usami.com/~segabito/ 19日から12月15日まで研修で南浦和の寮生活なので、 その間はシステムの改良・変更はあまりできなくなります。 ここ数日は原因不明の不調でログが飛びまくっていますが、 果たしてどうなることやら・・・ 帰ってきたらLinuxも勉強するぞー |
|
プロバイダーを見つけました。 よく雑誌で見るプロバイダーなので イマイチ信頼度がひくいんですけど CGIが使える見たいなので、決めちゃおうかなぁ っておもってます。 http://www.interq.or.jp/misc/man/ftp/usercgi.html これってCGIが使えるってことでスヨね? では、又来ます。:-O |
|
interq って zeus っていう WWWサーバなんだよね。できれば apache っていうのがお勧めなんだけど。あと、そこに書いて あるように、#exec cmd/#exec cgi は使えません。 いろいろ設定をいじったり、深く使いたいなら他のところを 探した方がいいんじゃないかね。まぁ、どこがいいかってのは わからないんだけど。 でも簡単な CGI を設置できればいいということなら、 interq でも OK だと思います。 |
|
はじめまして。 私はUNIX初心者なのですが勉強してサーバー構築手順書、C/S設計手順書を作りたいと思っています。分かりやすい本などをどなたか教えていただけませんか? 熱意はあります。宜しくお願いします。 |
|
サーバを構築したいということなら、「FreeBSDでサーバ構築」 「Linuxでサーバ構築」とかいう本が結構出てます。それを手に 入れるのが近道じゃないでしょうか。ただし僕はそういうのを 買ったことはないので、どれがお勧めかはわかりません。 本屋で手に取って内容を吟味して下さい。 まぁ、apache/bind/sendmail/pppd あたりの設定方法が さらっと書いてあるだけなので、もっと深く知りたければ O'Reilly の本を買うことになるでしょう。 |
|
68USERさん、アドバイスありがとうございます。 早速検討してみます。 |
|
ご無沙汰してます。 apache の .htaccess のネットマスクについて教えて頂けないでしょうか? ネットマスクがマスクする部分(ビットが0の部分、または、より右側のビット) に対応するIPアドレスのビットは、0にするのか1にするのかということ なのです。 例えば、133.205.78.73〜133.205.78.79 のホストのアクセスを禁止する場合、 (なお、2進と10進は以下の通りです。 01001 001b = 73d 01001 111b = 79d 11111 000b = 248d ) <Limit GET POST> order allow,deny allow from all deny from host </Limit> の host の指定方法なんですが、 133.205.78.72/255.255.255.248 又は 133.205.78.72/29 とすべきなのか、それとも 133.205.78.79/255.255.255.248 又は 133.205.78.79/29 なのでしょうか? http://japache.infoscience.co.jp/japanese_1_3/manual/mod/mod_access.html には、 > (すなわち 10.1.0.0/16 は 10.1.0.0/255.255.0.0と同じです) とあるんで、この例では、マスクされるビットが全部0になってますよね (10.1.0.0の最後の2バイト)。 でも、バイト単位でない場合には、マスクされるビットを全部1にしてる 例もみたものですから↓ http://www.med.teikyo-u.ac.jp/~morikawa/howto/access.html の >allow from 202.253.111.0/255.255.252.0 あるいは 202.253.111.0/22 では、111d = 01101111b ですからマスクされるビットは1になってます。 それとも、バイト単位の指定の場合だけ0にしてもいいのかな? |
|
多分「どちらでもよい」だと思います。 133.205.78.72/29 は、 10000101 11001101 01001110 01001000 のうち、最初の29ビットにマッチするもの を表すので、10000101 11001101 01001110 01001??? にマッチし、 結局 133.205.78.72〜133.205.78.79 にマッチする。 一方 133.205.78.79/29 は、 10000101 11001101 01001110 01001111 のうち、最初の29ビットにマッチするもの を表すので、10000101 11001101 01001110 01001??? にマッチし、 結局 133.205.78.72〜133.205.78.79 にマッチする。 ではないでしょうか。ネットマスクの意味からいって、 ネットマスク*外*のビットには、とくに意味はないと思います。 ただ、意味なくビットを立てるのはわかりにくいので、 僕なら 133.205.78.72/29 を選びます。 あと、わかっておられるとは思いますが、133.205.78.72/29 だと 133.205.78.72 自身も含まれますので、 > 133.205.78.73〜133.205.78.79 のホストのアクセスを禁止 にはなりません。 # 133.205.78.72/29 というドメインがあって、133.205.78.72 が # ゲートウェイアドレスなら構いませんが。 |
|
> # 133.205.78.72/29 というドメインがあって、133.205.78.72 が > # ゲートウェイアドレスなら構いませんが。 あれ、ホスト部が All zero な IP アドレスってゲートウェイじゃないかも。 133.1.0.0 とか 133.2.0.0 などのIPアドレスって、何て呼ぶんでしたっけ…。 |
|
おお、すばやいご回答、ありがとうございます。 >ネットマスク*外*のビットには、とくに意味はないと思います。 なるほど、分かりました。 >僕なら 133.205.78.72/29 を選びます。 この選び方の違いに過ぎなかったのですね。 >133.205.78.72 自身も含まれますので、 あっ、すいませんm(_ _)m 133.205.78と指定した場合は、133.205.78.1〜133.205.78.255だと いう記述をどこかで読んでたので、ここでも間違ってマスクされた ビットが全部0となる場合を除外してしまいました。 >133.1.0.0 とか 133.2.0.0 などのIPアドレスって、何て呼ぶんでしたっけ…。 話に付いて行けない…(苦笑) IPアドレスもちゃんと勉強しないといけないなぁ… |
|
すいません。 ↓の名前を入れ忘れましたm(_ _)m |
|
先の質問に関連して、今回初めて .htaccess について調べたのですが、 どうもよく理解できないことがあるので、教えてください。 order は、allow と deny の評価順序を指定するというような説明があるんですが、 これはどういう意味なのでしょうか? 最初、評価順序がどう影響するのか分からなかったのですが、 「UNIX &インターネットセキュリティ」(O'REILLY)の deny,allow は、denyとallowの両方に含まれるhostは許可する allow,deny は、denyとallowの両方に含まれるhostは禁止する という趣旨の記述を読んで、ようやく使い方については分かったのです。 でも、このような作用をなぜ評価順序で説明するのかが理解できないのです。 また、例えば order allow,deny allow from hostA deny from hostB という設定があった場合、どちらにも含まれないhostC からのアクセスは どうなるのでしょうか? allow と deny の双方を指定するってことは、どちらか一方が必ず from all になるとは限らないですよね(もし、そうなら省略可能にすると思うので)。 |
|
ん…X68000.startshop.co.jp の時計がずれてる。 > 「UNIX &インターネットセキュリティ」(O'REILLY)の > deny,allow は、denyとallowの両方に含まれるhostは許可する > allow,deny は、denyとallowの両方に含まれるhostは禁止する > という趣旨の記述 ん〜、これもどうも…何か違うような。確かに order は まぎらわしいですねぇ。 例えば order deny,allow は 1. 最初は全て許可 2. deny で指定されていたら拒否 3. allow で指定されていたら許可 という手順で評価しますが、大事なのは 「deny にマッチしても、その後 allow にマッチした場合は、閲覧を許可する」 ということだと思います。 例えば 阪大からは弾くけど、阪大の工学部(適当)からのみ許可する場合 order deny,allow deny from 133.1 allow from 133.1.2 阪大は許可するけど、阪大の工学部だけは弾く場合 order allow,deny deny from 133.1.2 allow from 133.1 てな感じでどうでしょう。より一般化すると、 「許可したホスト以外は拒否」なら order deny,allow deny from all allow from 許可するホスト 「拒否したホスト以外は許可」なら order allow,deny allow from all deny from 拒否するホスト でしょうか。上の2つの order を逆にすると、どのホストからも 見られなくなります。 素人考えでは、 deny from 133.1.2 allow from 133.1 と書けば、上から順に評価する、ってな風にすればわかりやすいのに、 わざわざ order なんか指定できるようにしたからわかりにくくなった、 と思ってます。もしかしたら、もっと難しい理由があって order が 用意されてるのかもしれませんが。 > どちらにも含まれない hostC からのアクセスはどうなるのでしょうか? 許可されると思います。order mutual-failure なら拒否されます。 # order mutual-failure # …allow に指定され、deny に指定されていないホストのみ許可。それ以外は拒否。 |
|
なので、 阪大は許可するけど、阪大の工学部だけは拒否し、なおかつ 群馬大は弾くけど、群馬大工学部だけは許可する という設定は無理じゃないかと思ってます。仮にできるとしても、 2つに分ける必要がありますよね。変なの。 |
|
さっそく、ありがとうございます。 >ん〜、これもどうも…何か違うような。 あっ、関係ないかも知れないけど、正確に引用しときますね(苦笑) >order ord >許可文と拒否文をチェックする順番を指定する。 >"deny,allow"を指定すると、最初に拒否エントリをチェックする。 >拒否リストと許可リストの両方に含まれるサーバーは許可する。 >"allow,deny"を指定すると、最初に許可エントリをチェックする。 >両方に含まれるサーバーは拒否する。 >"mutual-failure"を指定すると、許可リスト中のホストに許可を与え、 >拒否リスト中のホストを拒否し、それら以外については拒否する。 68userさんの説明とapacheのマニュアルを見ると、 すくなくとも、"mutual-failure"の説明は、 両方に含まれる部分について正確さを欠いてますね。 以下について応答する前に、ちょっと確認なんですけど、 >上の2つの order を逆にすると、どのホストからも >見られなくなります。 これは、下に関しては、「どのホストからも見えてしまう。」 の間違いということはないのでしょうか? |
|
> これは、下に関しては、「どのホストからも見えてしまう。」 > の間違いということはないのでしょうか? あ、間違いです。 「許可したホスト以外は拒否」なら order deny,allow を order allow,deny にすると、「全部拒否」になってしまい、 「拒否したホスト以外は許可」なら order allow,deny を order deny,allow にすると、「全部許可」になってしまう、ですね。 > "mutual-failure"の説明は、 > 両方に含まれる部分について正確さを欠いてますね。 ん〜、不正確とは言えないかもしれないけど、不親切ではありますね。 mutual-failure でも allow,deny の順に評価され、allow にマッチしたとしても その次に deny について評価され、そこでマッチしたら拒否、ってことです。 そういうことを http://japache.infoscience.co.jp/japanese_1_3/manual/mod/mod_access.html#order allowとdeny状態が評価されるどんな場合でも、"short-circuiting"は存在しません。 は言ってるんでしょうけど、もともと order っていう仕組みがわかりにくいのに、 ヘボい訳のせいで さらにわけのわからんことに。 |
|
>あ、間違いです。 よかった。 これが違ったら、また最初から理解し直しになるところでした(苦笑) >ヘボい訳のせいで さらにわけのわからんことに。 あっ、確認したのは、 >Only those hosts which appear on the allow list and >do not appear on the deny list are granted access. の方だったので、これなら問題ないですよね。 先の回答に戻ります。 >> どちらにも含まれない hostC からのアクセスはどうなるのでしょうか? >許可されると思います。 なるほど、やはりデフォルトは許可なんですね。 > 「deny にマッチしても、その後 allow にマッチした場合は、閲覧を許可する」 評価が後の方が優先するような感じはあったのですが、どうもよく分からなかったのです。 >阪大からは弾くけど、阪大の工学部(適当)からのみ許可する場合 allow か deny どちらかが常に from all なら、もっと別の指定の仕方があるだろうし、 なんとなく、こういう使い方を考えてるのかな…、と思ったもので、 その前にどちらにも現れない hostC の取り扱いをお伺いしました。 > 阪大は許可するけど、阪大の工学部だけは拒否し、なおかつ > 群馬大は弾くけど、群馬大工学部だけは許可する >という設定は無理じゃないかと思ってます。 なるほど、そうですね。 ここまでは、考えてなかった(苦笑) 68user さんの回答を読んでいて、ふと思ったのですが、 実際には、allow list と deny list があるのではなく、 例えば allow list だけがあって(抽象的な意味で)、 この list は最初は全ホストが詰まってる。 そして、allow 指令は、ここに指定されたホストを追加し、 deny 指令は、指定されたホストをここから削除する。 また、order による評価順序は、この追加、削除の動作順序で、 最後に list に残ったホストのみを許可する。 なお、mutual-failure の場合は、list を最初に空にし、 allow 指令を先に評価する。 (逆に、最初は空の deny list だけがあるとしても同じ) というように考えるってのは、どうでしょうか? Apache 1.3 から、deny,allow には(初期状態はOKです)とか、 allow,deny には (初期状態はFORBIDDENです) って注釈が ついたから、ちょっと的ハズレかな…? |
|
> というように考えるってのは、どうでしょうか? good です。…と思ったら、 > Apache 1.3 から、deny,allow には(初期状態はOKです)とか、 > allow,deny には (初期状態はFORBIDDENです) って注釈が > ついたから、 う、知らなかった。ということは、 > order allow,deny > allow from hostA > deny from hostB > という設定があった場合、どちらにも含まれないhostC からのアクセスは > どうなるのでしょうか? 少なくとも apache 1.3 では `不可' ですね。実験してみたところ、 拒否されました。 ということは、order allow,deny って order mutual-failure と 同じ意味になってしまうんじゃないのかなぁ…。order allow,deny の 初期状態を FORBIDDEN にして、なにかうれしいことがあるんだろうか。 |
|
はじめまして。いきなりですが質問があります。 aliasesファイルを>newaliasesで更新しようとした際、 以下のようなメッセージが出て、aliasesが機能しません。 root@xxx>newaliases WARNING: writable directory /var WARNING: writable directory /var/spool WARNING: writable directory /usr/ucblib WARNING: writable directory /usr/ucblib dbm map "Alias0": unsafe map file /usr/ucblib/aliases WARNING: cannot open alias database /usr/ucblib/aliases Cannot create database for alias file /usr/ucblib/aliases: No such device ディレクトリのアクセス権などをいじってみたのですが、うまくいき ませんでした。 もし、解る方がいらっしゃいましたらよろしくお願い致します。 |
|
goo で 「newaliases warning writable dbm」で検索しました。 http://www.swlab.csce.kyushu-u.ac.jp/~kazunori/install/sendmail.phtml http://www.sigma.tosho-u.ac.jp:8082/inet/newsos.6.1/sendmail-8.9.3/README ですかね。 ところでさ、OS の種類とバージョン、sendmail のバージョンくらい 書きましょうよ。UNIX って言ってもいろいろあるんだから、uname -mrs とか uname -mrsp の結果を書くのは、基本中の基本だと思います。 |
|
なんだか、また分からなくなってしまった(苦笑) アクセスしてきた host に対して、 deny,allow の場合は、初期状態を OK にして、 allow,deny なら、初期状態を FORBIDDEN にする。 allow 文にこの host が含まれると状態を OK に書き換えて、 deny 文にこの host が含まれると状態を FORBIDDEN に書き換える。 これらの評価が終わった後の host の状態がアクセス可否を決める。 ということなら、それでもいいんだけど、 これでは確かに mutual-failure の存在意義がないですね…??? access.conf での allow from all とかの設定は、 .htaccess でのアクセス制限がない場合にしか意味はないんですよね? |
|
> ということなら、それでもいいんだけど、 ということだと思います。いまいち納得できませんが、このサーバで order allow,deny deny from hoge.ac.jp (架空のドメイン) とすると (=allowを書かない) 全部弾かれましたので。 > access.conf での allow from all とかの設定は、 > .htaccess でのアクセス制限がない場合にしか意味はないんですよね? access.conf で AllowOverride Limit(or All) としているなら access.conf で allow/deny 設定をしていても .htaccess で設定を上書き可能 access.conf で AllowOverride None(or Limit以外) としているなら .htaccess で設定を上書き不可。access.conf での allow/deny 設定が有効。 ですかね。 |
|
>ということだと思います。いまいち納得できませんが、 なるほど、(納得できないという点で)とりあえず、そう理解しておきます。 >access.conf で AllowOverride Limit(or All) としているなら あっ、そうですね。それが前提ですね。 まだちょっとの部分もありますが(苦笑) とにかく、どうもありがとうございましたm(_ _)m |
|
sendmail8.8.6以降、aliasesファイル等がシンボリックリンクだと、newaliasesでエラーになる為、リンクを張り直しました。 以下の手順でうまくいきました。 cd /usr/ucblib rm aliases aliases.dir aliases.pag cd /var/ucblib mv aliases aliases.dir aliases.pag /usr/ucblib ln -s /usr/ucblib/aliases /var/ucblib/aliases ln -s /usr/ucblib/aliases.dir /var/ucblib/aliases.dir ln -s /usr/ucblib/aliases.pag /var/ucblib/aliases.pag >ところでさ、OS の種類とバージョン、sendmail のバージョンくら>い書きましょうよ。UNIX って言ってもいろいろあるんだから、 >uname -mrsとか uname -mrsp の結果を書くのは、基本中の基本だ>と思います。 本当に一番大事な事を書くのを忘れていました。ごめんなさい。 どうもご迷惑おかけしました・・・。 |
|
パソコンをたちあげると、dfs.vxdがありませんとかでてそこで 止ってしまいます。何かキーボードを押すと次の画面(いつもの デスクトップの画面)になります。それ以降は、問題ありません。 dfs.vxdとはいったい何者なのでしょうか? もし知っている方がいましたら、教えてください。 |
|
一般に "pwd" と "echo $cwd" は同じとされますが、環境に よっては違う結果を生じることがあります。 これは説明しにくいので、例をあげてみます。 カレントディレクトリが /home/username で、ここに bin という 名前のディレクトリ /work/bin へのシンボリックリンク (bin@ -> /work/bin) があったとします。ここで cd bin として ディレクトリを移動すると、echo $cwd とした場合は /home/username/bin と表示されるのですが、pwd とすると /work/bin と表示されます。 |