>>3162 saki チェックしたいのがバイナリだけでいいのか、データファイルも 含むファイル一般なのかわかりませんが、前者であれば gzexe http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=gzexe&dir=jpman-5.0.0%2Fman を使うのが簡単でしょう。gzexe は実行ファイルを圧縮しておく ためのコマンドですが、実行時に gzip で展開するので、結果的に gzip の誤り検出機能をそのまま利用できます。gzexe も 圧縮した 実行ファイルも、いずれも sh スクリプトですので、改造も簡単 でしょう。 後者であれば、単に gzip を使う手もありますし、あるいは cksum や md5 などのコマンドを利用するのもいいでしょう。 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=md5&dir=jpman-5.0.0%2Fman http://www3.cds.ne.jp/~marimo/data/rfc/rfc1321-jp.txt なお、誤り検出のアルゴリズムとしては、 > ファイルをバイナリで開いて、そのファイルの全バイナリ値の > 合計のことだそうです。 は単純すぎます。言っちゃ悪いですが、この程度の認識しか持っていない のであれば、cksum や md5 などのコマンドを利用した方がよいです。 |
>>3153 68user なんかわざわざ書いてもらったようで恐縮です。 なんでもそうですが、自分が必要と思う部分を理解するには その周りの事情全てを勉強しておけ、というのが世間の常識なので、 俺みたくよこしまな考えでDNS関連の本やらWEBやらRFCやらを 眺めている輩にはなかなかハードルが高かったのですが、 おかげでDNS関連の資料に目を通すのにも少し抵抗が和らぎました。 ところで例の話の続きなんですが、うちのlinux(kernel-2.4.18+ glibc-2.2.4)では、bind-8.3.4-RELのdig8.3で名前解決できません。 straceしてみると、どうもpoll()で受信を検出できていないようです。 glibcの名前解決も同様のコーディングだったので、poll()を試しに select(),pselect()に変えてみましたがダメでした。 一方でbind9.1.3付属のdigでは名前解決ができました。 というわけで、そのコードをglibcに移植してしまえ、と思ったのですが、 iscライブラリというのが理解できず、結局移植はできていません。 一時はgethostbyname()内部を、正常に動作するdig9.1.3をsystem()で 呼び出し、その結果を拾ってくるように書き換えようと思いましたが、 どうやらgethostbyname()の利用頻度が低いようだったのでやめました。 今後についてはどうするか未定ですが、また調査しつつ改修しつつで 行きたいと思います。 |
かなりお久しぶりです。 >>3163 68user 実は私も、チェックサム=合計と思っていました。cksumのように CRC演算するものもチェックサムと呼ばれるようになった経緯を何 かご存知でしたら、教えていただけませんか? #少なくとも、CRC演算は合計(=サム)ではないです・・・ |
>>3165 へにか > 実は私も、チェックサム=合計と思っていました。 広義のチェックサムと狭義のチェックサムがあって、狭義の チェックサムは http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman#sect2 で言うところのアルゴリズム 1 なのだろうとわたしは思って います。このマニュアルではアルゴリズム 2・3 も「チェックサム」 と呼んでますね (それが一般的なのかどうかはわかりませんが)。 >>3163 68user を書いたときは、わたしの中では「チェックサム=広義のチェックサム」 だったので、あのような書き方をしましたが、 > ファイルをバイナリで開いて、そのファイルの全バイナリ値の > 合計のことだそうです。 は正しいですね。失礼しました。 |
>>3166 68user > チェックサムは > http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman#sect2 > で言うところのアルゴリズム 1 なのだろう あ、加算のたびに右ローテートって書いてあるので、アルゴリズム 1 も 「狭義のチェックサム」とは異なるんですね。 |
68userさん、へにかさん ご返答ありがとうございます。 大変、勉強になりました。 チェックサムといっても、いろいろなやり方があるのですね。 >cksum や md5 などのコマンドを利用した方がよいです。 組込のLinuxだったので上記のようなコマンドがなく、 自作しました。 全バイナリ値を合計して、16bit桁あふれしたら、 あふれた分を削除するという簡単なものです。 こんなのでもいいのかなと不安になりますが、 貴重な情報をありがとうございました。 |
すいません、また質問です。 Windows で ActivePerl を使うと、 \r\n を読み込むと \n を読み込んだと思い込み、 \n を書き出すと \r\n を書き出そうとする習性があります。 これを停止するために binmode STDIN; binmode STDOUT; とするのですが、こうすると while (<>) { ... } で読み込もうとするときに、 C:\> perl スクリプト名 < ファイル だとうまくいくのですが、 C:\> perl スクリプト名 ファイル だとうまくいきません。 つまり、<> は引数でファイル名を渡されると、 STDIN 以外のファイルハンドルからファイルを読んでいるようなのですが、 このファイルハンドル名は分かるでしょうか? ActivePerl を Windows 2000 以降で使うと、 スクリプト名に .pl という拡張子を付けると C:\> スクリプト名 でいきなり実行できて便利なのですが、 このスクリプトの中で <> を使うと、 C:\> スクリプト名 ファイル名 だとうまくいくのですが、 C:\> スクリプト名 < ファイル名 だと '<' を第1の引数と思い込んでうまくありません。 動かそうとしてるのはしょうもないファイルダンプツールです。 # fdump.pl #$file = shift; #open IN, $file; #binmode IN; binmode STDIN; binmode STDOUT; #$/ = "\r\n"; while (<>) { # 1行ずつ読み込み $line1 = $line2 = $line3 = ""; # 作業域を初期化 @char = split //; # 1文字ずつ分解 foreach $char (@char) { # 1文字ずつ処理 $line1 .= $char; # 文字をそのまま $line1 にくっつける $hex = unpack "H2", $char; # $charを16進数値に変換して$hexに格納 ($hex1, $hex2) = split //, $hex; # $hexを1文字ずつ分解して$hex1、$hex2に格納 $line2 .= $hex1; # 16進数の前半を$line2にくっつける $line3 .= $hex2; # 16進数の後半を$line3にくっつける } print $line1; # $line1を出力する(改行はもともとついている) print "$line2\r\n"; # $line2+改行を出力する print "$line3\r\n"; # $line2+改行を出力する } |
>>3164 has > straceしてみると、どうもpoll()で受信を検出できていないようです。 ほほう、glibc の問題かカーネルの問題かはわかりませんが、今どきの Linux でそんな問題にぶちあたるとは運がいいですね。 ここは一気に UDP・IP スタックを解析して、Linus にパッチを送付する まで頑張ってください。しかし粘りますねぇ (笑) # NIC を変えたらすんなり直ったりして。 >>3169 ふくし % grep '<>' /usr/src/contrib/perl5/* /usr/src/contrib/perl5/toke.c: /* turn <> into <ARGV> */ となったので、それを手がかりに調べてみると、perl(1) に 以下のように書いてありました。 次のループは、 while (<>) { ... # 各行に対するコード } 以下の疑似コードと同等になります。 unshift(@ARGV, '-') if $#ARGV < $[; while ($ARGV = shift) { open(ARGV, $ARGV); while (<ARGV>) { ... # 各行に対するコード } } 本当に binmode ARGV でうまくいくのかどうかは試していません。 他の調べ方としては print %main::; でシンボルテーブルを表示し、 片っ端から試してみる、とかですかね。 |
<<3170 さん、 ありがとうございます。 結果として、 while (<ARGV>) { ... } でも while (<>) { ... } 同様に動くので、<>のファイルハンドルがARGVであることに 間違いはないようですが、 binmode ARGV; は効かないようです!? へんだなぁ、、。 |
>>3166 68user なるほど、狭義と広義の差が有るんですね。僕にとっては、 新たな知識です。どうも教えていただいて、ありがとうござ います。 20年程前のパソコン雑誌に載っていた機械語プログラムには、 横一列の合計が書いてあったのを懐かしんで、こんな質問を してしまいました。確か最初は何も無く、次に横一列、次に 縦一列と横一列、その次にそれ+CRC演算が出てきたという 記憶があります。確か一列はどちらも1octet x 16個で、CRC は256octet毎に1octetでした。 僕も、その後GoogleでCRCもチェックサムと呼ぶようになっ た経緯を調べたのですが、経緯自体は、なかなか見つからな いですね。 もし、どなたか見つけたら、教えていただければ嬉しいです。 蛇足ですが、単純に足すだけだと間違いが見つかりにくいので、 > 加算のたびに右ローテート のような工夫がされているんでしょうね(推測です)。 |
>>3172 へにか > なるほど、狭義と広義の差が有るんですね。僕にとっては、 > 新たな知識です。 わたしが世の中の「チェックサム」という用語の使われ方を見る限り、 広義のチェックサムと狭義のチェックサムがあるのでは、と思った だけですので、誤解のなきよう。 例えば IP・UDP・TCP のチェックサムは「1の補数和の 1の補数」で 狭義のチェックサムだと思いますが、一方 java.utik.zip.CRC32 http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/zip/CRC32.html は Checksum インタフェースを implements していますが、この「Checksum」 は広義のチェックサムかなぁと。…ってなんか苦しい例だなぁ。 http://www.onelook.com/?w=checksum&ls=a#all_com を見ても、わたしの思う「狭義のチェックサム」しか載ってないよう ですし、やっぱりわたしの認識が変なのですかねぇ。 ちなみに http://www.jisc.go.jp/index.html で JIS を調べてみましたが、「チェックサム」の定義は見付けられませんでした。 >>has あの後、寝てしまいました…。 |
時間のあるときに、遊びつつ飲みつつちょっとずつですが、 linux kernel-2.4.18-24.7.xにてpoll()を追っかけてます。 相当飛ばし読みでやっとこ__pollwait()。 けど先が見えません…。 @68user あいかわらずですな。またの機会に。 |
>>3173 68user > 誤解のなきよう。 了解しました。 色々調べていただいて、ありがとうございます。 http://www.onelook.com/?w=checksum&ls=a#all_com のリンク先、これから追いかけてみます。 そこで、早速二箇所追いかけたところ、面白い記述を見つけました。 http://www.wikipedia.org/wiki/Checksum > Note: The term 'checksum' is also often used incorrectly to mean a CRC. http://www.wikipedia.org/wiki/CRC >CRC's are often referred to as "checksums," but such > designations are not accurate since, technically, > a checksum is calculated through addition, not division. incorrectlyを始め、思わずbabylonで単語の意味を調べてしまいました。;) とにかく歴史上などの何らかの事由で捻じ曲がったのではないかと推測 していますが、なんとかその確証が得られるよう、調べてみます。 運良く見つけたら、連絡します。見つけられなかったら、次回の(他の ネタを含む)書き込み時に、その旨お伝えいたします。 #教えて頂いたリンク先、情報の宝庫ですね。ありがとうございます。 |
#連続ですみません。 >>3173 68user >やっぱりわたしの認識が変なのですかねぇ。 少なくとも、cksumが存在する以上、(繰り返しになりますが)何らかの 事由があったのでしょうから、変と思わなくても良いのではないかと思 います。といいますか、その事由に依存すると思いますので、変かどう かという問題ではないかもしれません。 #尊敬する68userさんでも困難な問題なので、わたくしごときが調べ #きれるかどうか自信ないですが、挑戦してみます。 |
ども。以前erro.cgiの件でお世話になった者ですが、 どうしても解決できない事が有り、質問させてください。 Web上にてユーザーがアカウントを自動登録できるようにしたのですが 登録したユーザーのquotaをcronで設定したく下記のようにしてみました。 つか見つけてきました。 */5 * * * * edquota -p foo `awk -F":" '$3 > 1000 {print $1}' /etc/passwd` idが1000以上のユーザーに予め設けたユーザーfooのquotaを例えばsoft 20000 と同じに設定すると言うものですが、これをcronで走らせても なぜか登録ユーザーのquotaには反映されません。 しかし、直接#rootで上記コマンドを打つと反映されます。 で、コマンドが長すぎるのかとも思い、 下記のように二つに分けてcronで走らせてもだめでした。 勿論、直接コマンドではOKです。 */5 * * * * awk -F":" '$3 > 1000 {print $1}' /etc/passwd > member_id.txt */6 * * * * edquota -p foo `cat /root/member_id.txt` 二つに分けた場合ではmember_id.txtは作成されているから edquota -p info `cat /root/member_id.txt`がcronで作動してない ということになりますが、理由がわかりません。 長文で申し訳ありませんがご教授お願いします。 |
あ! edquota -p info `cat /root/member_id.txt`がcronで作動してないは edquota -p foo `cat /root/member_id.txt`がcronで作動してないです。 |
すみません。自己解決しました。 cronからメールが来てました。 /bin/sh: edquota: command not found /usr/sbin/edquotanにしたら解決しました。 板汚してすみませんでした。 で、ついでと言っては何ですが、、、 suEXECを使ったCGIはその所有者の権限で動くわけですが、 その所有者には/bin/falseとしてシェルは利用出来ないようにしています。 でも、コマンドが使える(例えばtelnet.cgi)CGIではcat /etc/passwd 等と出来てしまいます。 これは誰の権限で動いているのでしょうか。 OSはLinuxで鯖はApacheです。 |
>>3179 ある厨 > その所有者には/bin/falseとしてシェルは利用出来ないようにしています。 /etc/passwd に書くログインシェルはあくまで 「ログインするときに起動するシェル」 です。 ログインとは telnet や rlogin や ssh 経由でログインすることを指します。 よって、cron から起動したり、setuid(2) して exec(3) する場合は関係 ありません。 web サーバは nobody や www 権限で動かされることが多いでしょうが、 /etc/passwd で nobody:*:65534:65534:Unprivileged user:/nonexistent:/sbin/nologin www:*:80:80:World Wide Web Owner:/nonexistent:/sbin/nologin などと /sbin/nologin となっているのは、単にその権限でログインさせない という設定になっているだけで、その権限でのプロセスの実行を制限している わけではありません。 >>3176 へにか (狭義の) checksum や parity や CRC や hash はデータ誤りを検出するための 一方式だと思うのですが、「データ誤りを検出するためのもの」一般は英語で 何て言うんでしょうね? http://www.wikipedia.org/wiki/Checksum にあるように「integrity-protection measure」としか言いようがないなら、 「データ誤りを検出するためのもの」という意味で「checksum」という用語を 使ってもいいんじゃないかなぁ、となんとなく思っております。 |
>>3180 68user なるほど、ただ単にログインできないと言うことであって 実行制限ではないと言うことですか。 勉強になりました。 #やぱり独学では限度があるにゃぁ。 |
>>3180 68user >「データ誤りを検出するためのもの」一般は英語で何て言うんでしょうね? Error Detecting Code (誤り検出符合)です。 因みに、CRCは、なんと、1bit-errorまでは訂正できてしまいます。 即ち、Error Correcting Code (誤り訂正符合)でもあるところが、parityやchecksumとは違うところで、面白いです。 #訂正方法は遠い昔に忘れました・・・ #hashは方式を知らないので、訂正できるのかどうか分からないです。 #今日本屋で調べても、歴史的なことは見つかりませんでした。A^^; #http://www.wikipedia.org/ は現在crashしているみたいです。 |
始めまして。 なんとなくXULの練習でUnixの部屋のMozilla用検索ツールバーを作ってみました 迷惑になるかもしれないので(それと家のサーバーが落ちてるからというのもある) 許可があるまで配布はしてないのですが配布してもよろしいでしょうか? # 家の鯖と外の鯖両方落ちてる・・・ # なぜ家に居ないときに落ちる・・・ |
>>3183 NPK > 配布してもよろしいでしょうか? はい、構いません。ぜひお願いします。 |
ASCIIでプログラミングして ISO-2022-JPを出力するプログラムを書いていますが (なんのために #! /usr/local/bin/perl -w print "\e\$B\$3\$s\$K\$A\$O\n"; だとうまくいくけど、 #! /usr/local/bin/perl -w print "\e\Q$B$3$s$K$A$O\E\n"; だとダメですね。 \Q〜\Eより先に変数展開が行われるみたいです。 ヘンな感じ、、。 |
>>3184 68user まだDNSが無いのがちょっとどうかと思いますが(^^; とりあえず置いてみました。 # 古いdyndnsのパスワード忘れたものでそのうちとろうと思ってとりあえずしばらく放置です(笑) |
はじめまして。unix初心者です。 定期的にhtmlをftpでファイルをアップロードしたいと思いました。それで、cronで実現しようと考えcrontabで編集したのですが上手く動いてくれません。コマンドが間違っているかと思い、console上で実際にやってみたところ普通に動きました。どうしてcronでは上手く動いてくれないのでしょうか? 以下の様にやっています。 10 0 * * * ftp -n < /home/hogehoge/ftp.sh ftp.shの中身 open ftp-server user hogehoge passwd ascii prompt cd data/ put index.html quit |
もじら組のゆきちといいます。いつも、こちらの記事は参考にさせていただいています。 >NPKさん 下記で紹介されているツールバーですが、「新もじら瓦版」というニュースサイト(?)があるのですが、そこでツールバーの報道を行なっても良いでしょうか。 ぜひとも、紹介させていただきたいのですが。 |
追記 今、InfoseekとX68Kの両方を利用してみたのですが、「新しいタブで開く」(Infoseek)「新しいWindow」(X68K)で開くを利用すると、最大化(全画面表示)になって、かつ、右にスクロールバーが出ない状態です。最大化を解くと、小さくなりますが、スクロールバーが出ませんね。1.4αです。 こんなところですいませんが、とりあえず、利用報告です。 |
ここで会話することじゃないと思いますが(^^; (68userさんすいません >>3188 ゆきち(もじら組) 紹介に関しては問題ないです。 鯖が貧弱なので落ちたらごめんなさい(笑) 開発には1.4α使ってるんですが家ではそんなバグは確認されてませんね・・・。 もしかしたらほかのXULアプリと衝突を起こしてるのかもしれません。 そのうち調べてみます。 |
ありがとうございます。今、時間がとれないですが、紹介してみようと思います。ありがとうございました。 #管理人さん、すいませんでした。 |
>>3185 ふくし > \Q〜\Eより先に変数展開が行われるみたいです。 プログラミング Perl 第 3版では、その辺の評価順序は明示 されていないみたいですね。 >>3187 Phantom 普通、/var/mail/$USER などに実行結果がメールで届くはずです。 そこに何か情報があるかもしれません。 >>3189 ゆきち(もじら組) FreeBSD 4.7-RELEASE + mozilla-1.4b (2003041308) ですが、再現 しませんでした。ただ、「新しいタブで開く」としても、(タブでなく) 新しいウィンドウが開いてしまいます。 infoseek の方ですが、アプリとしての感想を述べさせていただくと、 - うちの常用のサイズではウィンドウの幅が足らず、「新しいタブで開く」が 切れる (ウィンドウサイズを広げれば表示される) 「Search by Dictionary」と単語入力フォームが広すぎるのかも。 -「Search」で検索じゃなくて、「国語」「和英」「英和」それぞれを押せば 検索するといいかも (そしたら「Search」は不要) - 「和英」と「英和」はひとつにまとめて、フォームの内容が ASCII なら 英和、日本語なら和英、だといいかも。 - てなところを設定で変更できたりするとうれしいかも。 - 「英→日」はとても便利ですねぇ。 - 入力した単語の履歴が残って、さらに補完してくれたりすると素晴らしい。 てな感じです。 勉強用にとりあえず作ってみただけなのか、あるいは継続的に 開発されるのかわかりませんが、もし後者であればご検討ください。 >>3190 NPK > ここで会話することじゃないと思いますが(^^; 全く問題ないです。 >>has しばし待たれよ。 |
ずっと前に、 while (<>) { ... } のファイルハンドル ARGV に binmode が適用されないので、 while (<>) { ... } における ActivePerl の \r\n => \n 置換を抑制できない、 という話をしましたが、5.6 以降では binmode のかわりに use open IN=>"raw:"; だと動作するようです。PerlIOってやつですね。 |
>>3193 ふくし 自己レスれす。 use open IN=>":raw"; の間違いでした。 |
>>3185 ふくし perldoc perlre > You cannot include a literal "$" or "@" within a "\Q" sequence. An > unescaped "$" or "@" interpolates the corresponding variable, while > escaping will cause the literal string "\$" to be matched. You'll need > to write something like "m/\Quser\E\@\Qhost/". >>3192 68user > その辺の評価順序 「詳説 正規表現」のP245とか… |
改行コードについて質問いたします。 UNIX(HP-UX)の改行コードはLFだと思うのですが、 このコードを削除して複数行のテキストファイルを 一行にすることは可能でしょうか? |
>>3195 /tk > 「詳説 正規表現」のP245とか… 書いてありました。正規表現エンジンを作ってみる本だと思って 買ってみたらそうじゃなかったので、ほとんど読んでなかったり。 >>3196 天 tr -d '\n' < file perl -pe 's/\n//' < file などなど。 |
>>3192 68user > 普通、/var/mail/$USER などに実行結果がメールで届くはずです。 という事でしたが、何故か何も届いていませんでした。 それで、もう1度すべて見直して、ftp.shの中身を以下のようにしたら 出来ました。 ftp.sh open ftp-server user hoge passwd prompt cd data/ ascii del index.html put /home/hoge/public_html/index.html ./index.html quit なんか、putがうまく行ってなかったみたいです。それで、フルパスで 書いたら上手く行くようになりました。ここまで、書かなければならない とは、、、 ご迷惑おかけしました。 |
>>3192 68user 実験的な要素は強いですけど基本的に自分が使うから作ってるのでよさげなら取り込みます(笑) ってな訳で微妙に弄ってみました。 セレクトボックス以外は大体取り込んだと思います。 |
エンベロープを変えてメールを送る方法を超初心者向けにわかりやすく説明していただけませんか? |
>>3199 NPK FreeBSD 4.7-RELEASE + 昨日あたりの nightly で最新版を インストールして mozilla を再起動したところ、mozilla が 起動しなくなりました (何かを poll(2) してずっと待っている)。 ~/.mozilla/ をリネームしてみたところ起動したのですが、設定が 全部元に戻るのは避けたいので、infoseek transfer だけを削除 する方法を教えてください。 >>3200 oMH どういう環境で実現したいのか わからないので無理っす。 |
>>3201 68user 一応そういう事は予想していてあとゆあおうんりすくと書いたんですがね(^^; chromeの中にあるchrome.rdfからinfoseek_transferに関する項目を削除 chromeの中にあるoverlayinfoディレクトリ内navigatorディレクトリの contentの中にあるoverlays.rdfからinfoseek_transferに関する項目を削除 これでアンインストールできます。 |
>>3202 NPK > 一応そういう事は予想していてあとゆあおうんりすくと書いたんですがね(^^; 別にクレームをつけているわけではないです。単なる報告と質問の つもりでした。 で、アンインストールして、再度インストールしたところ正常に動いている ようです。ありがとうございました。 てゆーか、 http://ryuzi.dyndns.org/mozx/j_googlebar/index.html にちゃんと書いてありましたね。失礼しました。 |
いや、そういうリスクがあるので自分で治せない場合はやばいっすよ〜みたいなニュアンスで書いたんですが(^^; 別にクレームとしては受け取ってないですよ。 報告はあったほうがありがたいですし。 1.4のナイトリーは大規模な変更が行われてるようですのでたぶんこれからもこういうことがあると思います。 ですので、むしろ報告していただけるほうがありがたいです。 |
別々のディレクトリのファイルどうしの日付を見てファイル更新が新しければ、コピーするというスクリプトを作りたいんですけど、そのようなコマンドはありますか? |
もしご存知でしたら教えてください。 例) temp/aaa/bbb/ccc cccディレクトリの中に 111 222 333 と3つのファイルがあるとします。 その時に cccディレクトリに行き 「ls」コマンドを打つと 111 222 333 と表示されると思いますが この表示を以下のようにフルパスにしたい。 temp/aaa/bbb/ccc/111 temp/aaa/bbb/ccc/222 temp/aaa/bbb/ccc/333 というのが質問です。 もしご存知でしたらご教授をお願いします。 以上 よろしくお願いします。 |
>>3205 teru rsyncというコマンドがあるそうです。 http://www.turbolinux.co.jp/knowledge/public/178.html >>3206 awa ls | perl -nle "print \"$PWD/\$_\";" 一応動きます。 #1文字目が'/'なのをフルパスというのでは? |
分かる人にとっては、下らない質問かもしれませんがお分かりでしたら お願いします。あと、私はperlは全然分かりません。。。 perlで実行した内容結果がindex.htmlというHTMLファイルで出力されるの ですが、それをcronで決まった時間で実行しています。そして、その出力さ れたファイルをftpでアップしたいと考えています。しかし、以下のように cronを書くと駄目でした。 20,50 0-23/2 * * * perl hoge.pl | ftp -n < ftp.up どう駄目かというと、説明する必要ないかもしれないのですが、ftp上に置 かれるindex.htmlファイルが最新のものではなく、その前の時間のファイル になってしまうのです。(0時50分に更新すると、ファイルの時間は0時20分 のものになってしまうということです。)原因は明確的で、perlが実行され 出力される前のファイルをftpでアップしている事、にあるのは分かってい ます。ただ、その解決方法がわかりません。 perlのファイルを書き換えないと駄目なんでしょうか…。それとも、別の 方法があるのでしょうか? |
>>3204 NPK > そういうリスクがあるので自分で治せない場合はやばいっすよ〜 ごもっともです。精進します。 >>3205 teru もしシェルスクリプトでやるのであれば test(1) を使って if [ "$fromdir/file1" -nt "$todir/file1" ]; then cp -f $fromdir/file1 $todir/file1 fi など。 >>3208 Phantom > perl hoge.pl | ftp -n < ftp.up perl と ftp を同時に実行しているので、perl が書き換える 前に ftp で put しているのでしょう。 そもそも % command1 | command2 < file というのはおかしいです。command2 の標準入力に渡したいのは、 command1 の出力なのか、あるいは file なのかが不明確だから です。sh 系だとなぜかエラーにならないようですが、csh 系だと Ambiguous input redirect. と怒られます。 というわけで、 perl hoge.pl ; ftp -n < ftp.up でしょう。 もし hoge.pl が - 正常終了時には 0 を返す (exit(0)) - 異常終了時には 1 以上を返す という UNIX コマンドの一般的なルールに従っていて、hoge.pl が 異常終了した場合には ftp を実行したくないのであれば、 perl hoge.pl && ftp -n < ftp.up の方をお勧めします。 |
>>3209 68user > perl hoge.pl && ftp -n < ftp.up これで、思い通りに出来ました!有難う御座いました。 凄く単純なことにミスをしていたんですね。お恥ずかしい。 sh 系でもエラーはいて欲しいと思いました。 |
はじめまして。 マシン:HITACHI3050 OS:HI-UX のマシンのIPアドレスを変更したいのですが、 Hostsファイルの変更だけで大丈夫でしょうか? HP-UXのように、samコマンドみたいなものがあるのでしょうか? よろしくお願いします。 |
>>3211 11SE HI-UX も HP-UX もさわったことはないのでわかりませんが、一般的な UNIX なら /etc/hosts は、ただの IP アドレスとホスト名のマッピングを 決めるファイルです。 /etc/hosts はマシン (正確にはインタフェース) の IP アドレスを決める ファイルではないので、何かしらのファイルを変更しないといけないでしょう。 管理コマンドを探すか、 # find /etc -type f | xargs fgrep 10.0.0.1 などでどのファイルに何が書かれているのか探しましょう。 |
はじめまして最近Laboの管理者にはじめてなった伊藤と申すものです。 まず、状況から説明したいと思います。先日Laboの電気工事のため停電があり、WS(ワークステーション)を停めなくてはいけませんでした。 本日復旧作業をしていたのですが、ディスクアレイに繋がっているWSがうまく起動しません。また、ディスクアレイの表示画面にもROM ERROR と出ています。これは何が悪いのでしょうか?GW中なので、業者にも連絡がつかず八方塞がりな状態です。よろしくお願いします。 以下に詳しいlogの内容を記載しておきます。 (WS<COMPAQ XP1000>のlog) Checking local filesystems /sbin/ufs_fsck -p Can't open /dev/rrz8g : No such device or address /dev/rrz8g : CAN'T CHECK FILE SYSTEM Can't open /dev/rrz8h : No such device or address /dev/rrz8h : CAN'T CHECK FILE SYSTEM THE FOLLOWING FILE SYSTEMS HAD AN UNEXPECTED INCONSYSTENCY /dev/rrz8g(/raid) /dev/rrz8h(raid2) Unknown error in reboot (ディスクアレイ<proware 型番不明>の表示パネルに出てくるMessage) ROM ERROR 19200,8,1,N |
>>3213 伊藤@管理初心者 ディスクアレイの表示画面に ROM ERROR と出ているなら、ディスク アレイの故障した可能性が限りなく高いと。そっちは業者にまかせる として、あとはそのディスクアレイなしで OS がブートするかどうか です (ディスクアレイ中のデータを読み出すことが目的なら、あきら めて業者を待ちましょう)。 シングルユーザモードで起動して、/etc/vfstab あたりを修正して、 /dev/rrz8* をマウントしないようにするのが UNIX における一般的な 対処です。 ただ、おそらく OS は Tru64 あたりではないかと推測しますが、 さわったことがないので具体的な対処方法はわかりません。 |
>>3214 68user お返事ありがとうございます。 やはり、ディスクアレイは故障の可能性が高いと…。 68userさんのおっしゃる通り、ディスクアレイ中のデータを読み出すことが目的だったんですが・・・、わかりました。 いろいろと御助言ありがとうございました。 |
memo http://www.coins.tsukuba.ac.jp/~yas/classes/dsys-2002/2003-03-04/index.html http://www-6.ibm.com/jp/developerworks/security/011005/j_s-stun.html |
「ソースを表示してみよう」の結果が 次のように表示されてしまいます。 1: : Content-type: text/html(LF) 2: : (LF) 3: : <html><body bgcolor=white>(LF) 4: : </body></html>(LF) |
>>3217 匿名 ご報告ありがとうございます。ウチに帰ったら対処します。 |
テープメディア(DLTtapeIV)についての質問です。 DLTtapeIVに退避させた、圧縮後のデータの容量を調べる方法がわからず大変困っています。 テープ内の圧縮後データ容量を確認するコマンド、方法があれば教えて下さい。 なにとぞ、なにとぞ宜しくお願い致します。 |
クライアントよりフォルダを指定して、その配下全てのファイルをサーバにアップロードすることはservletで可能でしょうか? また、そのフォルダに指定したアクセス権限を付与することは可能でしょうか? |
>>3219 DLT8000user あんまり詳しくないんですが、tar で保存していれば tar tvf …とかいう話でしょうか? cpio は知りません。 じゃなくて、圧縮率の話? >>3220 匿名 servlet でというか、HTML 的にはフォルダまるごとのアップロードは 無理だと思います。やるなら Java Applet とか DirectX とかいう 話になるかと。 アクセス権限については環境依存なので、java.lang.Runtime#exec() で設定でしょうか。 |
>>3218 68user > ウチに帰ったら対処します。 と言いつつ忘れていました。そしてここ数日、このサーバが 落ちていたので、まだ対処できていません。今週末にはなんとか…。 |
ネットワークプログラミングの基礎のところで、 select や fork を「マルチスレッド」と書かれているようですが、 少し違うのではないでしょうか? 新しいスレッドが生成されず、見ため同時に動いていることを マルチスレッドとは言わないと思います。 |
>>3024 テクノソルジャー いまさらですが http-proxy.pl のメモリリークを修正しました。 ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/http-proxy.pl >>3217 匿名 > 「ソースを表示してみよう」の結果が次のように表示されてしまいます。 修正しました。ご指摘ありがとうございました。 >>3223 int > 見ため同時に動いていることをマルチスレッドとは言わないと思います。 「見ため同時に動いていること」を「マルチスレッド」と表記している 本があったのでそれを真似しているんですが、やっぱり変でしょうか (と言ってもその本が見付けられないので、勘違いかも)。 とはいえ、pthread などの「スレッド」と混同しやすいのは確かです。 より適切なの用語は「多重化」でしょうが、個人的にはわかりにくい と感じます (だからあえて「スレッド」としてみた)。 何かよい用語はないでしょうか。 |
初めまして。 突然ですがおききしたいことがあります。 貴HP内にてsocketを使ったHTTPクライアントを作るプログラムを拝見させていただき、独立した環境で同じように組んで実行しましたがホストが存在しないとかえってきました。 これは至極当然なので、$iaddr(指定アドレス)に自分自身(127.0.0.1)を指定して実行しました。 ちなみにANHTTPDが動いています。 perl5でライブラリ上でもsocketは確認しています。 結果はエラーコード500を返すだけでなにも起こりませんでした。 アクセスログもやはりエラーコードは500でした。 自分自身へ試してみて異常がないことを確認できなければ外部に向かって使用するのにはかなり抵抗があったため試してみたことでした。 socketを使っての自分自身へのアクセスはできないのでしょうか? お暇なときでよろしいですのでお返事よろしくおねがいいたします。 |
>何かよい用語はないでしょうか。 プロセス制御,プロセスの多重化,プロセスの生成と複写, マルチプロセス,同時実行プロセス 等は如何でしょう. |
>>3225 ちゃお > 結果はエラーコード500を返すだけでなにも起こりませんでした。 > アクセスログもやはりエラーコードは500でした。 ということは TCP/IP 的には正常に通信できているが、HTTP リクエスト で送信している内容がよくない、という状況と考えます。 あとは - 実行したのが http-client.pl なのか、http-client-2.pl なのか。 - http-client-2.pl であれば、URL に何と入力したのか。 その URL をブラウザで見ると正しく表示されるのか。 - そもそも telnet で成功したのか。その場合は何とタイプしたのか。 と情報がないと何とも言えません。 >>3226 Netboy apache 起動の件、ありがとうございました。 > プロセス制御,プロセスの多重化,プロセスの生成と複写, > マルチプロセス,同時実行プロセス いえ、どういう手法で多重化しているか (プロセス/スレッド/select) は 別として、「見ため同時に動いていること」を何と表記すればよいかが よくわからないのです。 |
>>3227 68user お返事ありがとうございます。 そして言葉足らず失礼いたしました。 >実行したのが http-client.pl なのか、http-client-2.pl なのか 実行したプログラムはhttp-client.plのほうです。 >telnet で成功したのか telnetでは127.0.0.1にポート80で接続できました。 でもそのあとのheloコマンドでは501を返してきました。 またメインマシンがwinMEなので最初の接続(open)はDOSプロンプトからできません。 >URL をブラウザで見ると正しく表示されるのか ブラウザではエラー500を返してきます。 またURLには127.0.0.1/root/http_client.cgiとしています。 拡張子はcgiにしています。 よろしくおねがいします。 |
連続ですいません。 さっきかきこんだあとおもうところがあって拡張子plで試してみました。 plは設定(http.conf)に登録していないのでいつも使っていませんでした。 もちろん今回も実行したあとはブラウザには表示されませんでした。 しかし、アクセスログには200が残っていました。 これって成功したということでいいのでしょうか? |
>>3228 ちゃお > でもそのあとのheloコマンドでは501を返してきました。 わたしの知る限り HELO と言えば SMTP です。そして ポート 80 の先にいるのは HTTP サーバです。HTTP サーバは SMTP を解さないので、エラーになるでしょう。 http-client.pl というのは、要はブラウザの代わりをする プログラムなのですが、その辺は理解されていますか? > またURLには127.0.0.1/root/http_client.cgiとしています。 あなたがブラウザで普通に見られるような URL を試しましょう。 http://127.0.0.1/ で何かコンテンツが表示されるなら、まずそれで試すべきです。 とりあえず http://x68000.startshop.co.jp/~68user/net/http-1.html を読んで、実際に試してみてください。 |
c言語でFTPクライアントのプログラムを組んでいます。 プロトコルやソースは大変参考にさせていただいています。 環境は、TurboLinux 8 serverです。 FTPクライアントのプログラムなのですが、ファイルの転送などは問題なく動作しているのですが、ディレクトリ単位の転送の記述部分がわかりません。何度かコマンドのデバッグモードで試して、RFCなどの記述も呼んでいるのですが。参考になるページがあるのでしたら、教えてください。 また、ファイルかディレクトリかを区別する方法もあればと思い、ご教授よろしくお願いいたします。 |
>>3231 じゅじゅ > ディレクトリ単位の転送 おそらく、ディレクトリを LIST or NLST して、一つ一つ RETR する しかないです。 > ファイルかディレクトリかを区別する方法 ブラウザで anonymous ftp サイトに接続した場合などは、LIST の結果が drwxr-xr-x ならディレクトリ、とするのが一般的だと思います。もっと きっちりやるなら、CWD で移動できたらディレクトリとみなす、とか。 基本的に、ftp は UNIX に依存したくなかったため、この辺はあえて 決めてないのではないかと思っています。 もしディレクトリを判別できるようにするなら、名前付きパイプは? ソケットは? デバイスファイルは? door は? ということになり、 結局 ls の結果をそのまま送る方がよい、と判断されたのではない でしょうか (そしてわたしは、この判断は誤りであると思っています)。 |
簡単なことかもしれませんが、LISTやNLSTをし、続けてファイルの総数やディレクトリの中にあるファイル名を取得することはできるのでしょうか?それらのデータを取得する記述と、また、 >drwxr-xr-x ならディレクトリを取得する 記述が分かりません。 ご教授よろしくお願いいたします。 |
>>3233 じゅじゅ LIST すれば drwxr-xr-x 9 user group 512 Apr 28 2001 dir1 drwxr-xr-x 10 user group 512 Jul 30 2000 dir2 -rw-r--r-- 1 user group 122 Mar 29 2000 file などという結果が返ってくるので、行頭が d である dir1 と dir2 がディレクトリであることがわかります。 さらに LIST dir1 とすれば dir1 の下のファイル・ ディレクトリ一覧が返ってきます。 |
>>3230 68user 前回はちんぷんかんぷんな質問失礼いたしました。 現状ちゃおのマシンにはapacheがインストールされています。 そしてrootにはhtdocsが指定されています。 さらにhtdocsの中にindex.htmlがあります。 まずはtelnetからやりなおしてみました。 コマンドプロンプトから以下のように入力しました。 telnet 127.0.0.1 80 接続成功 GET /index.html HTTP/1.1 HOST:127.0.0.1 Content-type:text/html ソース取得成功してます。 次にコマンドプロンプトからperlを実行します。 (もちろんperlのあるディレクトリには移動済みで、他のHTMLソースを吐き出させることにも成功しています) c:\>perl http_client.pl このときはなにも表示されません。 しかしコードは200を返します。 このときの結果は同じものではないのですか? >http-client.pl というのは、要はブラウザの代わりをする プログラムなのですが、その辺は理解されていますか? つまり$iaddrで指定したアドレスにあるソースを受け取って表示する、 dos上で実行したらbody部分がそのままdosプロンプトに表示されるということでいいんですよね??? それともこのプログラムにさらに引数を与えなければいけないのでしょうか? 長文になってしまい失礼いたしました。 またお時間のあるときにお返事いただければ幸いです。 |
Makefileでのライブラリの定義について はじめまして。solaris初心者のかんすけです。 環境はsparc-solaris8です。 Makefileを作成してみたのですが、自分で作成したライブラリファイルをCCのところでうまく定義できません。実行すると「ファイルが見つかりません」とエラーが表示されます。 この場合、まず何を疑えば良いのでしょうか? 正しいMakefileでのライブラリの定義の仕方を教えてください。 また良いサンプルファイルのURL等ありましたら、紹介してください。 よろしくお願いします。 |
今までの数々の質問大変失礼いたしました。 色々いじっているうちに何故か成功いたしました。 今までありがとうございました。 これからもがんばってください。 |
>>3236 かんすけ デフォルトルールや特殊変数などを全く活用してませんが、 main: main.o hoge.a $(CC) -o $@ $> hoge.a: hoge.a(a.o) hoge.a(b.o) $(AR) ru $@ $> とりあえずこんな感じで実現することは可能です。 |
OpenSSL による https クライアントをちょっとだけ バージョンアップしました (解説は更新なし)。 http://x68000.startshop.co.jp/~68user/net/ssl.html 変更点はこちら。 http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/https-client.c しかし SSL は未だによくわからん…。 |
苦節 3日。やっと rootCA を組み込む方法がわかった。 忘れないうちにメモメモ。 ctx = SSL_CTX_new(ssl_method()); SSL_CTX_load_verify_locations(ctx, "mod_ssl-2.8.9-1.3.26/pkg.sslcfg/ca-bundle.crt", NULL); |
皆様こんにちは。 僕はサーバースペースを借りてHPを作ってます。 いきなりの質問で失礼と存じますが… asciiart.cgiの設置方法を教えていただけないでしょうか? 一応、↑検索をかけてみたのですが見当たりませんでした。 パーミッション asciiart.cgi 755 environment.pl 644(試しに755) …だけではダメなのでしょうか? ヨロシクお願いします。 |
>>3241 ひろ > asciiart.cgiの設置方法を教えていただけないでしょうか? http://x68000.startshop.co.jp/~68user/unix/pickup?netpbm に含まれている giftopnm、ppmtopgm などのコマンド群と、 HTTP クライアントである httptalker.pl が必要です。 netpbm はフリーで配布されています。httptalker.pl はわたしが 作ったものですが、wget や fetch などのフリーなダウンローダで 代用可能です。 申し訳ありませんが、解説しはじめると長くなるので、これ以上の 詳細な解説はご勘弁ください。 関係ないですけど、テーブルアートというのがあります。こっちの方が 表現力が高いので、おもしろいかも。 http://hi.sakura.ne.jp/~okada/table/ |
返答ありがとうございました。 難しいので諦めます。。 asciiart.cgiを設置されてるサイトって有るんですかね?(謎) 因みにasciiart.cgi検索かけても見つかりませんでした。(笑) |
>>3243 ひろ > asciiart.cgiを設置されてるサイトって有るんですかね?(謎) ないと思います。うちの CGI プログラム群は、配付しているのではなく ただ単にソースを公開しているだけなので、わたし以外の人にとっては 設置しづらいでしょう。 |
「ls」を入力すると、カレントディレクトリのファイルやディレクトリが表示されますが、ファイルは表示させずにディレクトリだけを表示させることは出来ますか? ls -d でやってみてもダメでした。 |
>>3245 bebe -d は引数にディレクトリを指定した場合、そのディレクトリの 下でなく、ディレクトリそのものの情報を表示するオプションです。 というわけで、 % ls | grep ^d % find . -type d -maxdepth 1 % find . -type d -maxdepth 1 -ls などなど。 |
>>3246 68user > ls | grep ^d ls -l | grep ^d の間違いでした。 |
ネットワークプログラミングの基礎知識 http://x68000.startshop.co.jp/~68user/net/ に、 暗号化のお話 (1) - 共通鍵暗号方式 http://x68000.startshop.co.jp/~68user/net/crypt-1.html SSL/TLS でアクセスしてみよう (1) (2) http://x68000.startshop.co.jp/~68user/net/ssl-1.html http://x68000.startshop.co.jp/~68user/net/ssl-2.html を追加しました。説明が中途半端ですが、ご容赦を。 cvsweb はこちら http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/?sortby=date |
はじめまして。 ここのページでかなり勉強させてもらっています。 いつの間にかDSNクライアント作成講座もできてるみたい なので、時間があったら読ませてもらいます。 ところで、DNSを使ってみよう でsend関数がでてきましたが、 あれはTCPでは使えないのでしょうか? UDPはコネクションレス型で、TCPはコネクション型なのは解ってますが・・・。 もし使える方法があれば教えてください。 |
はじめまして、terapadと申します。 いくつかのプログラムからarコマンドを用いて、ライブラリを作成するのですが、 スタティックリンク版とダイナミックリンク版を作成したいのです。 ar -r test.a aaa.o bbb.o ccc.o 現在、上記のようなコマンドを用いているのですが、 これはスタティックリンクになるのでしょうか? ダイナミックリンク版を作成するためには、 arコマンドに何かオプションが必要なのでしょうか? 何も分からず恐縮ですが、ご教授お願いします。 |
>>3249 のぐけん。 > ところで、DNSを使ってみよう でsend関数がでてきましたが、 > あれはTCPでは使えないのでしょうか? send(SOCKET, $data, 0); で使えます。 >>3250 terapad > これはスタティックリンクになるのでしょうか? そうです。 > ダイナミックリンク版を作成するためには、 こちらをどうぞ。 http://www.jp.FreeBSD.org/QandA/HTML/401.html |
すいません。 send(SOCKET, $data, 0); の形は、すでにSOCKETがつながっている時ですよね? send(SOCK, MSG, 0, TO); の形では無理でしょうか? |
お返事ありがとうございます。 早速、サンプルプログラムを用意してやってみたところ cc -fpic -o libshared.SO -c shared.c は正常に終了しlibshared.SOが作成されました。 次の cc -shared -Wl, -soname, libshared.so.1 -o libshared.so.1 libshared.SO のところでは下記のようなエラーが出ます。 cc: 1501-218 file libshared.so.1 contains an incorrect file suffix cc: 1501-228 input file libshared.so.1 not found cc: 1501-218 file libshared.SO contains an incorrect file suffix どのように回避したら良いでしょうか? |
すみません。もう一度コマンドコピーして実行してみたところ、 cc -shared -Wl,-soname,libshared.so.1 -o libshared.so.1 libshared.so ld: 0706-012 -h フラグが認識できません。 ld: 0706-012 -a フラグが認識できません。 ld: 0706-005 ファイルが見つからないか、オープンできません: libshared.so.1 ld:open(): このパス名にはファイルまたはディレクトリが存在しません。 このようなメッセージに変わりました。 でも、わかりませんが・・・。 |
>>3252 のぐけん。 > send(SOCK, MSG, 0, TO); > の形では無理でしょうか? は TCP では無理だと思います。connect しないと 3way handshake してくれないです。 ちなみに、ご存知かもしれませんが、UDP では - socket && connect && send(SOCKET, $data, 0); - socket && send(SOCKET, $data, TO); のいずれも可能です。 >>3254 terapad http://www.jp.FreeBSD.org/QandA/HTML/401.html は gcc を使っている場合のやり方です。gcc を使わない のであれば、お使いの cc のマニュアルを読みましょう。 |