|
質問があります。 とあるアプリケーションがとあるサーバーと通信しているとします。 そのアプリケーションが接続しているサーバーの、IPとPort番号を調べるにはどうすればよいのでしょうか。 |
|
>>4734 ひよこ netstat コマンドでどうでしょう。 http://x68000.q-e-d.net/~68user/unix/pickup?keyword=netstat&target=command |
|
>>4731 wssjf120 「シーザー暗号」で調べてみてください。 |
|
こんにちわ いくらかでもヒントが欲しくて投稿しました。 グーグルマップの ajax についてなのですが、 グーグルマップの htmlソース内に <div class="sloc" jsdisplay="$m.svaddr"> のようなコードがあります。 このタグ内に jsdisplay という属性名がありますが これはmaps2.68.jsファイル内で以下のコードと関連しているようなのですが var Tc="jsselect", te="jsinstance", aj="jsdisplay", cj="jsvalues", bj="transclude", $i="jscontent", mk="$index", nk="$this" ; javascriptで jsdisplay のような任意の属性名を定義する方法というか それに関して何らかの情報があれば教えていただけませんでしょうか。 |
|
>>4737 moto 勝手に作った属性を書いておいて、getAttribute で読み出すことができます。 値のセットは setAttribute で。XHTML とかだと勝手に属性を作るのはまずい のかもしれませんが、詳しくないのでわかりません。 -------- <html><body> <div id="mydiv" hoge="abc"></div> <script language="JavaScript"> var mydiv = document.getElementById('mydiv'); alert(mydiv.getAttribute('hoge')); </script> </body></html> --------- |
|
>>4732 びすこ > SSL_get_error();← "5"が返ってきます よくわかりませんが、5 ってのは include/openssl/ssl.h の #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ ですよね。 http://www.openssl.org/docs/ssl/SSL_get_error.html Some I/O error occurred. The OpenSSL error queue may contain more information on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret can be used to find out more about the error: If ret == 0, an EOF was observed that violates the protocol. If ret == -1, the underlying BIO reported an I/O error (for socket I/O on Unix systems, consult errno for details). の通りにやってみるとどうなりますか? |
|
68user 様 ヒントありがとうございました。 グーグルマップを制御しているmaps2.68.jsファイル内にもgetAttribute,setAttributeの関数が出て いますのでこれらが鍵なんですね。 一筋の光明が見えてきた気がします。 でも、maps2.68.jsファイルは170キロバイトもあるのに一行しかありません。 ですからコメントなぞ一つもなくすごい代物です。 解読するのに改行とインデントを入れる作業をしているのですが、 これがまた気の抜けない大変な作業です。 グーグルさんも簡単には教えてくれないんですね (^_^.) ありがとうございました。 |
|
>>4740 moto どこかに解説サイトがあったような…と思ったら、Google Suggest でした。 http://slashdot.jp/developers/article.pl?sid=04/12/18/1033242 Maps の解説は見たことはありませんが、ある程度なら探せばあるかもしれませんね。 |
|
http://X68000.q-e-d.net/~68user/unix/ の検索は OR 検索だったのですが、 AND 検索に変更しました。そのために結構な量の改修を行ったのですが、例に よって怪しげです。もし不具合があればお教えいただけると幸いです。 |
|
>> SSL_get_error();← "5"が返ってきます >よくわかりませんが、5 ってのは include/openssl/ssl.h の > #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ >ですよね。 おそらく#define SSL_ERROR_SYSCALL 5の5だと思います。 >http://www.openssl.org/docs/ssl/SSL_get_error.html > Some I/O error occurred. The OpenSSL error queue may contain more information > on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret > can be used to find out more about the error: If ret == 0, an EOF was observed > that violates the protocol. If ret == -1, the underlying BIO reported an I/O > error (for socket I/O on Unix systems, consult errno for details). >の通りにやってみるとどうなりますか? 再度デバッグをしたところssl_connect()の戻り値は-1ではなく0でした。 10回ぐらい連続で動かしてると-1が戻ることもあります。 戻り値が0ですとプロトコルに違反したEOFが見つかったとありますので、 SSL_CTX *ctx = SSL_CTX_new(SSLv23_client_method()); と、プロトコル設定をしているのが悪いのかと思い TLSv1_client_method()などに変えてみましたが効果はありませんでした。 EOFに関してはEnd Of Fileしか思い浮かばずお手上げです。 戻り値が-1のときのBIO云々に関してもぐぐって見つけたソースを追加してみましたが こちらも効果はありませんでした。 Winsock2を使ってproxy経由のときだけssl_connect()でエラーになるほうが難しいと 思うのですが・・・ こればかりやっていられないので、cygwinの方を使うことにします。 |
|
初めて書き込みさせていただきます。 http://x68000.q-e-d.net/~68user/net/rsa-1.html に書かれているrsa1.cをVisal Studio 2005で実行させたいのですが、可能でしょうか? |
|
>>4744 peace そのままでは動かないので、 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=981427&SiteID=7 などを参考にしてください。 |
|
初めまして、hornetsと申します。 このサイトには、OpenSSLを用いたRSA暗号のプログラムが掲載されていますが、 OpenSSLを用いてElGamal暗号もできるのでしょうか? 教えていただけたら幸いです。 |
|
>>4746 hornets > OpenSSLを用いてElGamal暗号もできるのでしょうか? 現時点の OpenSSL には ElGamal は実装はされていません。 OpenSSL の ML を探すと、実装が欲しいなら http://mixmaster.sourceforge.net/ を見れば、とありました。 # http://marc.theaimsgroup.com/?l=openssl-users&m=92476310717523&w=2 |
|
初めまして。Kenichi Maehashi と申します。 いつもネットワーク関連の情報を拝読させていただいております。 さて、 >> http://x68000.q-e-d.net/~68user/net/module-pop3.html を参考にさせていただきながら、POP3 クライアントを書いたのですが、 実行すると、カレントディレクトリに msg-xxxxx-x.txt というような テキストファイルが出力されてしまいます。(x は数字です) これは Net::POP3 モジュールの仕様なのでしょうか。 または、出力をしないような設定方法はありますでしょうか。 ご教示いただければ幸いです。 よろしくお願いいたします。 |
|
>>4748 Kenichi Maehashi Perl5.8.5 の Net::POP3 で試してみましたが、そのようなファイルは 生成されませんでした。 Net/POP3.pm や、それが利用している Net/Cmd.pm、Net/Config.pm を見ても、 msg-xxxx-x.txt というファイルが生成されるようには見えませんでしたので、 今一度確認していただけますか。接続時に $pop = Net::POP3->new($hostname, Debug => 1); と Debug を ON にすると何かわかるかもしれません。 |
|
>>4748 68user さま 有り難うございます。 コードを削って確認してみたところ、併用していた MIME::Parser モジュールが 出力するファイルであることが分かりました。確認不足で申し訳ありません。 MIME::Parser の出力するメッセージファイルは出力しないよう設定できないのでしょうか。。。 重ね重ね申し訳ございませんが、何卒宜しくお願い致します。 |
|
>>4750 Kenichi Maehashi よくわかりませんが、output_to_core でしょうか。 http://search.cpan.org/~eryq/MIME-tools-5.411a/lib/MIME/Parser.pm output_to_core YESNO Instance method. Normally, instances of this class output all their decoded body data to disk files (via MIME::Body::File). However, you can change this behaviour by invoking this method before parsing: If YESNO is false (the default), then all body data goes to disk files. If YESNO is true, then all body data goes to in-core data structures This is a little risky (what if someone emails you an MPEG or a tar file, hmmm?) but people seem to want this bit of noose-shaped rope, so I'm providing it. Note that setting this attribute true does not mean that parser- internal temporary files are avoided! Use tmp_to_core() for that. With no argument, returns the current setting as a boolean. |
|
>>4748 68user さま お世話になっております。 ご指摘の通り、$parser->output_to_core(1); で解決できました。 このページはチェックしていたのですが、見落としておりました。。。申し訳ありません。 本当に有り難うございました。 |
|
はじめましてwここのHPをみてソケット通信を勉強しています。 よろしくお願いします。 perlを使ってサーバプログラムとクライアントプログラムを作り ソケット通信をしています。 ActivePerlを使用し、ローカルマシンでは通信できているので 実際にサーバプログラムをサーバにUPしてテストしたいと思い プロバイダからもらった領域にFTPでUPしました。 で、質問なのですが サーバプログラムが仮に http://www.aaa.com/user/test.pl という アドレスにある場合 クライアントプログラムの IO::Socket::INET->new( PeerAddr ... ); のPeerAddrはどう変えればいいのでしょうか? ※モジュールを使ってみようを参考にしています。 またほかにも何かしなければいけないのでしょうか? よろしくお願いいたします。 |
|
>>4753 サーバにUPしたプログラムと通信したい $socket = IO::Socket::INET->new( PeerAddr => 'www.aaa.com', PeerPort => '80', Proto => 'tcp'); ); でよいです。 http://perldoc.perl.org/IO/Socket/INET.html に書き方のサンプルが あるので、ざっと眺めてみてください。 |
|
ありがとうございます。 PeerAddr => 'www.aaa.com' を指定した場合 user/test.pl この部分はどうなるのでしょうか? 特に指定しなくても通信できるのでしょうか? |
|
>>4755 かみゅ IO::Socket はソケットのモジュールです。その上に HTTP を流すのであれば HTTP クライアントを作ってみよう(1)〜(4) を読んで、送信すべき HTTP リクエストはどんなものなのかを調べてください。 |
|
初めまして、書き込みさせていただきます。 現在RSAについて学んでおり、非常に有用な情報としてこちらのHPを拝見させていただきました。 さて、http://x68000.q-e-d.net/~68user/net/rsa-1.htmlに記載されているrsa-1.cをコンパイル してみたところ、openssl関連のヘッダファイルが読み込まれない旨のエラーが返され、 実行できません。実行環境としてVineLinux3.1にてgccコンパイラを用いており、opensslの バージョンは最新版と思われる0.9.8をインストールしております。 対策方法をご教授いただければ幸いです。よろしくお願いします。 |
|
>>4757 matsumoto まずは rsa.h や engine.h のありかを探してください。 例えば /usr/local/include/openssl/rsa.h が存在するなら % gcc -I /usr/local/include rsa-1.c とします。 |
|
はじめまして。STと申します。 CGI初心者です。 質問させていただきます。 「静的な画像表示」のところで、該当するソースをコピーして サーバーにアップした後http://〜cgiと入力しGIFファイルを表示させようとすると 「GIF89aX」と表示されます。 パーミッションはOKで画像ファイルは存在します。 解決方法を教えていただけますと幸いです。 よろしくお願いします。 |
|
>>4759 ST http://chaichan.web.infoseek.co.jp/qanda/qa7041.htm に一本化ということで。 |
|
http://x68000.q-e-d.net/~68user/webcgi/sample/perl/graph-maker.cgi にて日本語を出す方法のメモ。 % cvs di -u cvs diff: Diffing . Index: graph-maker.cgi =================================================================== RCS file: /home/68user/cvsroot/public_html/webcgi/sample/perl/graph-maker.cgi,v retrieving revision 1.9 diff -u -r1.9 graph-maker.cgi --- graph-maker.cgi 26 Feb 2006 08:31:21 -0000 1.9 +++ graph-maker.cgi 13 Feb 2007 13:12:16 -0000 @@ -886,6 +886,8 @@ } } + GD::Text->font_path( "/usr/local/share/fonts/TrueType/" ); + $graph->set_title_font("sazanami-gothic", 14 ); my $image = $graph->plot($ref_data) or die "Cannot create image"; binmode STDOUT; |
|
findコマンドの使い方について教えて下さい。 findコマンドで検索を行う場合、指定したディレクトリ内だけ 検索を行い、下位のディレクトリは対象外にしたいのですが できるのでしょうか。 例えば、/tmp配下を検索するとして、 /tmp /tmp/backup /tmp/save とあった場合、 /tmp内だけを検索し、/tmp/backupや、/tmp/saveなどの下位ディレクトリ内 は見ないようにしたいのです。 find /tmp -name "*.csv" ! -size 0 -print ドキュメントに、「-prune」がありましたが、指定すると、表示すべきものが でてきません。上手くいきませんでした。 find /tmp -name -prune "*.csv" ! -size 0 -print find /tmp -name "*.csv" -prune ! -size 0 -print また、ファイル名は、ワイルドカード指定なので、表示後のgrepなども 使えません。 環境は、 Solaris8 Bシェル |
|
>>4762 べた 試してませんが、 % find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですかね。 とはいえ、 - maxdepth オプションを使える find をインストールする - grep '^/[^/]*/[^/]*$' としてパスに '/' が 2個以上含まれないことを チェックする - ls -l /tmp/*.csv | awk '$5~/^0$/{print $9}' などの方法がよいような気もします。 |
|
>> 4763 ありがとうございます。 >% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですが、配下のディレクトリを全て網羅するのは。。。 また、試してみましたが、直下のファイルがでませんでした。 > - maxdepth オプションを使える find をインストールする > - grep '^/[^/]*/[^/]*$' としてパスに '/' が 2個以上含まれないことをチェックする 実際には、パスに、’/’が2個以上含まれるているので無理かと。 > - ls -l /tmp/*.csv | awk '$5~/^0$/{print $9}' これが、一番よい方法になるのですかね。 |
|
>>4764 べた > 直下のファイルがでませんでした。 FreeBSD では表示されました。Solaris の find は出ないのでしょうか。 > 実際には、パスに、’/’が2個以上含まれるているので無理かと。 「3個以上」の誤りでした。 ベストなのは「/tmp/ 直下に置くといういまいちな仕様を直す」だと 思いますが、それができれば苦労してないんでしょうね。 |
|
>>4765 68user ありがとうございます。 > find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですが、 期待したものがでませんでした。 「*.csv」が表示されず、それ以外の全てがでました。 lsコマンドで上手く行きそうなので、この方法で試します。 |
|
>>4764 べた >>% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print >ですが、配下のディレクトリを全て網羅するのは。。。 すべて書くのは不可能ですよ。 それに、10も20もないでしょ。 ディレクトリだけを求めてすべてを変数に入れて設定すれば出来ませんか。 OP="-o -name backup -o -name -save" find /tmp -name "*.csv" $OP -o ! -size 0 -print でも、その下にあったら無理かな。 >>4766 べた >> find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print >ですが、 >期待したものがでませんでした。 >「*.csv」が表示されず、それ以外の全てがでました。 使い方、間違ってませんか。? |
|
初めまして!beckと申します。 このサイトでOpenSSLを用いたRSA暗号を実装例を紹介していますが、 鍵生成などの工程では、どれほどの時間を要するのでしょうか? もちろん、PCのスペックに左右されることは承知していますが・・・ |
|
>>4765 68user >>4768 庵 >% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですが、 やはり上手くでません。 期待している’*.csv’を表示しません。 > FreeBSD では表示されました。Solaris の find は出ないのでしょうか。 UNIXのOSによって異なる動きをするというこですか。 Solairs以外の環境がないのでなんともいえませんが。 |
|
文字コードとエンコーディング (1) http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html 上記のページ、とても良くできていると思います。 ありがとうございます。 しかしながら、「エンコーディングとは」の項の先頭付近にある「他の文字と同時に扱う場合のことは考えられていません」の『文字』は『文字集合』とするべきでは無いでしょうか? # 入門学習のために読む人にとって、重要な部分だ思います。 |
|
>>4771 zxcv ご指摘ありがとうございます。修正してみましたがいかがでしょうか。 http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html cvsweb が動かなくなっているので、修正点の diff を貼っておきます。 RCS file: /home/68user/cvsroot/public_html/webcgi/org/char-code-1.html,v retrieving revision 1.6 diff -r1.6 char-code-1.html 68c68 < <LI>ASCII … 半角英数字・半角記号 (a,A,0,!,@,#) --- > <LI>ASCII … 半角英数字・半角記号 (a,A,0,!,@,# など) 70c70 < <LI>JIS X 0208 … ひらがな・かたかな・漢字・全角記号 --- > <LI>JIS X 0208 … ひらがな・カタカナ・漢字・全角記号 73c73 < があります。 --- > などがあります。 80c80 < エンコーディングとは、複数の文字集合を一緒に扱うための枠組のことです。 --- > エンコーディングとは、複数の文字集合を同時に扱うための枠組のことです。 82c82 < 他の文字と同時に扱う場合のことは考えられていません。 --- > 他の文字集合と同時に扱う場合のことは考えられていません。 84c84 < ASCII と JIS X 0208 を同時に扱う場合を考えてみましょう。 --- > たとえば、ASCII と JIS X 0208 を同時に扱う場合を考えてみましょう。 90c90 < 「A」なのか「あ」なのかを判断できません。そのためには --- > 「A」なのか「あ」なのかを判断できません。これを判断できるようにするためには、 94c94 < つまり「ここから先は ASCII」「ここから先は JIS X 0208」というようなものを入れる。 --- > たとえば「ここから先は ASCII」「ここから先は JIS X 0208」という意味の、区切り用のコードを入れる。 96c96 < という2通りの対策があります。さらに、 --- > という2通りの対策が考えられます。さらに、 101c101 < という細かい規格を決めたもの、それがエンコーディングです。 --- > という細かな規格を決める必要があります。 103,104c103,105 < エンコーディングには、主に3種類あります。 < JIS と Shift_JIS と EUC-JP です。 --- > このような、複数の文字集合を同時に扱うための規則のことを「エンコーディング」と呼びます。 > <P> > エンコーディングには、主に3種類あります。ISO-2022-JP と Shift_JIS と EUC-JP です。 |
|
readコマンドを使ってファイルから読み込みを行っています。 読み込んだ件数を出力しようとしているのですが、どうしても 0件となってしまいます。 どこがいけないのでしょうか。どう直せばよいのでしょうか。 ----------------------------------- #!/bin/sh # FILE="/tmp/sample.csv" i=0 while read LINE do 編集処理 表示処理 i=`expr ${i} + 1` done < ${FILE} echo "${i} 行読み込みました。" |
|
>>4773 べた whileとかforのループ内で使用した変数は、 ループ終了後(ループを抜けた後)参照する ことはできないのでようか。 できるとした場合、どうすればいいのですか。 |
|
>>4774 べた 私もあまり詳しくないのでしりません。 kshでできたような。 http://search.luky.org/linux-users.9/msg06099.html で、似たことが質問されていますので確認してみては。 |
|
>>4774 べた 最近シェルスクリプト触ってないんですが、 多分これでOKかと。 ------ i=0 exec 3<&0 0<$FILE while read LINE; do : done exec 0<&3 3<&- echo $i ------ |
|
>> 4776 ありがとうございます。 上手く行きました。 また、以下でも出来ました。 ------------- i=0 exec < ${FILE} while read LINE do echo ${LINE} i=`expr ${i} + 1` done echo ${i} ------------- |
|
はじめまして。 質問があります。 よくあるポートモニターなどはどのように作っているのでしょうか。 また、自分のパソコンが通信しているデータを見ることができますか? |
|
Perlなのですが、sync(fsync?)を使って 書き込みを実現しようとしています。 書き込み後、正しく書けたか、ファイルの比較や サイズの取得をやろうとしています。 今一、Perlのモジュールとかライブラリとかが わかりません。 参考になるものありませんか。 また、どのようにすればよいですか。 |
|
findコマンドの「-perm」指定での検索について findコマンドで、ファイルの権限の検索をする場合、 ユーザ、グループ、その他の所有者に権限を設定して 実施しますが、ユーザ、グループ、その他所有者を 表す「u」、「g」「o」の前に、「-」があるかないかで 状態が変わります。 「u」、「g」「o」の前の「-」にはどのような意味が あるのでしょうか。 # find . -type f -perm o+w # find . -type f -perm -o+w # find . -type f -perm -g+w,o+w # find . -type f -perm -g+w,-o+w |
|
>>4781 べた http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html がわかりやすいかと思います。 -perm -mode mode で指定されている許可属性ビットのすべてがファイルでも立っていたら真。 -perm +mode mode で指定されている許可属性ビットがファイルでどれか一つでも立っていたら真。 |
|
おしえてください |
|
VMwareServer(無償版)を使ってlinux4を2台(A、B)を仮想環境を使ってインストール しました。(ethernetはnetwork connectionはHost-only) linuxのファイアウォールを無効にし、bindをカスタムでインストールし 特に設定を変更しないで、/var/named/etc/chroot/etcフォルダにnamed.conf を作成しました。 AサーバのVゾーンの問い合わせについては、zoneファイルから名前解決はできますが、 Xゾーンについてはforwardを使ってBサーバに転送するように設定しましたが Xゾーンの名前解決ができません。(Xゾーンについては、Aサーバからの問い合わせ に関しては、Xzoneファイルで解決するように設定してあります) AサーバからXゾーンPCに対してdigコマンドを実行すると、 AUTHORITY SECTION : 518400 IN NS F.ROOT−SERVER.NET ・・・・ が記録されます。 何か原因等は考えられるでしょうか。 ちなみにforwardの設定は以下のようにしてあります。 ご教授のほう、よろしくお願いします。 zone "X" { type forward; forward only; forwarders { 0.0.0.0; #Bサーバのアドレス }; |
|
解決しました。 recusionがnoになっていたようです。 |
|
>4782 ありがとうございます。 読んでみます。 |
|
>>4782 68user ありがとうございます。 読んでみます。 |
|
シェルで、FTPを自動実行しています。 FTPの接続が失敗した場合、ログイン・パスワードが間違っていた場合、 getするファイルが存在しなかった場合など、異常を判断したいのですが、 例えば、 0:正常終了 1:実行エラー みたいな感じで、、、。 リターンコードを取得することができるのでしょうか。 UNIXのFTPですとファイル転送に失敗してもリターンコードが、”0”が 返ってくると聞いたのですが、最後に、byeを実行しているので、"0”で 返ってきます。 以下のような内容でやっています。 ftp -v -n [IPアドレス] <<END > /dev/null 2>&1 user [ユーザ名] [パスワード] cd [リモートディレクトリ] lcd [ローカルディレクトリ] get [getするファイル名] bye END エラーだけをファイルに出力してみたのですが、接続エラーしかでず、 ログインの失敗やファイルが存在しないエラーは出力されませんでした。 ftp -v -n [IPアドレス] <<END 2>ftp_error.log > /dev/null >&1 すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ があるかないかをgrepでみるしかないのでしょうか。 Not connected. 530 Login incorrect. Login failed. 530 Please login with USER and PASS. 550 getするファイル名: No such file or directory. |
|
>>4788 べた ftp コマンドを使う限りは > すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ > があるかないかをgrepでみるしかないのでしょうか。 が無難です。また、どのようなエラーがどこで発生したかをプログラム上で 突き止めようとせず、行頭の 4xx か 5xx にマッチするものがあれば全て エラーとすることをお勧めします。 これ以上を求めるならば、Perl + Net::FTP モジュールなどで FTP クライアントを 作成するのがよいとわたしは思います。 |
|
>> 4789 ありがとうございます。 必要な、エラーすべてをgrepしようと考えていました。 行頭の 4xx か 5xx にマッチするものがあれば全てエラー とするでやつてみます。 ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないのですが、メッセージの内容で見た方がよいの でしょうか。 |
|
>>4790 べた > ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないの > ですが、メッセージの内容で見た方がよいのでしょうか。 数年ほど前に同じようなことをやっていましたが、そのときはどうやったの だったか…。 ・ftp コマンドの終了ステータスが >0 ならエラー ・2xx がひとつもなかったら認証以前で失敗とみなしてエラー のいずれかだったような気がします。 |
|
>>4791 68user >・ftp コマンドの終了ステータスが >0 ならエラー >・2xx がひとつもなかったら認証以前で失敗とみなしてエラー ありがとうございます。 なるほど、2xxがなかったらですか。 確かに、接続エラーということは、レスポンスコードが出てなかった ので、レスポンスコードがなければで良いかも知れません。 UNIXのOSによるかも知れませんが。 環境は、Solaris8 です。 |
|
AIX5.3の環境にて下記のようなファイルシステムをマウントしています。 /app /app/log auto mount=trueの設定です。 OS再起動後、/appがマウントされていなかったので、/etc/filesystemsを 確認したところ、/app/logの定義が/appの定義よりも前に記述されいたため、 /app/logが先にマウントされてしまい、/appのマウントに失敗したようです。 一旦、/app/logをアンマウントし、/app, /app/logの順番でマウントしました。 次回の再起動時に正常にマウントできるように、/etc/filesystemsを直接、 編集して正しい順序に設定しようと考えていますが上記ファイルシステムが マウントされたままの状態で作業を行なっても大丈夫か教えて頂けますでしょうか? |
|
>>4793 保守見習い AIX は知りませんが、マニュアルを読む限りでは他 UNIX 系システムの /etc/fstab と同様に、 ・ブート時の mount 順序を決める ・ブート時の mount の設定を記述する ・mount コマンド実行時に各種オプションが省略された場合の デフォルト値を記述しておく という役割のようなので問題ないでしょう。 http://publib16.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/files/aixfiles/filesystems.htm |
|
>>4794 68user ご意見ありがとうございます。 ファイルシステムをマウントしたまま、/etc/filesystemsを編集し、 問題なく無事作業が完了しました。 |
|
おひさしぶりです。 わからないことができると質問しに現れてすみません。 よろしくお願いします。 C:\>perl -v This is perl, v5.8.8 built for MSWin32-x86-multi-thread (with 50 registered patches, see perl -V for more detail) Copyright 1987-2006, Larry Wall Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com Built Jan 23 2007 15:57:46 で、以下のようなプログラムを書きました。 -------------------------------------------------- Foo.pm #! perl -w use strict "subs"; package Foo; use base Exporter; our @EXPORT = qw($bob); our $bob = "#123456789"; 1; -------------------------------------------------- bar.pl #! perl -w use strict; use Foo; print "bob: $bob \n"; すると、以下のようなエラーになります。 C:\>bar.pl Unknown error Compilation failed in require at C:\bar.pl line 6. BEGIN failed--compilation aborted at C:\bar.pl line 6. Foo.pm の use strict 'subs'; を無効にするとなぜか正常に動作します。 C:\>bar.pl bob: #123456789 何が悪いかお分かりでしょうか。 別に use strict 'subs' をやめればいいじゃん・・・ というハナシなんですが、 実際の元のプログラムはもっと大きくて(当たり前 ;;;)、 use strict; でずっとやってきていたので・・・。 何かわかりましたらよろしくお願いいたします。 |
|
追記です。 どうも use base Exporter; が use strict 'subs' に引っかかるらしく -------------------------------------------------- Foo.pm #! perl -w package Foo; use base Exporter; use strict "subs"; our @EXPORT = qw($bob); our $bob = "#123456789"; 1; だと動作します。あと use base をあきらめて -------------------------------------------------- Foo.pm use strict "subs"; package Foo; use Exporter; our @ISA = qw(Exporter); our @EXPORT = ('$bob'); our $bob = "#123456789"; 1; でも動作します。 ううーん。 |
|
kqueue の説明の所 timeval は tv_sec, tv_usec で分解能 10^-6 == micro second timespec は tv_sec, tv_nsec で分解能 10^-9 == nano second 実際の分解能は処理系依存 |
|
awk/nawkを使って編集をしています。 ファイルから読み込み、読み込んだ内容を判断して printf関数を使って表示しています。 例えば { \ printf("XXX:%s\nxxx:%s\nxxx:%s\n・・・・\n", \ $1,$2,$s・・・・); \ } \ のように、値の前にコメント付けて表示しています。 この表示内容を追加したところ、 「Word too long」 のメッセージが出力され動かなくなりました。 メッセージの通り、printf関数で表示する内容が長すぎるためだと 思うのですが、原因は、その通りでしょうか。 実際、何バイト(何文字)までなのでしょうか。 また、対処するにはどうしたらよいのでしょうか。 環境は、 Solaris8、csh |
|
>>4799 べた 補足です。 メッセージの通り1行が長いのがいけないのではと フィールドごとに表示しようとしたのですが、 例えば { \ printf("xxx:%s\n",$1); \ printf("xxx:%s\n",$2); \ printf("xxx:%s\n",$3); \ : : } \ やはり、 「Word too long」 のメッセージが出力され動かなくなりました。 |
|
はじめまして。 最近openSSLを使用することになったので勉強しています。 非常にいい内容で助かっています。 それでですねrsaを使用する際のサンプルを一度コンパイルしてみたのですが… RSA_generate_keyをはじめとする、約25個の関数が未定義と起こられてしまいました… これはハードウェア的な問題なのでしょうか? ちなみにlinuxにtelnetで接続しながら作っています。 よろしくお願いいたします。 |
|
>>4800 べた awk スクリプトを別ファイル(以下の例では hoge.awk)にして $ awk -f hoge.awk fuga.txt のようにしてもダメですか? |
|
>>4800 べた 書き忘れましたが、別ファイルにする場合は 行末の "\" は削除してください。 |
|
はじめまして。 サーバ関係の情報を探していて、ここにたどりつきました。 下記のようなPOPサーバの改造は可能でしょうか。 ネット上を探してみたのですが、情報が少なく、 参考になるサイト等ご存知でしたら、ご教授ください。 よろしくお願い致します。 【現状】 POPクライアントの拡張コマンド内で、 ユーザID等をべた書きして、サーバにリクエストしている。 【改造】 現在クライアントにて上記のべた書きしている箇所をプロパティファイル とする。POPサーバを改造し、このファイルを読み込むようにする。 |
|
>> 4803 ありがとうございます。 上手くいきました。 |
|
>>4805 べた それで OK だったということは awk ではなく csh の制限に引っかかっていたようですね。 恐らく awk のスクリプト部分を \ で複数行つなげていたので 一行に記述できる制限(1024文字)を超えたのでしょう。 |
|
はじめまして。 Perl CGIで基本認証をクリアーするやり方は分かっているのですが、 IEに事前に基本認証をクリアーさせるための設定方法が分かりません。 perlから、IEに対して、ヘッダーとして下記を書き込んでも、だめなんですね。 print "Authorization : Basic Base64文字列\n"; かならず、認証画面が表示されます。 IEに何を書き込めば良いのでしょうか。ご教示をお願いします。 |
|
>>4798 通りすがりのプログラマ ありがとうございます。バグ ID 28 として記載いたしました。 近日中に直します。 http://spreadsheets.google.com/pub?key=pAr6UVKFG0jthbVP572cKEA&output=html |
|
はじめまして、'斎藤 誠'と申します。 初めての投稿で質問する不躾をお許しください。 とある理由からpop3クライアントを試しています。 pop3-client.pl pop3-client-Net::POP3.pl 双方を試してみまして、後者の方を使用したいと思っています。 当方の環境はFedora7です。小生自身は初心者です。 いわゆる自宅サーバで試しているのですが、 当方が別のIPで設置しているtest-pop3.server(以下、前者)と 目的のpop3.server(以下、後者)とで応答が異なっていることで困っています。 双方ともtelnet接続では正常な応答をしています。 ちなみに前者はFedora core 6でdovecotです。 pop3-client.plにて接続すると、前者がエラーで後者が正常応答です。 これに関してはNo.2380の sleep 1; を挿入したらうまく動きました。 pop3-client-Net::POP3.plにて接続するとpop3-client.plの場合とは 逆に前者が正常に応答して後者はエラーとなります。 今日一日費やしてみましたが、解決できません。どなたかにご教授願いただきたく 投稿しました。なお、初心者ですので何卒お手柔らかにお願いいたします。 |
|
>>4796 ふくし > use base Exporter; うちでは use base qw/Exporter/; とすることで動きましたがどうでしょうか。 >>4804 pixy > 現在クライアントにて上記のべた書きしている箇所をプロパティファイル > とする。POPサーバを改造し、このファイルを読み込むようにする。 前提条件がよくわかりませんが、ソースがあるとして改造が可能か と問われれば「可能です」が答えです。 >>4807 Perl使い > print "Authorization : Basic Base64文字列\n"; Authorization ヘッダはクライアントがサーバに送信するものなので、 根本的に誤解があるようです。 http://x68000.q-e-d.net/~68user/net/http-auth-1.html 以下のような CGI プログラムを使うことで、疑似的にログアウト することもできます で実現できませんか? あと、別解として http://username:password@example.com/foo/ に飛ばす方法もありますが、IE の場合は設定変更が必要です。 http://support.microsoft.com/default.aspx?scid=kb;JA;834489 >>4809 mac pop3-client.pl は実用に耐えるものではないので、pop3-client-Net::POP3.pl を 使ってください。で、pop3-client-Net::POP3.pl の $pop = Net::POP3->new($hostname); を $pop = Net::POP3->new($hostname, Debug=>1); としてデバッグ情報を表示してみてください。 あと、Net::POP3 の方でエラーになるサーバの POP3 サーバソフトウェア名と バージョンは何でしょうか? (qpopper など) それと「エラーになる」というのは具体的に何がどうなるのでしょうか。 代替案としては Mail::POP3Client http://search.cpan.org/~sdowd/Mail-POP3Client/POP3Client.pm を使う手もあります。 |
|
早々のお返事、有難う御座います。 エラーは「認証失敗: 」だったのですが、 ご教授の通りデバッガつけて起動させて見ましたところ Net::POP3>>> Net::POP3(2.28) Net::POP3>>> Net::Cmd(2.26) Net::POP3>>> Exporter(5.58) Net::POP3>>> IO::Socket::INET(1.29) Net::POP3>>> IO::Socket(1.29) Net::POP3>>> IO::Handle(1.25) Net::POP3=GLOB(0x9e97f44)<<< +OK Qpopper (version 4.0.4) at ******.jp startin g. Net::POP3=GLOB(0x9e97f44)>>> USER ****** Net::POP3=GLOB(0x9e97f44)<<< +OK Password required for ******. Net::POP3=GLOB(0x9e97f44)>>> PASS .... Net::POP3=GLOB(0x9e97f44)<<< +OK ****** has 0 visible messages (0 hidden) in 0 octets. Net::POP3=GLOB(0x9e97f44)>>> STAT Net::POP3=GLOB(0x9e97f44)<<< +OK 0 0 認証失敗: at ./pop3-client-Net::POP3.pl line 41. ということで認証は通っていたようです。mailが空だったということでしょうか。 お騒がせいたしました。line 41というのは多少いじったところもあって originalとは異なりますが、 $auth_check = $pop->login($username,$password); など、実質的な変更はしていないつもりでした。 ちなみにtelnet接続でのcapaの応答は +OK Capability list follows TOP USER LOGIN-DELAY 0 EXPIRE 0 UIDL RESP-CODES AUTH-RESP-CODE X-MANGLE X-MACRO X-LOCALTIME Fri, 20 Jul 2007 09:04:45 +0900 IMPLEMENTATION Qpopper-version-4.0.4 となっていました。 これからFTPなどもやってみるつもりですのでまたお世話になるかもしれません。 そのときはまたお願いいたします。 |
|
Net::POP3 の検索でみましたら login ( [ USER [, PASS ]] ) USER、PASSコマンドの両方を送信します。... メールボックスのなかのメッセージ数を返します。 しかしサーバーにメッセージが何もなければ文字列"0E0"を返します。 これはブール値コンテキストでは trueになりますが、 数値コンテキストでは0です。 指定したユーザがサーバーで認証できなければ、undefが返されます。 ----------------------------------- とあったのですがバグということでしょうか。 Mailが無いことを確認できる方法は有りますでしょうか。 その場合はundefのエラーを回避するというスクリプトを 書けばよいようにも思っています。 |
|
>>4811 mac pop3-client-Net::POP3.pl の if ( $auth_check == undef ){ は誤った書き方で、正しくは if ( ! defined $auth_check ){ です (以前は undef かどうかのチェック方法を誤解していたため)。 これだとどうなりますか。 |
|
>>4813 68user > if ( ! defined $auth_check ){ バッチリです。それにしてもすばやいレス、本当に有難う御座います。 |
|
たいへん心苦しいのですが別のことをお聞きしてよろしいでしょうか。 HTTPクライアントのスクリプトで、Basic認証が通ったかどうか 戻り値などで判断する方法は有りますでしょうか。 いま確認中のスクリプトは以下の通りです。 #!/usr/local/bin/perl use strict; use HTTP::Request::Common; use LWP::UserAgent; my $req = POST( 'http://*****.jp/login.html'); $req->authorization_basic('ID', 'Pass'); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); |
|
>>4815 mac HTTP::Response の code メソッドを使えばよいと思います。 ----- #!/usr/local/bin/perl use strict; use HTTP::Request::Common; use LWP::UserAgent; my $req = POST( 'http://X68000.q-e-d.net/~68user/net/sample/http-auth/secret.html'); $req->authorization_basic('hoge', 'wrong-password'); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); print $res->code."\n"; my $req2 = POST( 'http://X68000.q-e-d.net/~68user/net/sample/http-auth/secret.html'); $req2->authorization_basic('hoge', 'fuga'); my $ua2 = LWP::UserAgent->new; my $res2 = $ua2->request($req2); print $res2->code."\n"; |
|
>>4816 68user 重ね重ね、有難うございました。 |
|
>>4810 68user さん、 そうなんですよ。use は引用符をつけてはいけないが use base だとダメ、 no strict 'refs'; だとあらゆる裸のワードを勝手にクォートするらしいです。 お騒がせしました。 |
|
>>4818 ふくし わかっておられるかもしれませんが、use base は built-in な文法ではなく ただ base.pm を use しているだけなので、base 内の sub import の引数として 渡されるから、ということですね。strict も実体は strict.pm なので同様に strict refs ではなく 'refs' としなければならないと。 個人的には、ここまで汚い造りにするかねぇ、という感じです。いちおう つじつまをあわせてるのはすごいですが。 |
|
awkを使ってファイルからある部分のデータを取り出そうとしています。 ファイルの内容 ---------------------------------- ---------------------------------------- Tue Jul 31 09:00:00 Jst 2007 xxxxxx xxxxxx xxxxxx xxxxxx Tue Jul 31 09:00:00 Jst 2007 ---------------------------------------- Tue Jul 31 09:10:00 Jst 2007 xxxxxx xxxxxx xxxxxx xxxxxx Tue Jul 31 09:10:00 Jst 2007 ---------------------------------------- Wed Aug 1 09:00:00 JST 2007 xxxxxx xxxxxx xxxxxx Wed Aug 1 09:00:00 JST 2007 該当の曜日、月、日から始まる行以降から 最終行まですべてを取り出そうとしているのですが、 awkで上手くいきません。 以下の様なエラーがでて上手くいきません。 どうすればよいのでしょうか。 awk: syntax error near line 1 awk: bailing out near line 1 シェルの内容 ----------------------------------------- #!/bin/sh LOG_FILE="/tmp/kekka.log" #DATE=`date "+%a %b %e"` DATE=`date +%C | cut -c 1-10` awk -v DAY=$DATE'/^DATE/,/\\r/ {print $0}' ${LOG_FILE} exit 0 |
|
UNIXの環境変数のLANGに使用する言語の指定に 「japanese」があるのですが、これは、日本語 が使えるのですか。それとも日本語のSJISが 使えるのでしょう。 また、UNIXのOSがどのコードなのかどこを見れば わかるのでしょうか。 また、EBCDICコードがあるのですが、これを使うには どうしたらよいのでしょうか。 |
|
>>4820 べた > awk -v DAY=$DATE'/^DATE/,/\\r/ {print $0}' ${LOG_FILE} まずは % sh -x スクリプト名 などとして、意図どおりの引数を渡せているか確認しましょう。この場合は awk -v DAY=20/^DATE/,/\\r/ {print $0} a.dat と表示されますので、意図通りではないはずです。 具体的には以下の問題があります。 - 20 はおそらく希望する値ではない - 20 の後に空白がない。 - DATE の中にある変数でパターンマッチするのではなく、"DATE" という文字列を 探すようになっている。 - DAY と DATE の誤記。 >>4821 なし > UNIXの環境変数のLANGに使用する言語の指定に > 「japanese」があるのですが、これは、日本語 > が使えるのですか。それとも日本語のSJISが > 使えるのでしょう。 一般的には japanese は ja_JP.eucJP・ja_JP.PCK (Shift_JIS)・ja_JP.utf-8 などのエイリアスであることが多いように思います。実際にどのエイリアスで あるかは OS やバージョンによるでしょう。 > また、UNIXのOSがどのコードなのかどこを見ればわかるのでしょうか。 OS により異なると思います。env コマンドで何か出てくるかもしれません。 > また、EBCDICコードがあるのですが、これを使うにはどうしたらよいのでしょうか。 例えば dd コマンドで ASCII に変換できます。商用のアプリケーションも いくつか出ているようです。 |
|
UNIX の部屋に ファイル制限まとめ http://x68000.q-e-d.net/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%C0%A9%B8%C2%A4%DE%A4%C8%A4%E1 を追加しました。 |
|
>>68user ありがとうございます。 >% sh -x スクリプト名 で確認してみました。 DAYとDATEは誤記ですが、DAYに直しましたが結果は同じでした。 awk -v DAY=$DATE'/^DAY/,/\\r/ {print $0}' ${LOG_FILE} パターンマッチングのところが、引数で渡した値ではなく、 ”DAY”という文字列でした。(文字列と言い切れるのかどうか。?) |
|
>>4824 べた まずはコマンドラインから awk を叩いて、正しい結果を取得できるように なるところから始めましょう。シェルスクリプトはその後。 あと >>4822 68user > 具体的には以下の問題があります。 を直さないと動きません。念のため。 |
|
>>4825 68user 色々とありがとうございます。 試してみます。 |
|
>>4825 68user やはり、「^」を指定しているので、行の先頭が、DAYという 文字列から始まっているのを探していました。 試しにファイルの方を修正し、日付を「DAY Aug 2」としたところ 表示されました。 マッチングのところに、変数を展開できないのでしょうか。 nawk -v DAY="Fri Aug 10" '/^DAY/,/\\r\\n/ {print $0}' /tmp/kekka_log.log |
|
>>4822 68user 返事遅れてすみません。 ありがとうございます。 |
|
>>4827 べた 変数展開は $n ~ VAR と書きます。 で、/\\r\\n/ ですが、これうまく動きますか? awk はよくわかりませんが、 マッチしてないと思います。 なので、DAY から ------ までを見るようにして、 awk -v DAY="Fri Aug 10" '$0 ~ DAY,/^--*$/ {print}' か awk -v DAY="Fri Aug 10" 'BEGIN{skip=1} $0 ~ DAY {skip=1;print $0} /^--*$/ {skip=0} skip==1 {print} ' あたりがいいんじゃないですかね。 なお、行頭の日付だけ見るなら、DAY="^Fri Aug 10" です。 |
|
「リダイレクト」についての説明の中の 『「リダイレクトは右に書いたものから順に評価されるから」は間違いである。』 のくだりが分かりやすくてつい書き込んでしまいました。 他のサイトは上記のような説明で終わっている所があったのですが、 なんとなく「ん?」と違和感が残ってました。 で、このサイトの内容ですっきりです。ありがとうございました。 ドメインも素敵です(笑) |
|
>>4830 通りすがり ありがとうございます。ついでなので書いておくと、先頭に書いてもいいです。 >/dev/null 2>&1 ls foo.txt |
|
>>4829 68user ありがとうございます。 変数の展開ができました。 「'$0 ~ DAY」 の使い方は知りませんでした。 >で、/\\r\\n/ ですが、これうまく動きますか? awk はよくわかりませんが、 >マッチしてないと思います。 ファイルの最後まで見るというつもりでした。 EOFがこの表記でいいのかさなかですが。? 多分、ファイルの最後まで走査し、終了しているのではないかと。 >awk -v DAY="Fri Aug 10" 'BEGIN{skip=1} $0 ~ DAY {skip=1;print $0} /^--*$/ {skip=0} skip==1 {print} ' 日付が二行でます。 Fri Aug 10 ・・・ Fri Aug 10 ・・・ **** **** **** Fri Aug 10 ・・・ Fri Aug 10 ・・・ 見たいになります。 |
|
>>4832 べた > ファイルの最後まで見るというつもりでした。 その挙動でよいのであれば、問題ないと思います (実質機能していないと 思うので、書き方としてはまずいですが)。 > 日付が二行でます。 print $0 を削除するなどしてください。 |
|
>>4833 68user お礼遅れてすみません。 ありがとうございました。 |
|
前にも同じ質問をしたのですが、 findの検索で、指定ディレクトリ(カレントディレクトリ)内の ファイルだけを検索し、-mtimeを指定して、30日前のファイルを 削除しようとしています。 配下のディレクトリを検索しないよう、-prune を指定して、まずは、 以下のようにしたのですが、”*.csv”以外が表示されていまいます。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print と実行すると、 カレントディレクトリと、「*.csv」以外のファイルが表示されます。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 と実行すると、 表示されるのですが、どこのディレクトリを検査した結果かわからない状態でして、 確認と実際は、rm を指定してファイルを削除するで、「-exec ls -l {} \;」 をして表示してみたのですが、 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -exec ls -l {} \; と実行すると、 何も表示されません。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -print と実行すると、 何も表示されません。 正しく、結果が表示されるように、 最終的には、30日前とか、90日前のファイルが削除できるように したいのですが、どのようにすればよいか、 教えてください。 |
|
>>4836 べた > find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print > と実行すると、 > カレントディレクトリと、「*.csv」以外のファイルが表示されます。 この結果がすでにマズいんですよね? 前回のわたしの回答 >>4763 68user は的外れだったような気がします。最終的には以下のようになるのではないかと思います。 % find /home/DATA/backup -name '*.csv' -mtime +30 -exec ls -l {} \; -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune 構造としては ・[ファイル名が *.csv] AND [mtime が +30] AND [-exec ls -l] OR ・[ファイル名が everyday] AND [-prune] OR ・[ファイル名が monthly] AND [-prune] OR (略) となります。 ただし -exec や -prune は常に真で、コマンドを実行する・ディレクトリを下降しない という副作用を発生させるのが主目的ですので、より平易に書くと ・[ファイル名が *.csv] AND [mtime が +30] なら [-exec ls -l] を実行 OR ・[ファイル名が everyday] なら [-prune] で下降抑止 OR ・[ファイル名が monthly] なら [-prune] で下降抑止 OR (略) となります。なお、ここでの OR は、左辺が真なら右辺は評価しない、 という意味です。また、OR の各要素の順序を入れ替えても、このケース では問題ありません (*.csv と everyday が両方真になることはないので)。 典型的な -prune の使い方をまとめると以下のようになると考えます。 - 特定のディレクトリ以外について何か (-print) を行う ⇒ find . -name hoge -prune -o -print - 特定のパターンのファイルに何か (-ls) を行うが、特定ディレクトリ以下は除外する ⇒ find . -name \*.csv -ls -o -name hoge -prune - 特定のパターンのファイルに何か (-print) を行うが、特定ディレクトリだけは 除外する。ただし特定のパターンにも特定のディレクトリにも一致しない場合は、 別の何かを行う (-ls)。 ⇒ find . -name \*.csv -print -o -name hoge -prune -o -ls |
|
>>4837 68user ありがとうございます。 返事遅れてすみません。 一度、内容を読んで、確認してみます。 それで、再度、質問します。 |
|
>>4837 68user ありがとうございます。 期待した結果が得られました。 |
|
はじめまして。 以下のページを見て質問させていただきます。 http://x68000.q-e-d.net/~68user/net/http-1.html telnet(WindowsXPに標準でついていたものです)で、 % telnet www.cs.gunma-u.ac.jp 80 とコマンドを打っても、コマンドが無効です、と出てしまいます。 ここで詰まってしまって、先へ進めないでいます。 helpを見てみて、openかなと思ったのですが、それでも接続できない状況です。 googleで検索してもみたのですが、要領を得ませんでした・・・ 何か解決法はないでしょうか? プロバイダからは、特別なproxyを使わないと駄目ですとは言われていません。 よろしくお願いします。 |
|
>>4840 まるこ telnet の起動の仕方を勘違いしているように見えます。 スタート > すべてのプログラム > アクセサリ で コマンド プロンプト を起動します。するとウィンドウが開き Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\user> などと表示されるはずです。 ここで telnet www.cs.gunma-u.ac.jp 80 とタイプしてください。 http://x68000.q-e-d.net/~68user/net/win-telnet.html にあるとおりエコーバックはされませんが、 GET / HTTP/1.0(Enter) (Enter) とすると取得した HTML が表示されるはずです。「(Enter)」は XP であれば普通に Enter キー押下でいけると思います。 |
|
はじめまして。 以下のページを参考にさせていただきまして、質問させていただきます。 http://x68000.q-e-d.net/~68user/webcgi/char-code-2.html 以下のように機種依存文字のチェックをさせてみたところ 「丁目」という文字がC3FA CCDCとなり、FACCが90区のチェックに 引っかかってしまいました。 $fradrs = $_POST['adrs']; $check = mb_convert_encoding($fradrs,'EUC-JP'); if (ereg("\x8E[\xA0-\xDF]|[\xAD\xF9\xFA\xFB\xFC][\xA1-\xFE]", $check)) { こういった場合はどのように対処したらよいでしょうか。 よろしくお願いします。 |
|
>>4842 yuki そのページでも紹介していますが、文字単位でマッチさせるために http://www.din.or.jp/~ohzaki/perl.htm#JP_Match という工夫をしています。 PHP であれば mb 系の関数を使えば文字単位で切り出せると思いますが、 いわゆる機種依存文字に対応しているかどうかわからないのでまずは 試してみてください。対応していなければ、上記のようなやり方で 1文字ずつ取り出す必要があるかもしれません。 |
|
>>4843 68user様 ご助言ありがとうございます。 ご案内いただいたページを参考にして以下のように記述したところ 想定通りに動くことを確認できました。 $ascii = '[\x00-\x7F]'; $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; $fradrs = $_POST['adrs']; $check = mb_convert_encoding($fradrs,'EUC-JP'); if (ereg("^($ascii|$twoBytes|$threeBytes)*(\x8E[\xA0-\xDF]|[\xAD\xF9\xFA\xFB\xFC][\xA1-\xFE])", $check)) { echo "マッチしました。\n"; mb系は私の未熟さゆえかうまく動作しませんでした…。 68user様、ありがとうございました。 |
|
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update freebsd-updateでぐぐると上位に引っかかり、拝見しました。 「あくまで 5.1-STABLEを追っかけている」という記述がありますが、 おっかけている(いた)のは'5.1 security fix branch'(RELENG_5_1)で、 5.1-STABLEというブランチは存在しないです。 また'5-STABLE'も5.1-RELEASEをブランチした直後以外は 5.1相当ではなかったわけなので、やはり5.1-STABLEという記述は 修正されたほうが良いかと思います。 |
|
>>4844 yuki 何度も申し訳ありません。 4844の記述ではうまく動かないですね…。 機種依存文字が文頭にある場合のみ動作して 2文字目以降にある場合にはマッチしてくれないです。 正規表現についてもう少し勉強してきます。 |
|
>>4846 yuki ダメですかねぇ? あっているような気がしますが。 $_POST['adrs']・$check のデータを明示いただければ何かしら回答できるかもしれません。 >>4845 2323 よく理解していないので確認させていただきたいのですが、 「あくまで 5.1-STABLE を追っかけているに過ぎない」 を 「あくまで '5.1 security fix branch' (RELENG_5_1) を追っかけているに過ぎない」 とすれば正確な表現と言えるでしょうか。 |
|
はじめまして。 突然ですが、ご教授ください。 私は今、大学4年生で卒業研究をしているのですが、ネットワークプログラムを作る必要が出てきてしまいました。 ですが、私はプログラミングは全くの初心者で、どの言語を使えば良いのか、何から始めればいいのかもよく分かりません。 どなたかアドバイスや、参考となりそうなプログラムやサイトを教えて頂けませんか? OSはKNOPPIXで、アドホックモード(OLSR)での動画の転送をしたいです。 転送さえできればいいとのことなので、プログラム自体は簡単なものでいいようです。 場違いな質問かもしれませんがよろしくお願いいたします。 |
|
>>4848 yino 残念ながら聞いた事もないOSですので、お力になれません。 ただ、この様な場合、ひたすら検索サイトでキーワードを入れて検索してみてはいかがですか? 就職しても、この辺りは変わりません。 まずは、片っ端から検索して自分の目的としている情報が載っているサイトを探してみましょう。 |
|
>>4849 バンガード OLSR はプロトコルのようです。 >>4848 yino わたしなら 1. まわりに言語の有識者がいるか 2. その言語向けのネットワークプログラミング関連の書籍が出版されているか 3. ネットワークプログラミング向きか 4. プログラミング初心者が扱いやすい言語か という観点で考えます。 1 は、まわりを見渡してください (Java が多いのではないかと想像しますが)。 これが最重要だと思います。 2 は、Java が一番、次点が Perl でしょうか。PHP・Ruby はこの点は弱い。 3 は、本質的にはどの言語でも同じでしょうが、PHP などは無駄にハマりやすそうな 気がします。 4 は、まぁ Java ではないかと。 個人的には、Java がイチオシ、次点が Perl です (自分が書くなら Perl か Ruby)。 |
|
>>4850 バンガードさん、 >>4849 68userさん ありがとうございました。 とりあえずは周りの人から話を聞いてみたいと思います。 あとはJavaの本を読んでいきたいと思います。 また壁にあたったときはここに来ると思いますので、よろしくお願いします。 |
|
はじめまして。 いきなりですが教えてほしいことがあります。 大学の課題でサーバの存在するマシンのカレントディレクトリにおけるファ イル一覧を表示する。 <LIST>と打ち込むとファイルの一覧を表示する <GET ファイル名>打ち込むと、ファイルの内容を表示する <PUT ファイル名>でファイルをアップロードする。 <QUIT>と打ち込むとサービス終了。と言うプログラムを作っていたのですが うまく実行できません。どこが間違っているか教えていただけませんか。 #include <netdb.h> #include <stdio.h> #include <fcntl.h> #define BUFMAX 45 #define PORT_NO 10092 #define Err(x) {fprintf(stderr,"server- ");perror(x); exit(0);} static char rmsg[10], smsg[BUFMAX]; static int sofd, nsofd; static struct sockaddr_in sv_addr, cl_addr; static struct hostent *shost; static char shostname[100]; int msgpro(void); int main(int argc, char **argv) { int cadlen; DIR *dirHandle; struct dirent *dirEntry; dirHandle=opendir("."); if(dirHandle){ while(0!=(dirEntry=readdir(dirHandle))){ puts(dirEntry->d_name); } closedir(dirHandle); } sofd = socket(AF_INET, SOCK_STREAM, 0); if(sofd < 0) Err("socket"); if(gethostname(shostname, sizeof(shostname)) < 0) Err("gethostname"); shost = gethostbyname(shostname); if(shost == NULL) Err("gethostbyname"); bzero((char *)&sv_addr, sizeof(sv_addr)); sv_addr.sin_family = AF_INET; sv_addr.sin_port = htons(PORT_NO); memcpy((char *)&sv_addr.sin_addr, (char *)shost -> h_addr, shost -> h_length); if (bind(sofd,(struct sockaddr *)&sv_addr, sizeof(sv_addr)) < 0) Err("bind"); if(listen(sofd, 1) == -1) Err("listen"); while(1){ cadlen = sizeof(cl_addr); if((nsofd = accept(sofd, (struct sockaddr *)&cl_addr, &cadlen)) <0) Err("accept"); if(fork() == 0) if(msgpro()==-1){ close(nsofd); printf("END SERVER\n"); if(shutdown(nsofd, 2) < 0) Err("shutdown"); close(nsofd); exit(1); } close(nsofd); } } int msgpro(void) { int cc, cadlen,nbyte; FILE *fp; DIR *dp; struct dirent *p; char *tmp[100]; int i,f; i=0; close(sofd); if(recv(nsofd, rmsg, 10, 0) < 0){ perror("recv");} printf("%s\n",rmsg); if(strcmp(rmsg,"QUIT:")==0){ return -1;} if(strcmp(rmsg,"LIST:")==0){ printf("LSIT:\n"); dp=opendir("./"); while((p=readdir(dp))!=NULL){ tmp[i]=p->d_name; strcat(tmp[i],"\n"); i++; } closedir(dp); tmp[i]="."; for(f=2;f<=i;f++){ nbyte = strlen(tmp[f]); if(send(nsofd, tmp[f], nbyte, 0) < 0) perror("send"); } }else{ int i; char filename[10]; if(strncmp(rmsg,"GET:",4)==0){ printf("%s\n",rmsg); for(i=4;i<=strlen(rmsg);i++){ filename[i-4]=rmsg[i]; } fp = fopen(filename,"r"); while(fgets(smsg, BUFMAX, fp) != NULL){ nbyte = strlen(smsg); if(send(nsofd, smsg, nbyte, 0) < 0) perror("send"); } fclose(fp); }else{ if(strcmp(rmsg,"QUIT:")==0){ printf("shutdown\n"); return -1; }else{ printf("Command not Fountd.\n"); strcpy(smsg,"Command not Found.\n."); nbyte = strlen(smsg); if(send(nsofd, smsg, nbyte, 0) < 0) perror("send"); } } } if(shutdown(nsofd, 2) < 0) Err("shutdown"); close(nsofd); exit(0); } |
|
>>4852 aki > うまく実行できません。 何をどうしたらどうなるのか明示してください。 |
|
>>68userさん すみません。 実行した後にLIST、GET ファイル名、PUT ファイル名、QUITなど打ち込んでもなにも おきないんです。 |
|
>>4854 aki 提示いただいたプログラムはサーバ側のプログラムであって、 1. サーバを実行する 2. 別途 telnet コマンドなどを用いてクライアント側からサーバにアクセス (telnet localhost 10092 など) 3. そこで LIST などをタイプする というものですが、それは理解した上での質問でしょうか? もし理解していないのであれば、まずはまわりの人に聞くとか、資料を もっと読むなどして概念を理解してからでないと効率が悪いと思います。 プログラム自体については、telnet 上から LIST:(Ctrl-D) などと変な送信の仕方をする必要がありましたが、一応動くようです。 |
|
>>4855 68userさん ありがとうございます。 よく理解できてなかったみたいなのでもう少し友達に聞いてみます |
|
今度大学の課題でマルチスレッドサーバを作成することになったので、 http://x68000.q-e-d.net/~68user/net/echo-4.html を参考にマルチスレッドサーバについて勉強している者です。 そこで、素朴に疑問があるのですが、 このページに書いてある内容は、本当にマルチスレッドなのでしょうか? マルチスレッドというと処理が平行して行われるという認識なのですが、 この実装では多数のソケットからデータが到着したソケットを順次選択して 処理をする、というように見られるのですが・・・。 これはマルチスレッドサーバと呼んでもよろしいのでしょうか? |
|
HTTP1.1でKeepAliveでHTTPSサーバに接続した場合に、サーバからの レスポンスの長さが短い(500バイト以下程度)場合、クライアントが タイムアウトとなりサーバからのレスポンスが読めません。 サーバ・クライアント共にFEDORAを使用しており、クライアントは TCP/IPのソケット、OpemSslを使って作成しています。 対処方法は何かありますでしょうか? |
|
>>4857 aya どうなんでしょうか。以前に同様の指摘があった場合は >>3223 int >>3224 68user >>3226 Netboy >>3227 68user というところで止まっています。その後、わたしの知識は増えていないため、 まだ疑問のままです。 >>4858 masa ソースを提示願います。 なお、本日より数日〜数週間の間、返事がしにくい状況になりそうなので、 ご了承ください。 |
|
>>4859 68user さん 解決しました。 読み込もうとしているバッファサイズが大きすぎたようです。 |
|
remshについて知っている方はご教授願います。 環境:HP-UX 11 今シェルを作成しているのですが、あるAPサーバのシェルの中でremshをして他のDBサーバでミドルのコマンド(HiRDBのスケジューラ) の結果とそのリターン値の標準出力をファイルに吐き出すと言う処理をしています。 $USER_Aでシェルを実行(HOST=DBサーバ) # remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE この場合開発環境ではうまく標準出力の結果をファイルに吐き出せるのですが、 顧客本番環境ではうまくいきません。 結果を見る限り、.profileが読み込めてない、またはミドルのコマンドが読み込めていない、と言った感じです。 ちなみに、DBサーバ側の$USER_Bの.rhostsには[APサーバ $USER_A]が記載されています。 この際remshの後のコマンドが実行されていない原因として疑わしき点を教えていただきたいです。 たとえば.profileに問題ありなど…。 お願いいたします。 |
|
>>4861 toshi7 思いつくのは - remsh 後のカレントディレクトリが異なる - ログイン後の環境変数が異なる - 出力先のパーミッションが異なる - HiRDB のコマンドの場所が異なる - HiRDB のコマンドがエラーとなっている → HiRDB を実行するのではなく、適当な自作プログラムを実行し、 起動されているかどうかログ等に記録する - 標準エラー出力を閉じているので、HiRDB の標準エラー出力への 出力が出力されていない (もしくは write(2) でエラーになるため 途中でこけている) くらいでしょうか。 |
|
>>4862 68user 68userさん ありがとうございます。 調査を進めているところですが、HiRDBのコマンドでエラーになっている可能性が大です。 また、今週or来週中にもremshのテストができる予定ですので、 # remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE 2>&1 で標準エラーを出力してみます。 ちなみにサーバ側の"last | more"の結果を見る限りremsh自体は届いているようでした。 また、テストの結果不明点がありましたら、質問させていただいてもよろしいでしょうか? 宜しくお願いします。 |
|
少しずつですが UNIXの部屋 http://x68000.q-e-d.net/~68user/unix/ の各コンテンツを手始めに、Web 全体のデザインを変更していきます。 もし不具合があれば教えていただければ幸いです。 |
|
68userさま。いつも、初心者に有り難いサンプルをたくさんご提供いただき ありがとうございます。 HttpClientHttpURLConnectionを走らせたところ、ブラウザで見ると日本語の部分 が、文字化けしています。yahooのページを始め、いくつか試したのですが同じ 状態です。化けないようにするにはどうしたら良いのでしょうか? お忙しい中恐縮ですが、どなたかご教示下さい。 |
|
>>4867 Ponta http://x68000.q-e-d.net/~68user/net/java-http-url-connection-1.html ですよね? 「ブラウザで見ると」の意味がわかりません。実行例にあるとおり、 コマンドラインからの実行を前提としています。 |
|
初めて質問させていただきます。 12月から本格的にUNIXの勉強を始めて、現在はHP-UXの業務に就いております。 参考資料を購入したり、netで調べるもどうしても見つからない。。 質問内容: ファイルサイズをbyteで表示させるコマンドが知りたいです。 データ移行作業をしているので、移行前マシンと移行後のマシンでの 容量チェックをしなくてはいけなくて。。。 大変初歩的質問で申し訳ないのですが、ご教授下さい。 ※HP-UX 11iを使用しております。 |
|
>>4869 しも よくわかりませんが ls(1) の結果は使えないんでしたっけ? あとは cksum・wc・find とか。それ以外なら awk・perl あたりでしょうか。 cksum http://docs.hp.com/ja/B2355-60129/cksum.1.html wc http://docs.hp.com/ja/B2355-60129/wc.1.html find . -ls http://docs.hp.com/ja/B2355-60129/find.1.html |
|
>>4870 68user ありがとうございます。 ファイル個々のサイズはcksumやwcで確かに確認できました。 ディレクトリのサイズはbyte表示させる事は不可能なのでしょうか? duを使用しましたが、KBだったのとブロック単位でした。 |
|
>>4871 しも HP-UX に限らず、du ではブロックカウント機能しかないと思います。 http://sonic64.com/2004-05-26.html のように自前でカウントするしかないでしょう。 |
|
cygwinでbash not find :bash.exeというエラーがでんだけどどうすれば いいか教えろ!!!!!どーせ暇だろ!ニート諸君、俺様の変わりに調べろ! パスの設定はしてある。 俺も暇じゃないから5分やるですぐ調べて返信しろ。貴様らは蛆虫だ。 ./bashrc等も完璧 しかーーーーし動かん。楽勝だて。 |
|
お世話になります。 質問のときだけ現れてスミマセン。 Perl で、 filename -> title aaa.html -> aaaについて bbb.html -> bbbについて ccc.html -> cccについて みたいなタブ区切りのテキストを読んで処理するとき、カンタンには while (<>) { ($filename, $title) = <>; } のようにすると思いますが、1行目に見出しが入っていて、 これを捨てたいと思います。 今は、 $trash = <>; while (<>) { ($filename, $title) = <>; } のようにしていますが、 $trash が1回しか使われていませんが書き間違いではありませんか、 という警告が出ます。 警告だから無視すればいいようなものですが、 もっとスマートな書き方はあるでしょうか。 |
|
>>4874 ふくし - <>; - my $trash = <>; - (undef)=<>; のいずれかでどうでしょうか。Perl5.8.8 では問題ありませんでした。 |
|
>>4875 68user さん、ありがとうございます。 いずれも 5.10.0 でもうまくいきました。 (undef) = <>; というのは自分で思いついていたんですが、 リストコンテクストで評価されて、 全部の行が代入されたのち2行目以降は捨てられる (1行目も undef だから捨てられる) ような気がしていました。 ありがとうございます。 |
|
>>4876 ふくし ああそうですね。書くなら (undef)=scalar(<IN>); でしょうか。しかし仕事でこのコード見たらイラッとしますねぇ。 |
|
>>4873 大臣 ご期待に沿えず残念ですが、たぶん多忙で善良なプロの皆さんとかからの 回答になると思います。 どのくらい完璧か晒したら進言あるかもですよ。 |
|
そういえば(どういえばだ)以前(数年前)Perl で goto FIN; sub foo {} FIN: だとエラーになるけど goto FIN; FIN: sub foo {} または goto FIN; sub foo {} FIN: ; だとダメ、という件があったんだけど、急に思い立って perlbug してみました。 2時間後に返事が来て(すげえな)perlsyn に書いてあるけど それはバグではない、ラベルの後には1個以上の文がなければならないと いうことです。FAQらしいですね。 |
|
>>4872 68user 返信が遅くなりました。 68userさんの仰るように、自分でツールを作成する必要がある事を理解しました。 awkを使って作成しようと思います。 初めて作るので、時間がかかりそうですが結果はまた報告にきます。 ありがとうございました。 |
|
>>4883 しも さん、 どっちみち初心者だったら awk より Perl をおすすめします。 汎用性があるし可読性も高くできると思います。 ちょっと書いてみるとこんな感じでしょうか。 ★さしでがましければすみません。ここで読むのやめてください ^^ ★ ★ #! /bin/perl -w # dsize -- カレントディレクトリ以下のファイルサイズを集計 use File::Find; $total = 0; find(\&fileProc, '.'); print "Total\t$size\n"; sub fileProc { return unless -f $_; $size = -s $_; print "$File::Find::name\t$size\n"; $total += $size; } |
|
初歩的なことなんですが教えてください。 tar.gz な書庫にファイルを追加したい場合、 いちいちgunzipしないといけないんでしょうか? なにかスマートな方法はあるんでしょうか? |
|
はじめまして、つのりん と呼んでください。 早速ですがx68k専用マウスが故障しました。 症状はとしては、カーソルは全く異常なく動作しますが、クリックが左右ともできなくなりました。原因はボタン下のマイクロスイッチの故障ではないかと思われます。 なにか対策法はありませんか? よろしくお願いします。 |
|
はじめまして。 http://x68000.q-e-d.net/~68user/unix/pickup?find findの説明のところで、 -atime 4 4日前にアクセスされたファイル -ctime 4 ちょうど4日前にファイルステータスが変更されたファイル -mtime 4 ちょうど3日前に修正されたファイル と、mtimeだけ3日前となっていますが、これは間違いでしょうか? |
|
findで、検索する文字が複数出てくる場合の 記述について教えてください。 あるディレクトリに、以下の様な「YYYYmmdd」形式の ディレクトリが存在した場合ですが、名前がすべて、 「0〜9」の数字であるディレクトリのみを表示したい のですが、どのように書けばよいのでしょうか。 find . -name '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' -type d で表示されるのですが、 [0-9]を8回書く以外に、違った書き方はないでしょうか。 find . -name '[0-9]*[0-9]' -type d find . -name '[0-9]......[0-9]' -type d find . -name '[0-9]*......[0-9]' -type d find . -name '[0-9]......*[0-9]' -type d とかしてみたのですが。 /tmp配下に、 20080301 20080302 20080303 20080303.bk a0080304 2008030a 200a0306 200080307 |
|
>>4885 maya > tar.gz な書庫にファイルを追加したい場合、いちいちgunzipしないといけないんでしょうか? r で追加できますが、gzip してある場合はできないようですので、gunzip が必要と 思われます (BSD tar と GNU tar で確認)。 >>4886 つのりん ヤフオクによく出品されているように見えますので、チェックしてみてはどうでしょうか 今は「キーボード & マウス [未使用]」が出てますね。 >>4887 mm > と、mtimeだけ3日前となっていますが、これは間違いでしょうか? ありがとうございます。誤りでしたので修正いたしました。 >>4888 べた Perl の正規表現 (PCRE) であれば [0-9]{8} もしくは \d{8} ですが、POSIX における 基本正規表現や拡張正規表現では上記のような表現はできませんので、find にこだわる のであれば 8回書くしかないです。 あるいは、 ・File::Find を使った perl のワンライナーでがんばる ・シェル変数を使う csh・tcsh の場合: % set x='[0-9]' % find . -name "$x$x$x$x$x$x$x$x" sh・bash の場合: % x='[0-9]' % find . -name "$x$x$x$x$x$x$x$x" など。 |
|
>>4889 68user ありがとうございます。 |
|
perlの使い方なのですが、 日付と時間を表示する簡単なものを作りました。 実行したら動いたのですが、ところが、下記のような メッセージが出ました。 ------------------------------------------------------------ perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja_JP.PCK" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). ------------------------------------------------------------ このメッセージを表示させないようにするには、どうしたらよいか 教えてください。 環境は、Solari8 以下、perlのシェルスクリプト ------------------------------------------------------------ #!/usr/local/bin/perl # ($day, $mon, $year) = (localtime(time))[3..5]; printf("Today : %04d/%02d/%02d\n",$year+1900,$mon +1,$day); ($sec, $min, $hour) = (localtime(time))[0..2]; printf("Time : %02d:%02d:%02d\n",$hour,$min,$sec); ------------------------------------------------------------ |
|
>>4889 68user なるほど。ここらへんはzipやrarなどと比べると不便ですね。 ありがとうございました。 |
|
>>4891 べた 「perl: warning: Setting locale failed」で検索すれば出てきますが、 環境変数 PERL_BADLANG を設定することで回避可能です。詳細は検索願います。 |
|
>4889 ありがとうございます。ヤフーのオークション で見てみます。 |
|
>>4893 68user ありがとうございます。 perlのスクリプトを実行時のみ有効にしたいのです。 perlのスクリプト内で記述する場合はどのように 定義すればよいのですか。 |
|
>>4895 べた perl コンパイルの際の Configure 時に設定する方法があります。 それが無理なら #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl と wrapper を作るか、env コマンドで #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl とする手もあります。 |
|
>>4896 68user ありがとうございます。 #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl # とperlのスクリプト内に記述して、実行したのですが、 処理がとまったというか、何も応答が返ってきません。 |
|
>>4897 べた なるほど FreeBSD 5.2.1-RELEASE では動きますが、Linux では確かに 無限ループしてますねぇ。 > #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl これは FreeBSD 5.2.1-RELEASE では /usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl ./hoge と解釈されますが、Linux や Solaris では /usr/bin/env "PERL_BADLANG=0 /usr/local/bin/perl" ./hoge となるため PERL_BADLANG="0 /usr/local/bin/perl" という環境変数が設定されつつ /usr/bin/env ./a が実行されるものの、./hoge のシェバング行にはまた同じ内容が 書かれているため、永遠に execve("./a"); が実行されるということですね。 参考: http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0 の Tips.2 というわけで env コマンドを使うやり方は移植性がありませんでしたが、 #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl なら動くと思います。Linux では動きました。 |
|
>> 4898 > #!/bin/sh > PERL_BADLANG=0 /foo/bar/baz.pl >なら動くと思います。Linux では動きました。 で動きました。 色々とありがとうございました。 |
|
さきほどお問い合わせページよりご指摘いただきました、ジャンル一覧リンク切れの件、 修正しました。ご指摘ありがとうございます>連絡いただいた方 |
|
2年半ぶりの人材募集です。 http://x68000.q-e-d.net/~68user/tmp/job2.html |
|
こんにちわ。 findコマンドについて教えてください。 ■要件 カレントディレクトリに存在する31日以前のファイル&ディレクトリの削除を実施したい ■コマンド find ./ -mtime +31 -exec ls {} \; -exec rm -r {} \; >> test.log ■結果 ./20070101.trc find: ./aaa: No such file or directory ■質問1 カレントディレクトリに削除対象となる日付のファイル20070101.trcとディレクトリaaaを配置しています。 削除ファイルの一覧を取得したいため-exec ls {} \;を使用したのですが、 ログには./20070101.trcしか記載がありません。 ディレクトリも表示させるには何かオプションが必要なのでしょうか? ■質問2 実行結果としては削除は行われているのですが戻り値がエラーとなっています。 find: ./aaa: No such file or directoryの部分を指していると思うのですが、 削除後にfindしているように見受けられますがこのエラーの出力原因はなんでしょうか? 1と2の解決方法がありましたら教えてください。 宜しくお願いします。 |
|
>>4902 TKC まず、-exec の代わりに -ok を使って何が実行されているか確認しましょう。 > ディレクトリも表示させるには何かオプションが必要なのでしょうか? ./aaa/ の中身が空ではないですか? 空であれば ls ./aaa しても何も 表示されないと思います。 > 削除後にfindしているように見受けられますがこのエラーの出力原因は > なんでしょうか? find はディレクトリを下降してファイルを探しますが、おそらく ディレクトリを削除した後にそのディレクトリに下りようとしている のではないでしょうか。-prune を組み合わせれば下りないように できるかもしれません (試していません)。 |
|
>>4903 68userさん -okを使用して確認しました。 ご察しの通り./aaa配下が空のため< ls ... ./aaa >となり 結果的にログに./aaaが出力されていないことがわかりました。 findのエラー原因はやはり削除後に配下に移動しているものと思われます。 rmにデータが渡る前に-pruneを使い解消されました。 最終的には下記で行いたい処理ができました。 find ./ -mtime +31 -prune -exec ls -d {} \; -exec rm -r {} \; どうもありがとうございました。 |
|
いつもこちらにはお世話になってます。 flexについての指摘です。 http://x68000.q-e-d.net/~68user/unix/pickup?flex GNUでは作成・配布してないようです。 http://ftp.gnu.org/gnu/flex/flex.README |
|
>>4906 hoge > GNUでは作成・配布してないようです。 そうなんですか。知りませんでした。 ftp://ftp.gnu.org/non-gnu/flex/flex.README Flex is a free implementation of the well-known Lex program for lexical analysis. Since it is not (and never was) a GNU package, we don't distribute it here. Please see http://flex.sourceforge.net for the latest release and information. や flex-2.5.4 (1997年リリース) の README Note that flex is distributed under a copyright very similar to that of BSD Unix, and not under the GNU General Public License (GPL), except for the "configure" script, which is covered by the GPL. などを見るに、確かに flex が GNU ではないようですね。 しかしこの書籍 http://www.ascii.co.jp/books/books/detail/4-7561-3097-6.shtml Flex入門 シリーズ:GNUシリーズ GNUのツールの1つとして広く使用されているGNUのLexical Scanner Generatorで あるFlexの解説書。豊富な例とともに機能を詳細解説 はどうなんですかね。 wikipedia(en) には http://en.wikipedia.org/wiki/Flex_lexical_analyser Flex is a non-GNU project, but the GNU project developed the manual for Flex. とありますが、「GNU が作った flex のマニュアル」の翻訳が上記の「Flex 入門」 だったりするんでしょうか。 |
|
>>4907 68user うーん、やはり 2.5.3 以前は GNU だったのだろうか。 http://cocoa.2ch.net/unix/kako/970/970914036.html より ----- ここから ----- Flex はそもそも non-gnuに移動になって、 下の Flex 2.5.4の COPYING みたいなことになっている。 -=-=-=-=- Flex carries the copyright used for BSD software, slightly modified because it originated at the Lawrence Berkeley (not Livermore!) Laboratory, which operates under a contract with the Department of Energy: Copyright (c) 1990 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms with or without modification are permitted provided that: (1) source distributions retain this entire copyright notice and comment, and (2) distributions including binaries display the following acknowledgement: ``This product includes software developed by the University of California, Berkeley and its contributors'' in the documentation or other materials provided with the distribution and in all advertising materials mentioning features or use of this software. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. This basically says "do whatever you please with this software except remove this notice or take advantage of the University's (or the flex authors') name". Note that the "flex.skl" scanner skeleton carries no copyright notice. You are free to do whatever you please with scanners generated using flex; for them, you are not even bound by the above copyright. ----- ここまで ----- 「non-gnu に移動」という記述はいろんなところにあるが、それを根拠に 「以前は GNU だった」と言いきれない。古い tarball も見つからないし…。 |
|
>>4908 68user > うーん、やはり 2.5.3 以前は GNU だったのだろうか。 flex-2.5.2/COPYING を確認しましたが、 >> 下の Flex 2.5.4の COPYING みたいなことになっている。 とほぼ同じでした。よって、以前は flex は GNU であったが、 ある時点から GNU でなくなった、などという事実はないようです。 |
|
>>4907 68user > http://www.ascii.co.jp/books/books/detail/4-7561-3097-6.shtml > Flex入門 > シリーズ:GNUシリーズ 後はこれだけが気になってしょうがないので、アスキーに「なぜ GNU シリーズなのか」という 問い合わせを投げました。返事来るといいなぁ。 # その前に訳者と思われる方にメールを投げたものの、user unknown で返ってきました。 |
|
問題を投げっぱなしにしてすいません。 PHPのコンパイルに必要だったので探していただけで、 flexについては全く知らないんです^^; > 「GNU が作った flex のマニュアル」の翻訳が上記の「Flex 入門」 > だったりするんでしょうか。 http://www.gnupress.org/book11.html GNU Press「Flex: The Lexical Scanner Generator」 http://www.asahi-net.or.jp/~wg5k-ickw/html/online/flex-2.5.4/flex_1.html 訳者の方による、「Flex入門」と同内容のページだと思われます。 ISBNの記述から、ご推察のとおり 「GNU が作った flex のマニュアル」の翻訳が「Flex 入門」 だと考えますが、いかがでしょうか。 |
|
http://x68000.q-e-d.net/~68user/net/net-1.html の[ホスト名とは?]を読んでいましたら、http//133.8.2.24/でhttp//www.cs.gunma-u.ac.jp と同じページが表示されるはずですと なっていますがが、http//133.8.3.11/でないと表示されないように思います。参考にさせて頂いています。 |
|
>>4912 hoge flex については更新しております。ご指摘ありがとうございます。 http://x68000.q-e-d.net/~68user/unix/pickup?flex 「GNU シリーズ」についてはアスキーより回答をいただいたのですが、 残念ながら Web での公開は不可とのことなので、墓場まで持っていき たいと思います。 >>4913 BK ありがとうございます。取り急ぎ IP アドレスのみ更新しました。 |
|
shで、文字列から文字列を取り出そうとしています。 ”aaa.bbb@test.cojp” から「@」より前と後を、 ”aaa.bbb" と ”@test.co.jp” を取り出したいのです。 どのようにすれば良いか教えてください。 |
|
>>4915 べた 変数 $email にメールアドレスが入っているなら、こんな感じでしょうか。 $ echo $email | sed 's/\(.*\)@.*/\1/' aaa $ echo $email | sed 's/.*\(@.*\)/\1/' @bbb.com |
|
耶� 闔逅珥蓚�� 鰲鉗 闔頏琺, 褌辣�邇 聽 � 繝� 硴繿� � 驟痳 � 艢裨珞褂 � 鱚閻顫 袱聹�� 鞐� 癈糂 繝� 闔驟�瑩�. 吭鉗 闔頏琺 粮髓鉗迯�� 硴蓐琿�� � 辣 鴈譛褌 � �瑜鱶 褌迺纃鰰, 邇 � 關鉐鴈 � 矼驟謗竡 銓鉋跌纃��. �鞳粳珮珱 闔驟鱶鴾 <a href=http://www.find-business.ru>跪�</a> 闔頏琺 |
|
iconvについて教えてください。 Solaris8で、iconvコマンドを使用しています。 今、使用している環境に、iconvコマンドが2つ入っています。 1./usr/local/bin/iconv 2./usr/bin/iconv 1と2は日付、サイズが異なり、1の方が、日付が新しく、サイズも大きいです。 環境変数のパスも両方設定されていて「usr/local/bin」のパスが 先あるので、whichコマンドで調べると、1の方を表示します。 シェルから、iconvを実施したいのですが、どちらの方を使えば よいのですか。 iconvとしてどうちがうのでしょうか。機能的にも違うのでしょうか。 1./usr/local/bin/iconv の場合 コマンドがエラーとなった場合、statusに、”0”か”1”が返る。 # /usr/local/bin/iconv -f SJIS -t UTF8 sjis_file.txt > utf_file.txt iconv: conversion to UTF8 unsupported # echo $? 1 # 2./usr/bin/iconv の場合 コマンドがエラーとなった場合、statusが、”0”となる。 エラーも表示されない。 # /usr/bin/iconv -f SJIS -t UTF8 contact_SJIS.txt > uft_file.txt # echo $? 0 # シェルから、iconvを実施したいのですが、どちらの方を使えば よいのですか。 iconvとしてどうちがうのでしょうか。機能的にも違うのでしょうか。 環境は Solaris8 sh(Bシェル) |
|
>4916 ありがとうございます。 expr index "${email}" @ や echo ${email} | awk '{ print substr($0,1,index($0,"@")-1)}' や ANS=`echo ${email} | awk '{printf "%s",index($0,"@")}'` 「@」が最初に現れた位置を取得して、cut で取り出し echo ${email} | cut -c1-`expr ${ANS} - 1` echo ${email} | cut -c`expr ${ANS} + 1` awkや、1回で取り出したかったので、expr でやったのですが、 expr index の形式使えないので、awkでやったのですが、 sed で置換する方法は気が付きませんでした。 ためして見ます。 |
|
>>4918 べた /usr/local/bin/iconv は GNU の libconv 同梱の iconv コマンド、 /usr/bin/iconv は Solaris 標準の iconv コマンドではないかと 思います。 GNU 版であれば、--version オプションを使うことで % iconv --version iconv (GNU libc) 2.3.4 Copyright (C) 2005 Free Software Foundation, Inc. (略) といった表示が得られるかと思います。 以下は Solaris 版と GNU 版の違いであったとして、という前提ですが、 機能差で選ぶなら↓を比較 (昔の Solaris 版 iconv は、不正なバイト列が あった場合即終了だった気がするのですが、現在はスキップという選択肢も 選べるんですかね? であればそれほど機能差はないかも) http://docs.sun.com/app/docs/doc/819-1210/6n3j74jpk?a=view http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html エンコーディングの多さで選ぶなら、/usr/local/bin/iconv -l と /usr/lib/iconv/iconv_data を比較。特に CP932 や UTF-8 などが絡む 場合は、手持ちの全ファイルを変換して結果を調べるくらいはやった 方がよいかと思います。 後は GNU が好きか、Solaris の世界で固めるのが好きか、でしょうか。 |
|
>>4919 べた expr や cut でもできますよ。 (cut の場合は @ が付きませんが。) $ expr $email : '\(.*\)@.*' $ expr $email : '.*\(@.*\)$' $ echo $email | cut -d '@' -f 1 $ echo $email | cut -d '@' -f 2 >>4918 べた Solaris には標準で /usr/local というディレクトリがないので、 68user さんの仰るとおりだと思います。 |
|
>>4921 zsh ありがとうございます。 exprやcutでの使い方ありがとうございます。 勉強になります。 |
|
WindowsXP IE6.0 SP2 の別の端末から書き込みを おこなったら以下のエラー画面が表示されました。 何かインストールされていないものがあるのでしょうか。 エラー : 内部エラーが起こりました。 http://x68000.q-e-d.net/%7E68user/cgi-bin/wwwboard.cgi の実行ができませんで した。 おそらくCGIプログラムの不具合が原因です。 もし、こちらのファイル設定ミス・リンクミス・CGI の不具合などが原因であった場 合は早急に修正します。 の画面が表示されます。 |
|
>>4918 べた >>4921 zsh 説明ありがとうございます。 それでなのですが、ステータスが返ってくるということで、 「/usr/local/bin/iconv」を使っています。 Bシェルで実行しています。 iconvコマンドをパイプでつないで、連続で実行しています。 /usr/local/bin/iconv -f SJIS -t UTF-8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF-16 > file_utf.txt 1回目のiconv(パイプの左側のiconv)がエラーとなったとき、 ステータスがエラーで返ってきません。 エラーを判断したいのですが、どのようにしたらエラーと判断 できるでしょうか。 /usr/local/bin/iconv -f SJIS -t UTF8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF-16 > file_utf.txt echo $? iconv: conversion to UTF8 unsupported 0 ”0”が返却。 /usr/local/bin/iconv -f SJIS -t UTF-8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF16 > file_utf.txt echo $? iconv: conversion to UTF16 unsupported 1 ”1”が返却。 |
|
>>4923 べた ありがとうございます。 $ expr $email : '\(.*\)@.*' $ expr $email : '.*\(@.*\)$' $ echo $email | cut -d '@' -f 1 $ echo $email | cut -d '@' -f 2 どれでも、取り出せました。 |
|
>>4925 べた > 1回目のiconv(パイプの左側のiconv)がエラーとなったとき、 > ステータスがエラーで返ってきません。 > エラーを判断したいのですが、どのようにしたらエラーと判断 > できるでしょうか。 bash なら PIPESTATUS を使えばよいですが、sh であれば 終了ステータスは取得できないと思います。しょぼいですが、 パイプを使うのをやめるのがよいかと思います。 >>4924 べた > WindowsXP IE6.0 SP2 の別の端末から書き込みを > おこなったら以下のエラー画面が表示されました。 IP アドレスや発言内容などから SPAM と判定されたのかもしれません。 特に判定精度の高いものではないので、頻発するようならご連絡ください。 |
|
>>4927 68user ありがとうございます。 sh できないんですね。 出力結果がなければ、出力結果をパイプで渡さなければ 「&&」でいけるのでないかと覆いますが。 パイプを使わず個々に行います。 |
|
Solaris8 なのですが、「/var/log/syslog」に、 TCPコネクションのログを出力させたいのです。 telnet、ftpなど、接続したログを出力したいの です。 どのようにすればよいのでしょうか。 「/etc/syslog.conf」には、以下の様な記述をしています。 user.notice /var/log/syslog syslogのデーモンも再起動したのですが、出力されません。 |
|
>>4829 68user ftpのログを取得するAIXの場合の例です。 #vi /etc/inetd.conf (ftpのエントリーで最後に「-l」または「-d」オプションを追加) ftp .... /usr/sbin/ftpd ftpd -l または ftpd -d (転送ファイル名を確認するだけであれば -l オプションの方がログが少なくて済みます) #refresh -s inetd (inetdデーモンをリフレッシュ) #vi /etc/syslog.conf (syslog設定ファイルにftpのログを取得するためのエントリを追加) daemon.info /tmp/ftpd.log (daemon.debugであればもう少し詳しい詳細が確認できます) #touch /tmp/ftpd.log (ログファイルを作成) #refresh -s syslogd (syslogデーモンを再起動) |
|
>>4931 バンガード ごめんなさい。 4929へのコメントでした。 |
|
>>4932 バンガード お礼が遅れ申し訳ありません。 ご説明ありがとうございます。 どちらにしてもデーモンの再起動(リフレッシュ)が 必要なんですね。 |
|
Solaris8 なのですが、シェルを実行する際、 ./シェル名としないと起動できません。 「./」で起動するにはどうしたらよいのでしょうか。 「./」で起動できるアカウントがあるので、違いを比べてみると PATHの変数が異なっていました。 PATH=./:/usr/bin・・・・・ とか PATH=・・・・/usr/bin: PATH変数の中に、「./」の設定がある。 PATH変数が「:」で終わっている。 「./」を指定しないと動かないアカウントは、両方がない状況と なっています。 どのように環境変数を設定すればよいのですか。 |
|
>>4934 べた > 「./」で起動するにはどうしたらよいのでしょうか。 「./」なしで起動したいということでしょうか? PATH 環境変数に ./ を含めれば可能ですが、お勧めはしません。 特定のディレクトリにスクリプトを集めて、そのディレクトリを PATH 環境変数に含める方がよいと思います。 なお、同じ名前のコマンド(スクリプト)が複数のディレクトリに 存在する場合は、PATH 環境変数で先に見つかったコマンド (左側のパスから順番に探しに行きます)が実行されます。 |
|
>>4934 べた PATH に . を含めない理由は以下のとおり。 ・セキュリティホールとなる。PATH=.:/bin:/usr/bin:/usr/local/bin となっていて、 cd ~foo; ls としたときに /home/foo/ls が存在したら、そのプログラムを実行 してしまう。cd /tmp; ls も同様。そのプログラムがどんな悪さをするかはわからない。 ・PATH に . を加えると、カレントディレクトリによって実行されるコマンドが異なる 可能性があるため、説明がめんどくさいし、はまりやすくなる。例えば /bin と /usr/bin に同名のコマンドがあるとして、コマンド foo をタイプしたときに、 - カレントディレクトリが /usr/bin の場合は /usr/bin/foo が実行される - カレントディレクトリが /usr/bin 以外の場合は /bin/foo が実行される というのはわかりづらい。 ・csh・tcsh・bash・zsh など、今どきなシェルを使っている場合は、 ./ からタイプした方がファイル名補完を使えるため、入力が速い。 |
|
>> 4935 >> 4936 返事が遅くなってすみません。 分かり易く説明ありがとうございます。 勉強になります。 |
|
Cシェルでのリダイレクションについてなのですが コマンドの実行結果で、標準エラー出力を捨てて、標準出力 だけを見たいのですがどうすればよいのですか。 cat file.txt >& /dev/null では、標準出力、標準エラー共に捨てられますが、 標準エラーを捨てて、標準出力を表示したい。 cat file.txt 2 >& /dev/null cat file.txt >2& /dev/null cat file.txt >& 2 /dev/null cat file.txt > /dev/tty >2 /dev/null cat file.txt > /dev/tty >& /dev/null とやってみたのですが、どれも上手くいきません。 どうすればよいのでしょうか。 環境は、 Solaris8 Cシェル です。 |
|
>>4942 べた tty 宛でよいなら、サブシェルを使って ( cat file.txt > /dev/tty ) >& /dev/null です。 |
|
>> 4944 ありがとうございます。 > tty 宛でよいなら、サブシェルを使って > ( cat file.txt > /dev/tty ) >& /dev/null > です。 出来ました。 tty 宛でよいなら、サブシェルを使って tty を使わない方法もあるのですか。あるのでした教えてください。 サブシェルとは。 「( command )」とはどのよな使い方でしょうか。 良い案が思い浮かばなかったので、「cat file.txt > /dev/tty」で 表示ができたので、 /dev/tty を使えば上手くできるのではないかと。 |
|
>>4944 べた tty を使わないなら、 ( cat file.txt > out.txt ) >& /dev/null などとファイルに保存する。 あるいは mknod や mkfifo で名前付きパイプを作ってそこに 流すなど (さすがに標準エラー出力を捨てるためにここまで やるのはバカバカしいですが)。 mkfifo out cat out & ( cat file.txt > out ) >& /dev/null あるいは sh -c "ls cat file.txt 2>/dev/null" などと sh で逃げる手もあります。 csh でやるなら、これ以外の方法はおそらくないです。 > サブシェルとは。 > 「( command )」とはどのよな使い方でしょうか。 こちらをどうぞ。 http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B5%A5%D6%A5%B7%A5%A7%A5%EB |
|
>> 4945 ご説明ありがとうございます。 Windows XPの別端末で書き込みをしたら 「エラー : 内部エラーが起こりました。」 の画面が表示されました。 何かあるのでしょうか。 |
|
こんにちは.linuxを使い始めたものです. パイプに関する質問です.環境はVine Linux のbashです. あるファイル名(ここではtestfile)のものを検索して, さらにその中身に"test"という文字列を含むかどうかを 知りたいと思っています. 対象のファイルがひとつとは限りません.例えば, ........... ../Data1/testfile ⇒(中身)This is test file. ........... ../Data2/testfile ⇒ (中身) This is hoge hoge. といった感じで同じ名前のファイルが別のディレクトリにあります. cat,find, grepを組み合わせれば出来そうな気はしているのですが, findしてリスト表示されたファイル名を引数としてcatコマンドに 渡すことができません. 自分なりにいろいろ検索しましたが,よくわかりませんでした.. よろしくご教授ください. |
|
>>4947 素人 親ディレクトリ以下の testfile というファイル名のファイル中に test という文字列があるものをリストアップ、であれば % find ../ -name testfile | xargs grep -l test でしょうか。それを cat するなら % find ../ -name testfile | xargs grep -l test | xargs cat ですかね。 |
|
>>4948 68user できました!答えはxargsでしたか. 勉強不足で恐縮です.ありがとうございました. |
|
RSA1のプログラムを実行するにあったってエラーが多くでます。これのヘッダファイルはどこにあるのでしょうか。 |
|
>>4950 佐藤丈師 OpenSSL に同梱されていますので、OpenSSL をインストール済みであれば /usr/include/openssl や /usr/local/openssl/include などにあるはずです。 コンパイル時に -I /usr/include/openssl などのオプションを付加してください。 |
|
初めて投稿します。 全くの初心者ですが、次のことをお尋ねします。 Debian4.0ですが、デスクトップにアイコンを作成し、クリックすると プログラムを起動するようにしたいのですがどのようにすればいいの でしょうか。 #su - abc ’abcでログインし、「sh /usr/lib/scripts/claim/ORC_CLAIM_SERVER.sh 5001 /var/tmp」 ktermに記述などお尋ねします。 |
|
>>4952 kawasaki やり方はインストールしたデスクトップ環境 (GNOME とか KDE とか) によると思います。 が、お使いのデスクトップ環境をお教えいただいたとしても、ここ数年は UNIX 系 デスクトップ環境をいじっていないので、わたしはさっぱりわかりません。 |
|
初めまして。 ちょっと気になったので言わせて下さい。 UNIXの部屋 コマンド検索: Machでの説明で、 発音は、普通なら [まっは] が正しいと思うが、アメリカ人は "ch" の発音ができないらしくて [まーく] [まっく] といっている (発音できないような名前を付けるなと言いたい)。 とありますが、発音できないんじゃなくて、そういうスペルだと、 英語的には、マークって呼ぶだけです。hの2つ前は、aつまりエイって発音し、 cは、基本的には、ックって発音になり、 何も考えずにつなげて読むと、マークって読みます。 で、でもなんで、マッハが正しいかと言うと、 これは、ヨーロッパ系の言語の多くが、 machって書いてまっはって読むからです。 発音できないわけじゃないですよ^^; |
|
>>4954 uccこーひー ご指摘ありがとうございます。が、正直なところを申しますと、学がないので 真偽のほどが判断できません。よって、該当コンテンツより、 >>4954 uccこーひー の発言にリンクを張らせていただきますので、あとはお読みいただいた方に ご判断いただくことでご了承ください。 |
|
いつも便利に参照しています。 lsコマンドの紹介ページ(http://x68000.q-e-d.net/~68user/unix/pickup?ls)で 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。 正しくは、 「http://docs.sun.com/app/docs/doc/819-1210/ls-1?l=ja&a=view&q=ls」かな? |
|
>>4957 たけ > 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。 ありがとうございます。Sun のページはたまに URL が変わるんですよね…。 最新情報で更新しておきました。 NetBSD の manpage へのリンクも表示されなくなっていますが、そのうち直します。 |
|
SE募集の件で書き込みさせていただきました。 大変興味がありますので、一度詳細を教えていただけないでしょうか。 ご連絡をお待ちしています。 |
|
ありがとうございます。メールを送ります。 |
|
Perlで、前日のAM9時以降に作成されたファイルを 取得したいのですが、どのようにPerlを書けばよい のでしょうか。 Perlのシェルスクリプトを起動する前日のAM9以降 から、実行日までの間に作成されたファイルを取得 したいのです。 実行日の前日の9時というのは以下の方法で取得できる のですが、取得した日付とファイル作成日付を比較し、 対象か否かを判断して、必要なものだけを取得する 方法が分かりません。 どのよに書けばよいのでしょうか。 「実行日の前日の9時」は、 -------------------------------- #!/usr/local/bin/perl $tm = time - (24 * 60 * 60 * 1); ($sec, $min, $hour, $day, $mon, $year) = (localtime($tm))[0..5]; $now = sprintf("%04d/%02d/%02d %02d:%02d:%02d",$year+1900,$mon+1,$day,$hour,$min,$sec); print $now, "\n"; -------------------------------- #!/usr/local/bin/perl use POSIX 'strftime'; $tm = time - (24 * 60 * 60 * 1); my $now = strftime "%Y/%m/%d %H:%M:%S", localtime($tm); print $now, "\n"; |
|
>> 4974 環境を書き忘れました。 環境は、 Solaris8 Perl v5.8.5 |
|
>>4974 べた >>4975 べた Solaris なら適当なファイルを作って、touch コマンドでタイムスタンプを 前日 08:59:59 にしておいて、find . -newer foo とするのが一番簡単かと 思います。 FreeBSD なら find -mtime -99h とか、Linux なら find -mmin -9999 とか できますが (99 や 9999 は計算して求める)、結局は -newer の方が簡単な 気がします。 モジュール使うなら File::Find http://perldoc.perl.org/File/Find.html File::Find::Rule http://search.cpan.org/~rclamp/File-Find-Rule-0.28/lib/File/Find/Rule.pm あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと いけないように見えますので、イマイチですね。 |
|
>>4976 68user ありがとうございます。 また、返事が遅くなって申し訳ありません。 > find . -newer foo ですか。 シェルで、findの結果を取得することも考えました。 > あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと > いけないように見えますので、イマイチですね。 Perlを使おうとしていたので、手で書かなくてはいけないと思っていました この部分の良い方法が実現できなくて。 環境上、教えて頂いたモジュールも入れることができません。 |
|
>>4977 べた find . -newer foo の方法を書いておきます。find を使わないなら、 昨日9時の日時 (20090323090000) を Time::Local で epoch time に 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。 ------ my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time()-60*60*24); my $timestamp = sprintf("%04d%02d%02d%02d%02d.%02d", $year+1900, $mon+1, $mday, 9, 0, 0); my $yeasterday_9am_file = "foo.txt"; system("touch -t $timestamp $yeasterday_9am_file"); open(IN, "find . -type f -newer $yeasterday_9am_file |"); while (<IN>){ chomp; print "$_\n"; } |
|
>> 4978 ありがとうございます。 教えていただいた方法ですと、前日9時のタイムスタンプの 取得をPerlでやればあとは、シェルスクリプトでもできます ね。 実のところ、findを使わない、Perlでの記述、遣り方を教えて ほしいのですが。 |
|
>>4978 68user > find を使わないなら、 > 昨日9時の日時 (20090323090000) を Time::Local で epoch time に > 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。 Time::Local で epoch time に直しての「epoch time」とは なんでしょうか。 |
|
linuxのCでグラフィックの勉強がしたくてX-Windowまで辿り着いたのはよかったんですが、 ここ↓のソースを実行させようとしても何故かエラーが出てしまいます。 http://x68000.q-e-d.net/~68user/xprogram/xlib-4.html 一応類似の記事がないかどうか調べて見ましたが、 No.8552が近いと思いましたが全然分かりませんでした。 ちゃんとusr/include/X11ファイルに Xlib.hとXutil.hはありますし、 コンパイルオプションも活用してみました…… Xlib.hとXutil.hの意味も分からなくて困窮中です…… コマンドラインは、gcc -o xlib-4-1 xlib-4-1.c -I /usr/include/X11 -L /usr/include/X11 エラーは以下の文です /tmp/cc2pF4g1.o: In function `main': xlib-4-1.c:(.text+0x9f): undefined reference to `XOpenDisplay' xlib-4-1.c:(.text+0x149): undefined reference to `XCreateSimpleWindow' xlib-4-1.c:(.text+0x198): undefined reference to `XSetStandardProperties' xlib-4-1.c:(.text+0x1c0): undefined reference to `XCreateGC' xlib-4-1.c:(.text+0x1e8): undefined reference to `XSetBackground' xlib-4-1.c:(.text+0x20a): undefined reference to `XSetForeground' xlib-4-1.c:(.text+0x232): undefined reference to `XCreateGC' xlib-4-1.c:(.text+0x25a): undefined reference to `XSetBackground' xlib-4-1.c:(.text+0x27c): undefined reference to `XSetForeground' xlib-4-1.c:(.text+0x294): undefined reference to `XMapRaised' xlib-4-1.c:(.text+0x2ec): undefined reference to `XFillArc' xlib-4-1.c:(.text+0x344): undefined reference to `XFillArc' xlib-4-1.c:(.text+0x352): undefined reference to `XFlush' collect2: ld はステータス 1 で終了しました |
|
>>4982 ちびヴァル オプション -lX11 が足りていません。まずは http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html からどうぞ。 |
|
>>4980 べた > 「epoch time」とはなんでしょうか。 http://oku.edu.mie-u.ac.jp/~okumura/php/date.php UNIX で Epoch とは,協定世界時(UTC,いわゆるグリニッジ標準時 GMT) 1970 年元旦 0 時 0 分のことです。 UNIX の内部ではこの瞬間からの秒数で 時刻を表しています。 のことです。 |
|
>>4983 68user 一通り実行して終了させると次の文章が出るんですが…… XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" after 16 requests (14 known processed) with 0 events remaining. 自分で調べて、etc/X11/xorg.confというファイルにが重要であると わかったので、xorg.confに Section "ServerFlags" Option "AllowEmptyInput" "off" EndSectionを 追加しようとしていますが、普通のテキストエディタでは 「そのファイルを保存するために必要な権限がありません。入力した場所が正しいか確認して、もう一度実行してみて下さい。」 と出て保存出来ないのですが、どうすればいいでしょうか? また、コマンドプロンプトでも試して見ましたが、 E325: ATTENTION Found a swap file by the name "/etc/X11/.xorg.conf.swp" owned by: root dated: Mon Apr 6 14:37:03 2009 file name: /etc/X11/xorg.conf modified: YES user name: root host name: mikan process ID: 8021 While opening file "/etc/X11/xorg.conf" dated: Thu Mar 5 23:15:04 2009 (1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. Quit, or continue with caution. (2) An edit session for this file crashed. If this is the case, use ":recover" or "vim -r /etc/X11/xorg.conf" to recover the changes (see ":help recovery"). If you did this already, delete the swap file "/etc/X11/.xorg.conf.swp" to avoid this message. "/etc/X11/xorg.conf" 33 lines, 1037 characters と出てどうすればいいか迷っています |
|
>>4985 ちびヴァル > Found a swap file by the name "/etc/X11/.xorg.conf.swp" vim が作成したスワップファイルでしょうから、.xorg.conf.swp を 削除して、root 権限で xorg.conf を更新すればよいと思います。 |
|
>> 4978 > find . -newer foo の方法を書いておきます。find を使わないなら、 > 昨日9時の日時 (20090323090000) を Time::Local で epoch time に > 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう の方法を教えて欲しいのですが。 |
|
Bシェルで、sedを使って、フルパスからディレクトリとファイル名を 分割したいのですが良い方法を教えてください。 ファイル名を取り出すことは出来たのですが、パス名を取り出すこと ができません。 また、ルート直下「/txt.csv」のような場合だと、ファイル名が取り出せ ません。結果が、「/txt.csv」となってしまいます。「txt.csv」と したいのです。 ------------------------------------ FILE=/aaa/bbb/txt.csv echo ${FILE} | sed 's/\/.*\///g' FILE=/txt.csv echo ${FILE} | sed 's/\/.*\///g' FILE=txt.csv echo ${FILE} | sed 's/\/.*\///g' 環境は、 Solaris8 Bシェル |
|
>>4989 べた basename・dirname コマンドを使うのはダメですかね。 |
|
>>4990 68user >basename・dirname コマンドを使うのはダメですかね。 も考えましたが、 出来れば、使わない方法でと |
|
>>4991 べた 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。 sed でやりたいならこんな感じかなぁ? - ファイル名 echo ${FILE} | sed 's/.*\///g' - パス名 echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g' |
|
>>4992 zsh > 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。 すみません。 > - パス名 > echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g' が、上手くいきませんでした。 パス名がとれません。フルパスが返ってきます。 /aaa/bbb/txt.csv → /aaa/bbb/txt.csv /txt.csv → /txt.csv |
|
>>4992 zsh > 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。 すみません。 > - パス名 > echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g' が、上手くいきませんでした。 パス名がとれません。フルパスが返ってきます。 それと、ファイル名のみ場合は、値がなしとしたいのですが。 /aaa/bbb/txt.csv → /aaa/bbb/txt.csv /txt.csv → /txt.csv |
|
>>4994 べた 失礼しました。↓でどうでしょうか? echo ${FILE} | sed -n -e 's#\(.*\)/[^/]*#\1#p' |
|
>>4996 zsh ありがとうございます。 パス名を取り出すことができました。 ただ、以下の様に場合、上手くいきません。 「FILE=/txt.csv」の場合 「/」となりません。 ブランクというか、改行します。 「/」だけ取り出すというのは無理なのでしょうか。 「FILE=txt.csv」の場合 ブランクとなります。 正しい動きなのでしょうか。 |
|
nawkのユーザ定義関数について教えて下さい。 nawkで、ユーザ定義関数を呼び出して編集を行っているのですが、 ユーザ定義関数内で編集した値を、パラメータで渡した変数に設定 して返却したいのでが値が返却されません。 ユーザ定義関数内では、渡した変数に値が設定されているのですが、 関数を抜けると値が設定されていません。 どうしてなのでしょうか。 それとも、無理なのでしょうか。 パラメータで渡した変数に設定して返すことができるのでしょうか。 環境 OS:Solairs8 シェル:Bシェル(sh) -------------------------------------------------------------- nawk -v OUT=${OutFile} -F"," ' BEGIN { count = 0+0; } function chk2(arg1,arg2,val) { sub(/^"*/,"",arg1); sub(/"*$/,"",arg1); sub(/^"*/,"",arg2); sub(/"*$/,"",arg2); val=sprintf("%s %s",arg1,arg2); } function chk1(arg1,val) { sub(/^"*/,"",arg1); sub(/"*$/,"",arg1); val=arg1; } { chk1($1,UserID); chk2($8,$9,Name); printf("%s,%s\n",UserID,Name); #printf("%s,%s\n",UserID,Name) >> OUT; count++; } END { printf("Output number : %d\n",count); }' ${FILE} |
|
>>4997 べた > 「FILE=/txt.csv」の場合 パス名末尾の / を出力しないようにしていたためですね。 echo ${FILE} | sed -n -e 's#\(.*/\)[^/]*#\1#p' こうすれば出力されると思いますが、 逆に /hoge/fuga.txt のような場合でも /hoge/ となります。 > 「FILE=txt.csv」の場合 パスが指定されていないので、ブランクで正しいと思っていますが。 (そういった条件もありませんでしたし。) >>4998 ふくし nawk は参照渡しできないはずなので、そういう書き方ではできません。 ただ nawk では、ユーザ関数の引数として定義された変数を除き、 すべてグローバル変数だと思うので、やろうとしていることはできます。 |
|
>>4997 べた ありがとうございました。 出力されました。 |
|
>>4999 zsh お礼先誤りですみません。 ありがとうございます。 >> 「FILE=txt.csv」の場合 > パスが指定されていないので、ブランクで正しいと思っていますが。 > (そういった条件もありませんでしたし。) No. 4994で、自分でファイル名のみの場合、値なしとしたいと 書いておきながら正しい動きなんですかと質問すみませんで した。 |
|
>>4998 ふくし えっ、Solairs8 の nawk って return を使えないんでしょうか? |
|
>>5002 sfish man には return [expr] と記載があったので、リターンコードを返すものだと思っていましたが、 確かに値を返すことも出来ました。こっちの方がいいですね。 |
|
>>4999 zsh > ただ nawk では、ユーザ関数の引数として定義された変数を除き、 > すべてグローバル変数だと思うので、やろうとしていることはできます。 どういうことでしょか。 nakwで関数を作るのが不慣れなもので、 nawk内で定義した変数はグローバル変数なので、nawk内であれば、 ユーザ定義関数でも参照や書き換えができるということでしょうか。 また、 ユーザ定義関数ないで定義した変数は、関数内でしか有効とならない ということでしょうか。 例などを載せてくれるとありがたいのですが。 |
|
>>5004 ふくし > nawk内で定義した変数はグローバル変数なので、nawk内であれば、 > ユーザ定義関数でも参照や書き換えができるということでしょうか。 その通りです。 ただ、 >>5002 sfish で return で値が戻せることを教えて頂いたので 関数側は、 --------------------------------- function chk1(arg1) { sub(/^"*/,"",arg1); sub(/"*$/,"",arg1); return arg1; } --------------------------------- のようにして、呼び出し側は --------------------------------- UserID = chk1($1); --------------------------------- とすれば、やろうとしていることができると思います。 |
|
初歩的な質問ですが 内蔵HDDを増設し「label:Backup」として、クリックしますと「sdb」と表示されています。 プロパティで、場所は/mntとなっています。 このHDDに mv /home/ormaster/123.txt sdb/123.txt とファイルの移動をしたいのですが方法を教えてください。 |
|
>>5005 zsh ありがとうございます。 |
|
エラーメッセージ「cannot execute binary 」についての質問。 以前にservice sendmail start 2<&1 | /bin/mail -s "件名" wenbi@akw.com.cn というコマンドを実行して、正常です。 しかし、下記のコマンドを実行して、「cannot execute binary 」というエラーメッセージを出ました。 この後、上記のコマンドを実行しても、エラーを出ます。 service sendmail start infile.txt iconv -f EUC-JP -t Shift_JIS infile.txt < infile2.txt cat infile2.txt | /bin/mail -s "件名" wenbi@akw.com.cn |
|
>>5006 まえ mount 済みであれば、mv /home/ormaster/123.txt /mnt/123.txt で いけるのではないかと思います。 >>5008 山田洋子 よくわかりませんが、cannot execute binary のエラーメッセージを 出力しているのが service コマンドなのか、iconv コマンドなのか、 cat や mail なのかを調べてみてはどうでしょうか。 |
|
nawkでsystem関数で、コマンドを実行しています。 今、system関数で実行したコマンドの結果を変数 に格納したいのですが、結果のステータスが格納 されて、コマンドの実行結果が格納できません。 どうしてなのでしょうか。そもそも不可能なのでしょうか。 system関数で、dateコマンドを実行し、結果を変数に 格納して、nawk内で使用したいのです。 nawk '{system("date +%Y%m%d")}' 環境は、 Solaris8 bsh です。 |
|
>>5010 ふくし system は単なるコマンドの実行であり、コマンドの標準出力を受け取るような 仕組みになっていません。この場合は getline を使うべきかと思います。 |
|
>>5011 68user ありがとうございます。 上手くいきました。 |
|
完全ガイドwindowsxp基本+Q&A 2008,3,20 p275,Q057 1・アイコンの数を増やすは、あるが、減らす方法が、無い。 2・初心者に解かるように、教えて。やり方がわからへん。 |
|
特定のアイコンを消す方法です。 |
|
はじめまして ネットワークプログラミングのページは とってもためになりました。 ・読みやすい ・わかりやすい ・内容がある すばらしいです。 少なくとも私の嗜好とあうはず。 なので、 おすすめ書籍を紹介してください! ・実践的にアプリケーションを作る ・複数ファイルのビルドを説明 ・winコンポーネント ・プロセス間通信 ・管理人さんのように読みやすく、わかる、内容がある ・ネットワークアプリ(サーバー、メーラーetc) ・c言語、perl、php(windows いま、プロキシサーバと、メールサーバに興味があるので、 それが作れるような本。(あくまでわかりやすく言ってます) ぜひ、よろしくお願いします。 |
|
>>5020 たろう すべての要求を満たす本はニッチすぎて存在しないと思います。 特にサーバはニーズがあまりなく、深く掘り下げるほど単なる RFC の解説になってしまうため、書籍としては成立しづらいのかも しれません。 とはいえ、いくつか提示してみます。 ○UNIXネットワークプログラミング入門 http://www.amazon.co.jp/-/dp/4774117544 この本は持っていませんが、前身である UNIXネットワーク・ベストプログラミング入門 http://www.amazon.co.jp/-/dp/4874085032 は持っています。書評は http://x68000.q-e-d.net/~68user/net/link-book.html に書いてあります。 ○Perlネットワークプログラミング―ソケットの使い方から クライアント/サーバーシステムの開発まで http://www.amazon.co.jp/-/dp/4894714655 買っていませんが、目次を見ると結構範囲は広いようです (700ページもあるから当然か…)。深く突っ込んでいるかは わかりません。 ○基礎からわかるTCP/IP ネットワーク実験プログラミング http://www.amazon.co.jp/-/dp/4274065847 アプリレイヤではなく TCP/IP 寄りですが、結構おもしろいことを やっていて勉強になります。読みやすいかというと、個人的には ちょっとつらいです (一枚の複雑な図があって、それを長い文章で 解説するのは無理がある。まぁ書籍だから仕方ないかもしれませんが) あとは、いずれも持っていませんが、 オンラインゲームプログラミング http://www.amazon.co.jp/-/dp/4797328479 MMORPGゲームサーバープログラミング http://www.amazon.co.jp/-/dp/4797328460 といったアプローチもアリかもしれません。 |
|
>>5021 68user 68userさん。 お返事ありがとうございます。 なんだがいろいろ調べていただいたようで、ありがとうございます。 (68userさんは上級者なんでしょうね) linuxシステムプログラミング http://www.amazon.co.jp/Linux%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E5%9E%B0%E4%BA%95-%E6%AD%A3%E9%9B%84/dp/4274079724/ref=sr_1_2?ie=UTF8&s=books&qid=1247282246&sr=1-2 (私の知りたいことは「プロセス間通信」で、「システムプログラミング」って範疇に入るんだなぁ) これでも読んでみようかと思ってます。 プロセス間通信がわかれば、 数あるソフトウェアを自在に連携して使いこなすことができるる!」 こう思っているが、合ってますでしょうか。(^−^;) |
|
>>5022 たろう 共有メモリなどのプロセス間通信は、同一サーバ内のプロセスで データをやりとりする仕組みで、他サーバとはやりとりができません (とはいえ MySQL や PostgreSQL なども使っている重要な機能ですが)。 複数クライアントからの情報をサーバ内で効率よく共有するためには 役立つのは確かでしょうが、多くのマシンで連携するクラウドばやりの 昨今では、学習の方向性としてはちょっとずれているかもしれません。 |
|
68userさん はじめまして、鈴木と申します。 SSLクライアント接続のプログラムを作成していた友人から 「SSL_connect() を実行すると -1 が返る。」という相談を受けて、調べている中で、 68userさんの下記ページの、RAND_seed() の説明で解決することができました。 http://x68000.q-e-d.net/~68user/net/ssl-1.html 本当にありがとうございました。 今回、書き込みさせていただいたのは、その続きなのですが もし、ご存知でしたら教えていただけないでしょうか。 【質問の内容】 (1)XPでは、RAND_seed()を実行しなくても、乱数の種が不足することはないのでしょうか? (2)ユーザプログラムでRAND_seed()実行しない場合、OpenSSLは、OS(Windows)からどのようにして 乱数の種を取得するのでしょうか? 以下に、質問に至った経緯を記します。 【友人との話の経緯】 当初、前述の友人が作成したRAND_seed()していないSSLクライアントプログラムを 私の環境(WindowsXP Pro(SP2))で実行しても、SSL_connect()ではエラー(-1)は 発生しませんでした。 友人の環境を確認するとWindowsNT4.0ワークステーション(SP3)でした。 どうしても、この古い環境でSSLクライアント接続のプログラムを動かしたいとのこと。 結局、友人の環境(WindowsNT4.0ワークステーション(SP3))では発生しますが、 私の環境(WindowsXP Pro(SP2))では100回ほどテストしましたが発生しませんでした。 【試した内容】 前述の内容を下記にまとめます。 (友人の環境) WindowsNT4.0ワークステーション(SP3):× SSL_connect() ⇒ (-1)が返る (私の環境) WindowsXP Professional(SP2) :○ SSL_connect() ⇒ 正常 どちらも、PCの電源オン後に自動ログインして、SSLクライアントプログラムを 自動起動するようにしています。 使っているOpenSSLのバージョンは私も友人も0.9.8Gです。 という経緯があって、以下の点についてご存じであれば教えていただけないでしょうか。 ・XPでは、RAND_seed()を実行しなくても、乱数の種が不足することはないのでしょうか? ・ユーザプログラムでRAND_seed()実行しない場合、OpenSSLは、OS(Windows)からどのようにして 乱数の種を取得するのでしょうか? 何卒よろしくお願い致します。 |
|
>>5024 鈴木 Windows に詳しくないので直接の回答はできませんが、 - 前提として、RAND_poll(3) は呼んでいますか? - プログラムの各部分に RAND_status(3) を実行し、 seed の状況を確認することで、何を行うと十分な seed がたまるか確認できるのではないでしょうか。 - Windows 用の RAND_poll(3) や RAND_add(3) のソースは http://cvs.openssl.org/fileview?f=openssl/crypto/rand/rand_win.c&v=1.46 にありますので、眺めてみてはどうでしょうか。 - RAND_seed(3) は最終的には RAND_add(3) を呼ぶ…と思うのですが、 ソースを見てもそのつながりがよくわかりませんでした。 と思いました。 |
|
UNIXの初歩的なことですみません。 UNIXで、viを使用するときシェルの環境変数の設定などは 必要なのでしょうか。 cronを編集しようとして、「crontab -e」を実行したの ですが、正しく表示されませんでした。 「crontab -l」では、正しく見れます。 環境変数のEDITORに、”vi”を設定し、「crontab -e」を 行うと、正しく表示されます。 ここでなのですが、unixにログインし、コマンドラインから、 viを起動すると問題なく使用できるのですが、ログインの場合 環境変数のEDITORは関係ないのでしょうか。 それとも、そういうものなのでしょうか。 環境は、 solaris8 bシェル |
|
>>5027 sep 環境変数 EDITOR は、単に vi(vi コマンド)を使用する場合には 必要ありません。 crontab コマンドのように、エディタを選択できるプログラムが 参照します。 http://x68000.q-e-d.net/~68user/unix/environment.html#EDITOR なお、crontab コマンドでは、EDITOR が設定されていない場合は ed コマンドで編集画面が開きます。 |
|
はじめまして POP3 クライアントを作ってみよう(3) のページにて > APOP はその原理上、必ずサーバ側に生パスワードを保存しておく必要があります。... > CRAM-MD5 や CRAM-SHA などの認証方法がありますが、サーバ側に生パスワードを保存しておく必要はありません。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ とありますが、CRAM-MD5 (や DIGEST-MD5) は生パスワードを サーバ側が保持していなければならないと理解しておりましたが如何でしょうか? サーバーは,認証の際に 「クライアントから受信した文字列(暗号化済み)」と, 「送信したChallengeコードと(サーバー側の)『ユーザのパスワード』をMD5で暗号化したもの」を 比較する必要がありますので...。 |
|
ご指摘ありがとうございます。勘違いしていたようです。 以下のように修正いたしました。 http://x68000.q-e-d.net/~68user/net/pop3-3.html - 一方 IMAP というプロトコルには APOP と似た認証の仕組みとして、 - CRAM-MD5 や CRAM-SHA などの認証方法がありますが、サーバ側に - 生パスワードを保存しておく必要はありません。 + SMTP や IMAP には APOP と似た認証の仕組みとして、CRAM-MD5 や、 + それを改善した DIGEST-MD5 などの認証方法がありますが、こちらも + 同様にサーバ側に生パスワードを保存する必要があります。 |
|
管理人様、失礼いたします。 この度、私の運営する掲示板への度重なるスパム書き込みに対する対策を行っております。 つきましては、せっかくなら私のサイトだけに囚われず 一般の皆様にも使用していただけた方が良いかと思い 絶対に荒らされない掲示板サービスを立ち上げようと考えております。 スパムに悩まされない掲示板に興味が御座いますでしょうか? また、使っていただける皆様と共同して随時機能を追加して参ります。 掲示板サービスに対するご要望があれば、 下記のメールアドレスにご連絡いただければ 追って準備が整い次第、お知らせをさせていただきます。 掲示板サービス以外のメールは、一切送信いたしません。 antispambbs@gmail.com それでは、貴重なスペースをありがとう御座いました。 書き込み内容がサイト内容とそぐわない場合は、 大変お手数ですが削除いただきますようお願いいたします。 失礼いたします。 |
|
Bシェルで、whileとreadを使ったファイルからの読み込み について教えてください。 while文の中の変数をwhile文の外で使いたいのですが、 以下の様に、whileとreadを使ってファイルから読み込み doをdoneの間で処理を行い、ループを抜けた後、doneの 後ろで、結果を表示させたのですが、正しく表示されません。 どうしたら正しく表示されますか。 環境 Solaris8 Bシェル --------------------------------------------------------- #!/bin/sh # num=0 while read line ; do echo $line num=`expr $line + $num` done < a.txt echo "-----" echo $num cat a.txt 1 2 3 4 5 6 7 8 9 10 |
|
Bシェルで、sedを使って、2行を1行にしているのですが上手く行きません。 改行している次の行で、半角スペースから始まっている行を、sedを使って 1行にしたいのです。 sed -e ':loop' -e '$b' -e 'N;/\n /{s/\n *//;b loop' -e '};P;D;b loop' file.txt としたのですが、最初に引っかかったのは、1行になるのですが、 それ以降のものは、1行になりません。 環境 Solaris8 Bシェル 内容 --------- [Fri Jan 1 00:00:00] 開始 [Fri Jan 1 00:00:00] INFO:あいうえお abcdefg [Fri Jan 1 00:00:00] INFO:あいうえお 1234567890 [Fri Jan 1 00:00:00] INFO:あいうえお aaaaaaa bbbbbb cccccc [Fri Jan 1 00:00:00] INFO:あいうえお ABC 1234 [Fri Jan 1 00:00:00] INFO:12345 [Fri Jan 1 00:00:00] INFO:ABCDE [Fri Jan 1 00:00:00] INFO:あいうえお [Fri Jan 1 00:00:00] 終了 期待する結果 ---------- [Fri Jan 1 00:00:00] 開始 [Fri Jan 1 00:00:00] INFO:あいうえお abcdefg [Fri Jan 1 00:00:00] INFO:あいうえお 1234567890 [Fri Jan 1 00:00:00] INFO:あいうえお aaaaaaa bbbbbb cccccc [Fri Jan 1 00:00:00] INFO:あいうえお ABC 1234 [Fri Jan 1 00:00:00] INFO:12345 [Fri Jan 1 00:00:00] INFO:ABCDE [Fri Jan 1 00:00:00] INFO:あいうえお [Fri Jan 1 00:00:00] 終了 実際の結果 --------- [Fri Jan 1 00:00:00] 開始 [Fri Jan 1 00:00:00] INFO:あいうえお abcdefg [Fri Jan 1 00:00:00] INFO:あいうえお 1234567890 [Fri Jan 1 00:00:00] INFO:あいうえお aaaaaaa bbbbbb cccccc [Fri Jan 1 00:00:00] INFO:あいうえお ABC 1234 [Fri Jan 1 00:00:00] INFO:12345 [Fri Jan 1 00:00:00] INFO:ABCDE [Fri Jan 1 00:00:00] INFO:あいうえお [Fri Jan 1 00:00:00] 終了 となります。 期待する結果を得たいのですが、どうすればよいですか。 |
|
>>5040 あきもと >>4776 zsh を参照してください。 >>5041 おう sed -e '$!N; s/\n \{1,\}//; P; D' file.txt でどうでしょうか? |
|
管理人さんへ 『User-Agent 統計』のページ (http://x68000.q-e-d.net/~68user/cgi-bin/view-browser.cgi) が『エラー : 内部エラーが起こりました。』となっているので お知らせします。 |
|
>>5042 zsh ありがとうございます。 教えて頂いたところに書いてある方法で 上手くいきました。 |
|
>>5042 zsh ありがとうございます。 上手くいきました。 |
|
はじめまして。ボンジーと申します。ハッキングのやり方を教えてください。しーローとなもので |
|
いつもUNIXコマンドでお世話になっています。 画像変換のconvertコマンドについてお伺いしたいことがあります。 私は今、趣味でサイトを作っています。 画像アップロードした際にGIFからjpgに変換させる処理にconvertを使っているのですが、 ファイル名の拡張子は.jpgになっているのですが、バイナリエディタで開いて確認するとGIFファイルのままです。 convertはImageMagickダウンロードしてきて新規インストールしたものです。 このページではGIFからJPGへの画像変換を紹介されていたのですが、 私のところと同じような現象がおこっていませんでしょうか。 http://x68000.q-e-d.net/~68user/unix/pickup?keyword=convert&target=command |
|
>>5056 Misaki そういう事象は聞いたことがないですが、ありうることとしては libjpeg のリンクがうまくいっていない、でしょうか (それにしても エラーが出るのではないかと思うのですが)。 変換前後のファイルを file コマンドで調べても、やはり gif でしょうか? |
|
>> 5057 早速、回答ありがとうございます。 fileコマンドでgifかどうか判別できるんですね! やってみたところGIFでした。 簡単に調べてみましたがlibjpegが上手く入っていなかったようです。 帰ったらもうちょっと詳しく調べてみます。 ldd結果 $/usr/bin/ldd /usr/local/bin/convert linux-gate.so.1 => (0x00110000) libMagickCore.so.3 => /usr/local/lib/libMagickCore.so.3 (0x00111000) libMagickWand.so.3 => /usr/local/lib/libMagickWand.so.3 (0x00427000) libz.so.1 => /usr/lib/libz.so.1 (0x0059a000) libpthread.so.0 => /lib/libpthread.so.0 (0x005af000) libdl.so.2 => /lib/libdl.so.2 (0x0056b000) libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00523000) libm.so.6 => /lib/libm.so.6 (0x00571000) libc.so.6 => /lib/libc.so.6 (0x005c6000) /lib/ld-linux.so.2 (0x0040c000) librt.so.1 => /lib/librt.so.1 (0x0081e000) |
|
初めまして。かばらと申します。 現在、マシン間のソケット通信に関して勉強中なのですが、connectシステム コールについて質問させていただきいても宜しいでしょうか。 質問1 クライアント側から発行されるconnect()はサーバー側で発行されるaccept()の ように処理をロックすることがあるのでしょうか。もしあるとすればどの タイミングでコールした場合でしょうか。 質問2 サーバー側がlisten()をコールする以前にクライアント側でconnect()をコール するとエラー(返却値-1)が起きますが、クライアントがサーバーの状態を監視し、 connect()をコールするタイミングを得ることは可能でしょうか。 (試しにselect()を使用してみましたが上手くいきませんでした。) 突然の不躾な質問で申し訳ございませんが、何卒ご教授くださいますよう よろしくお願いいたします。 |
|
>>5059 Misaki > 簡単に調べてみましたがlibjpegが上手く入っていなかったようです。 これはまたシンプルな convert ですね。ウチでは以下のとおりです。 /usr/local/bin/convert: libMagick.so.10 => /usr/local/lib/libMagick.so.10 (0x28073000) libWand.so.10 => /usr/local/lib/libWand.so.10 (0x283c7000) libjbig.so.1 => /usr/local/lib/libjbig.so.1 (0x28479000) liblcms.so.1 => /usr/local/lib/liblcms.so.1 (0x28484000) libtiff.so.4 => /usr/local/lib/libtiff.so.4 (0x284b1000) libjasper.so.4 => /usr/local/lib/libjasper.so.4 (0x284fe000) libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x28548000) libpng.so.5 => /usr/local/lib/libpng.so.5 (0x28566000) libfpx.so.1 => /usr/local/lib/libfpx.so.1 (0x2858b000) libdpstk.so.1 => /usr/X11R6/lib/libdpstk.so.1 (0x2862b000) libdps.so.1 => /usr/X11R6/lib/libdps.so.1 (0x28633000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x2867a000) libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x28689000) libbz2.so.1 => /usr/lib/libbz2.so.1 (0x286da000) libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x286e9000) libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28818000) libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x28907000) libz.so.2 => /lib/libz.so.2 (0x28971000) libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x2897f000) libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x28988000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x2899f000) libm.so.2 => /lib/libm.so.2 (0x28a67000) libc.so.5 => /lib/libc.so.5 (0x28a80000) libstdc++.so.4 => /usr/lib/libstdc++.so.4 (0x28b5a000) >>5060 かばら > 質問1 > クライアント側から発行されるconnect()はサーバー側で発行されるaccept()の > ように処理をロックすることがあるのでしょうか。もしあるとすればどの > タイミングでコールした場合でしょうか。 「connect はブロックするか」(connect を発行した後、待たされることはあるか) という趣旨でよいですかね。ざっと考えつくところは、 1. 3way handshake が完了するまでブロックする 2. サーバもしくはサーバ側ルータにて一切のレスポンスを返さない 構成の場合、いつまでたっても返事がないので SYN を送り続け、ブロックする 3. サーバ側で処理しているソケット数が SOMAXCONN を超えていた場合、 滞留しているクライアントの処理が終わるか、タイムアウトになるまで ブロックする 4. サーバ側が listen しているが accept していない場合、ブロックする などなど。3・4 は記憶に頼って書いてますので、本当かどうかは自信がないです。 一方、ノンブロッキングソケットで connet すれば、ブロックしません。 > 質問2 > サーバー側がlisten()をコールする以前にクライアント側でconnect()をコール > るとエラー(返却値-1)が起きますが、クライアントがサーバーの状態を監視し、 > connect()をコールするタイミングを得ることは可能でしょうか。 > (試しにselect()を使用してみましたが上手くいきませんでした。) サーバ側で準備が整ったら通知がくるといった仕組みはないので、リトライ し続けるしかないですね。 |
|
お礼遅くなりました。 libjpegを入れて再インストールしたらちゃんと変換されました。 私ははgifの取り扱いに失敗しているものだと勘違いしていました。 迅速かつ的確な回答ありがとうございました。 |
|
ご回答ありがとうございます。 質問1、2共に納得です。 大変お世話になりました! |
|
はじめまして、Mod's(マスター・オブ・ドヘン○イ)と申します。 困った時に参考にさせて頂いております。 Bシェルスクリプトを独学中です。と言いつつBashの環境設定ファイルとサブシェル (詰まる所はプロセスの理解不足)について質問させてください。 利用環境:MacOSX 10.6 ログインシェル:Bash bash-3.2$ bash --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) 元々はログインシェルがBashの利用環境にてログイン過程のシェル起動や以降のシェル起動による 環境設定ファイルの読み込み順序などを調べる為に/etc/profile、/etc/bashrc、~/.bash_profile、 ~/.bashrcの4つにそれぞれechoコマンドを仕込んで実際にそれらログインスクリプトが起動した 時に任意のファイルへ「読み込みました」的な内容の出力をするようにしました。 結果、ログイン時にはそれら全ての環境設定から出力されその後のBashの起動では~/.bashrcから のみ出力があり、ここまでは予想通りでした。 グローバル環境設定ファイル、およびローカル環境設定ファイルのいずれもprofile側からrc側を sourceしています。 ここまでは良いのですが、カレントシェルからシェルスクリプトを実行した際、私の予想では ~/.bashrcから出力を得られるつもりでいました。シェルスクリプトを実行する際にサブシェルを 起動すると「されている(←私の中で未確定)」わけですから。 従いまして下記のように2つ推測を立ててみました(どちらも外れているかもしれませんが:笑)。 <推測> 推測① :新たにシェルは起動している、しかし。 スクリプト実行によるサブシェルはあくまでスクリプトを実行するシェルであって対話シェル として起動しているわけではないのでローカル環境設定ファイルを読み込む必要がない。 言い換えると環境設定ファイルはあくまでログインスクリプトだから。 推測② :新たにシェルは起動していない。 あくまでスクリプトを解釈するのはカレントシェルであって解釈後の実際の処理はシェルの 起動を伴わない子プロセスが実行するから。 推測②を書いていてふと思ったのですが、1つのプロセスというのは同時に一つの事しか出来ない 「はず」で、カーネル視点から考えるとシェルとしてプロセスを起動した以上は入力されたコマンド を自身が理解出来る命令へ翻訳して受け取るための1プロセス。 そして翻訳された命令を受け取ったカーネルは実際のデータ処理実行でまた次の1プロセスを育成。 つまり、こちらはカーネル上のデータ処理のプロセスであってシェルの起動ではない。 よってカレントシェルからのスクリプト実行の処理というのはカレントシェルがスクリプト内の コマンドを翻訳してカーネルが翻訳された命令を受け取って子プロセスが育生されるので~/.bashrcは 読み込まれない。 つまり、「サブシェルが起動する」というのはカレントシェルのプロセス上でデータ処理が行われる 訳ではないということを便宜的に説明するための「考え方」でしかないのか? と、以上までのような推測を立ててみました。 個人的にはこのように考えるとcronからのスクリプト実行でも環境変数を~/.bashrcから読み込ま ない事にも合点がいくのですが。。。 もっともcronプロセスはログインプロセスとは全くべつのプロセスなので環境変数で引き継ぐも なにもないのですがシェルが起動するということを中心に考えると、むぅ〜ん、という感じです。 どちらにせよ、~/.bashrcをシェルスクリプト実行時に起動させたければsourceすれば良いだけの ことですが、一般的な説明としてスクリプト実行には新たにシェルが起動しているという説明と ~/.bashrcが起動しない結果が自分の中で噛み合ないので質問させて頂きました。 psコマンドを使いこなせていれば良いのだろうなぁと思いつつ。いきなりの長文で失礼しました。 http://x68000.q-e-d.net/~68user/unix/pickup?keyword=%A5%B5%A5%D6%A5%B7%A5%A7%A5%EB&target=command |
|
>>5071 Mods bash(1) 曰く、 ~/.bash_profile 個人用の初期化ファイル。ログインシェルが実行します。 ~/.bashrc 対話シェルごとに実行される、個人用の起動ファイル。 です。 対話的シェルの定義は、同じく bash(1) 曰く 対話的なシェルとは、オプションでない引数がなく、標準入力と 標準出力がいずれも端末に接続されていて (これは isatty(3) で調べられます)、 -c オプションが指定されていない状態で起動 されたシェル、または -i オプション付きで起動されたシェル のことです。 です。 シェルスクリプトは http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0 にあるように、結果的には /bin/bash ./foo.sh などと起動されるので、 「オプションでない引数がなく」 に該当しないため、対話的シェルではありません。よって、 ~/.bashrc 対話シェルごとに実行される、個人用の起動ファイル。 は読み込まれません。 また、シェルスクリプト起動の場合はログインシェルでもないので、 ~/.bash_profile 個人用の初期化ファイル。ログインシェルが実行します。 も読み込まれません。 以上が仕様上の話です。 で、なぜそういう仕様かと言うと、シェルスクリプトが個人用の 設定を参照してしまうと都合が悪いからです。例えばこちらの手元の CentOS 5.3 において /usr/bin/* のうちシェルスクリプトである ものは、以下のようにかなりあります。 /usr/bin/apr-config /usr/bin/apropos /usr/bin/apu-config /usr/bin/at /usr/bin/atq /usr/bin/atrm /usr/bin/bashbug-32 /usr/bin/build-classpath /usr/bin/build-classpath-directory /usr/bin/build-jar-repository /usr/bin/bzcmp /usr/bin/bzdiff /usr/bin/bzgrep /usr/bin/bzless /usr/bin/bzmore /usr/bin/c89 /usr/bin/c99 (略) これらが実行されるたびに ~/.bash_profile などを呼んでしまうと、 alias・シェル変数・関数などがプログラム作成者の意図に反したもの であった場合、おかしな挙動をしてしまうでしょう。それを避けるために こういう仕様になっているものと思います。 上記のプログラムの挙動をカスタマイズしたい場合は、アプリ個別の 設定ファイル (~/.*rc) や、環境変数で指示すべき、ということですね。 > 個人的にはこのように考えるとcronからのスクリプト実行でも > 環境変数を~/.bashrcから読み込まない事にも合点がいくのですが。。。 cron 経由だと端末を持たないので対話的シェルではないから、 ~/.bashrc を読まない、です。この結果、 ログインシェル・対話的シェルと、cron 経由のシェルで 共通の環境変数を設定する方法がない となってしまい、仕様としてはイマイチだと個人的には思っていますが、 世の人達は cron で HOGE=fuga * * * * * $HOME/bin/foo.sh としたり、 * * * * * . $HOME/.bash_profile && $HOME/bin/foo.sh としたり、 $HOME/bin/foo.sh 内で必要な環境変数を設定する などの方法で乗り切っています。 環境変数であれば FreeBSD だと /etc/login.conf で設定する方法 もありますが、Mac OS X だとどうなのかはわかりません。 > 一般的な説明としてスクリプト実行には新たにシェルが起動しているという説明と > ~/.bashrcが起動しない結果が自分の中で噛み合ないので質問させて頂きました。 シェルは起動していますが、~/.bashrc などを読むべき条件が 揃っていない、ということですね。 |
|
>>5072 管理人様 早速のご回答を頂きましてありがとうございます! cronの説明も含め非常にスッキリいたしました。 スクリプト実行によるシェル起動プロセスが~/.bashrcを読み込まない件に関しては最初の 推測が近かったものの「ローカル環境設定ファイルを読み込む必要がない。」のではなく むしろ「読み込んではまずい。」ということだったのですね。 その理由も言われてみれば非常に納得です。 この度は詳細な解説をして頂き、まことにお世話になりました(感謝感激です)。 |
|
はじめまして 以前『User-Agent 統計』を参考にさせていただいていたのですが 最近トップページから『User-Agent 統計』に進んでもエラーになり うまく動いてないようですが、他の方からは正常に動いているのでしょうか? できれば動作確認していただければと思います。 よろしくお願いします。 |
|
>>5078 BAVO 以前サーバの負荷が上昇した際、User-Agent 統計が負荷上昇の 一因であるように見えたので、実行不可としておりました。 その後別アプローチから負荷軽減を図ったので、とりあえず さきほど実行可能にしてみました。 http://x68000.q-e-d.net/~68user/cgi-bin/view-browser.cgi >>5045 h.maruwa 同じご指摘をいただいていたにも関わらず、スルーしており 申し訳ありませんでした。 |
|
>FollowSymLinks >シンボリックリンクを許可するかどうか。 >シンボリックリンクをたどるかどうかを設定します。 >なお、シンボリックリンク自体は OS の機能ですから、いつでも使えます。 >ここでは web 経由でシンボリックリンクを辿るかどうかを決めるわけなので、 >CGI プログラムの中ではいつでもシンボリックリンクを使うことができます。 なんだか日本語が変ですよ。設定がどう働くのかこれじゃわからないです。。。 |
|
>>5079 68user User-Agent統計のページが閲覧可能となっているのを確認しました。 対応有難うございました。 日本国内でのUser-Agentを多数・長期間分網羅したサイトは稀少なので アクセスが集中しやすいのかもしれませんね。 |
|
UNIX情報Web公開、ありがとうございました。 下記の部分がとても、役に立ちました。 http://x68000.q-e-d.net/~68user/unix/pickup?tee UNIXの部屋 コマンド検索:tee (*BSD/Linux) ...(snip)... make >make-log 2>&1 (sh・bash の場合) ...(snip)... C言語バッチ処理のlog出力先を下記のように(×)から(○)へ変えたら、 標準入力を要求する、フィルタ系pgmテストがやりやすくなりました。 (×)./"$PGM1" >>"$LOG1" 2>&1 (○)./"$PGM1" 2>&1 | tee -a "$LOG1" pgmには、 標準エラー出力に下記のようなメッセージを表示させ、 fprintf(stderr, "*** %s needs stdin ! ***\n", pgm_id); fprintf(stderr, "*** if end of input ,then press ctrl+d. ***\n"); 標準出力と標準エラー出力をログ出力させると、 画面表示で何をすれば良いか分かり、 データ入力時の操作がしやすいです。 以上です。//////// |