|
はじめまして。大変わかりやすいページで非常にためになっております。 さて、間違いがあったら掲示板で指摘してくださいとありましたので、 書かせていただきます。 すでにお気づきなら申し訳ありません。 http-client-2.c のコードで113行目の以下の部分ですが、 113: fprintf(fp, "Host: %s:%d\r\n", host, port); 最後の引数は port ではなく server.sin_port ではないでしょうか? 82〜91行目でポート番号を指定していなかったときの処理がありますが、 ここで server.sin_port を用いられているため 最後まで port は 0 のままでした。 |
|
こんにちわ。 Solaris7 のftp についてどなたかご存知でしたらご教授ください。 Solaris8 のような、あるユーザにはftpを出来なくするような機能「/etc/ftpd/ftpusers」があるのでしょうか。 皆様よろしくお願い致します。 |
|
Pthreadにて、スレッドをあらかじめ生成しておいて、 何らかのトリガーで後から起動するって、 どのようにPGすれば良いのでしょうか? よろしくお願い致します。 |
|
>4669 man が入ってない環境なんでしょうか? docs.sun.com に行くとドキュメント群が公開されてますよ。 http://docs.sun.com/app/docs/doc/805-3173/6j31cpluf?q=ftpusers&a=view を見る限り、solaris 7 付属の ftpd は /etc 直下の ftpusers を 参照するみたいですね。もし、無かったら作ってみましょう。 |
|
適用済みパッチを調べるものとして ・showrev -p ・patchadd -p の2つがあると思うのですが この2つの違い等を知っている方がいらっしゃいましたら 教えていただきたいです。(UNIX の部屋には無かったので。) patchadd -p は root 権限のみ実行できたという違いだけでしょうか? (新しいパッチでは root でなくとも実行できる。) よろしくお願いいたします。 |
|
>4672 ご返信が遅くなりまして申し訳ございませんでした。 ドキュメント参考に、ディレクトリ(ftpd)作成、ファイル作成して、 ftp禁止ユーザを制御できるようになりました。 しっかりドキュメントを参照しなければいけませんでした。 これからは、まずドキュメント参照を心掛けたいと思います。 hogeさん、大切なお時間ありがとうございました。 |
|
こんにちは。 vmstatを起動すると、「vmstat: 0551-129 knlist が失敗しました。」という エラーで情報が取得出来ません。何が考えられますでしょうか。 ちなみにOSの再起動を試みましたが、解決されませんでした。 |
|
>>4677 まさしくん はじめまして。 御質問のキーワードを検索すると、以下のページがヒットしました。 参考になりませんでしょうか? http://unix.derkeiler.com/Mailing-Lists/AIX-L/2003-12/0105.html |
|
>>4677 まさしくん 私が使用しているAIXの場合の話ですが、このエラーは「ある種のカーネル・メモリの問題」で発生する様です。 /usr/lib/boot/unix_mp ファイルのサイズがゼロとなっているはずですので、その場合には他のサーバー(同じOSの同じバージョンが良いですね)から同じファイルをコピーすることで復旧出来る様です。 残念ながら、何故このファイルのサイズがゼロになるかまでは分かりませんが、上記の通りファイルをコピーし直すか、/unix のリンクが失われている場合はリンクを張り直すと言うことで解消する様です。 |
|
はじめまして。 とても初歩的な質問で恐縮ですが、 RedHat Enterprise 4で、/var/log/messages 内に格納される情報が 日付 時間 ホスト名 プログラム名 メッセージ の順番で格納されているのはわかるのですが、 それぞれの最大文字数についてどなたかご教授願えませんか? よろしくお願いいたします。 |
|
はじめまして。 Solarisのsyslog.confの設定で 特定のログレベルのみを任意の出力ファイルに出力させたいのですが、 いろいろ調べたのですが、途方に暮れています。 Linuxのsyslog.confの設定では、 mail.=debug /ログ出力先 (↑mailのdebugのみ出力。debug以上のレベルも出力しない) という設定方法があるのですが、Solarisで同じような書き方しても 設定ファイルを読み込む時に、 「'=debug'なプライオリティはありません」と怒られてしまいます。 方法がありましたら、どなたかご教授願います。 |
|
>バンガードさん レスが遅くなり申し訳ございません。 /unixのリンクが無かったので、リンクをはり直したら正常に動くようになりました。 ありがとうございました。 |
|
psコマンドを使って、システムのcpuなどを5秒毎にログに書き込みたいのですが、どうやればいいのか検討がつきません。どなたかcシェルを利用してできる方法を教えてください。よろしくお願いします。 |
|
STARTTIMEM=`date +%M` こんにちわ! STARTTIMEM=`date +%M` STARTTIMES=`date +%S` STARTTIME=`expr $STARTTIMEM \* 60 + $STARTTIMES` echo $STARTTIME 以下のようなメッセージが出てしまう。 expr: 文字列に対して演算を行おうとしました。 |
|
最近Cygwinをはじめた初心者です。 X-Windowなるものの存在を知り、Cでウインドウを出したり直線書いたりしてプログラムを勉強していたのですが、コンパイルして実行しようとすると .... _cygtls::handle_exceptions:Error while dumping state (prbably corrupted stack) Segmentation falu (core dumped) というエラーがでます。 以前までは普通にコンパイル〜実行とできていたのですが・・・ ちなみに startxwin.sh の後に実行してみるとプログラムは動きました。 startxwin.sh などうたなくても実行する方法はありますか?またそのような設定はどうすればいいのでしょうか? |
|
>> 4684 この掲示板の[使い方]を見ると以下の様に記述されています。 --------------------------------------- UNIX・ネットワーク一般の質問は受け付けていません 当ページのコンテンツに対するご意見・ご指摘のみ受け付けています。 --------------------------------------- 今回の様な質問は受け付けていないはずですよ。 ひとまず、私の使用している環境(AIX 5.1)で検証した結果を提示します。 以下の通り、全く問題なく実行出来ています。 ------------------- [vanguard]> cat test.sh #!/usr/bin/sh STARTTIMEM=`date +%M` STARTTIMES=`date +%S` STARTTIME=`expr $STARTTIMEM \* 60 + $STARTTIMES` echo $STARTTIME [vanguard]> date Thu Aug 17 13:07:36 JST 2006 [vanguard]> test.sh 459 [vanguard]> ------------------- 管理者様 4678,4679も含めて問題がある様でしたら、削除いただいて結構です。 質問だけでなく、回答もこの掲示板の目的に沿っていないと思いますので、私の発言は確認なしに削除いただいて結構です。 |
|
>>4684 さとしくん No.4688 は No.4686 に対する回答でした。 コメントの仕方を誤っていました。 4684で質問されている5秒毎にpsコマンドを実行し、ログに書き出すのは以下のシェルでいかがでしょうか? -------------------- #!/usr/bin/sh ps > /tmp/ps.log while [ 1 ] do ps >> /tmp/ps.log sleep 5 done |
|
シェル素人のよしだです。 シェルから、.sqlに値の渡し方を教えてください。 シェルにてテーブル名を入力させて、.sqlにそのテーブル名を渡したいのですが どのようにしたら良いでしょうか? ○test.sh #!/bin/sh echo "テーブル名を入力してください:" read table_name sqlplus -S ユーザ名/パスワード@サービス名 @test.sql >tmp.txt ○test.sql set pagesize 100 select 品目 from テーブル名; exit; |
|
UNIXの全くの初心者です。失礼を承知で質問します。 スクリプトをmoreで表示すると、文字化けするものがあるのですが、どのようにすれば、見ることができるでしょうか。 ターミナルソフトの設定ではEUC表示設定にはなっています。 システムが作成したスクリプトというものは、ユーザからは見ることができないのでしょうか。 申し訳ありません。お手数ですが、文字化けしない表示方法を教えてください。 宜しくお願いします。 |
|
>>4691 あゆ どの様な状況になっているのか具体的な状況が見えません。 特定のスクリプトが全て文字化けするのでしょうか? それとも、そのスクリプトの一部が文字化けするのでしょうか? 「file スクリプト名」とするとどうなりますか? ターミナルソフトの設定を「S-JIS」や「JIS」にするとどうなりますか? |
|
はじめまして。あみと申します。 Solarisに関する仕様を調査していて、この掲示板に出くわしました。 No.3716で以下のような記述がありますが、Solaris9以降の仕様をご存知の方いらっしゃいませんか。 >Solaris8 では sh・ksh・csh いずれも 255 文字の制限があるようで、極めて >不愉快ですね。 Solaris9では入力コンソールでは制限がないように思われるのですが、 入力後にバッファに読み込ませて表示させると途中からしか表示されないという現象がおこっています。 具体的には 1)/export/home/hoge/aaaaa・・・bbbbbbbb←のような300〜400くらいのパスを入力する 2)この入力から java.io.Reader reader = new java.io.InputStreamReader(java.lang.System.in); java.io.BufferedReader buf = new java.io.BufferedReader(reader); String input = buf.readLine(); のように標準出力へ表示する。 3)全てが表示されずに途中の aaaaaaa・・・bbbbb のような表示のみが値として出力されてしまう。 ⇒結果エラーになる どなたか、ご存知の方がいらっしゃいましたら教えてください。よろしくお願いします。 |
|
>>4667 ビンゴ中西 ご指摘ありがとうございます。とりあえずバグとして登録しました。 http://x68000.q-e-d.net/~68user/bugnote/viewbug.php?projectid=1&bugid=27 時間が取れたときに修正いたします。ありがとうございます。 |
|
バンガードさんいろいろ説明ありがとうございました。できました!!! |
|
初めまして。皆様よろしくお願い致します。 現在、solaris8のサーバー管理をやっているのですが、 cpu負荷実績を調べてる上で、 cputstというプロセスが異常に占有しています。cputstってどういうものでしょうか。。?ご教授ください。 |
|
>>4692 バンガード バンガードさん ご回答頂き、ありがとうございます。 スクリプトは、社内の人が作成したものは見れますが、元々入っているスクリプトは文字化けしてしまいました。 lsコマンドでファイルを見てみると、このように表示されました。 -r-xr-xr-x 1 root bin 39632 9月 8日 2003年 「file スクリプト名」の結果は、以下のようになりました。 ELF 32-ビット MSB 実行可能 SPARC バージョン 1[動的にリンクされています][取り 除かれています] ターミナルソフトは「S-JIS」や「JIS」に設定し直しても文字化けしてしまいました。 お手数おかけして、申し訳ありません。 宜しくお願い致します。 |
|
>No. 4697 あゆさん それはバイナリのモジュールなので、文字化けして当然です。 ちなみにそういったものをmoreやcatで見ると、文字化けした中で制御コードとして 認識される文字が出力され、下手をするとOSが飛ぶ危険がありますので、 fileコマンドで確認してからの方が良いと思いますよ。 |
|
>>4697 あゆ 4699 で「まさしくん」が回答されている通りです。 今回の対象ファイルは、バイナリのファイルですので cat や more では見られません。 私もたまに経験しますが、この様なファイルを cat や more で見ると最低でも画面が文字化けしたりしますし、最悪の場合「まさしくん」が言っている通り OS がダウンする可能性もあります。(私はまだそこまで行った経験はありませんが・・・) |
|
>>3716 68user ksh でも set -o emacs で長いコマンドを受け付けたと思います。 >>4693 あみ ldterm の制限なのでコーディングでどうにかなる問題ではありません。 tcsh/bash のように行を読み込む JNI の関数を作成して、 Java 側から呼び出すしかないと思います。 |
|
こんばんは。初めて投稿します。 socketで、HTTP の取得を行うプログラムを作成しています。 取得はできたのですが、どうしても取得したデータに、 ゴミデータがまざります。 e05,5d,5, など、ランダムな数値です。 HTMLのタグ括りの中にも、外にも存在しますが、 タグ内には無いようでした。 他の諸センパイ方の情報も参考にさせていただいておりますが、 どうも、有力な手がかりがありませんでした。 何卒、ご教示いただけますでしょうか。 以下、プログラムの抜粋です。 -- $ip = inet_aton($host) || die "NG.\n"; $sockaddr = pack_sockaddr_in($port, $ip); $proto = getprotobyname('tcp'); socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die "NG.\n"; connect(SOCKET, $sockaddr) || die "NG.\n"; autoflush SOCKET (1); if ($http eq '1.1') { print SOCKET "GET $url HTTP/1.1\n"; print SOCKET "Host: $host\n"; print SOCKET "Connection: close\n"; } else { print SOCKET "GET $url HTTP/1.0\n"; } print SOCKET "Accept: text/html; */*\n"; print SOCKET "\n"; my($op_all) = ''; while (chomp($buf=<SOCKET>)) { $op_all .= $buf; } close(SOCKET); |
|
>>4703 Perl Queen > e05,5d,5, など、ランダムな数値です。 chunked エンコーディングというものです。簡単に言うと、その後に続く バイト数を 16進表記したものです。もし邪魔なら、HTTP/1.1 ではなく HTTP/1.0 のリクエストを投げればよいです。 |
|
>>4704 68user 68user 様 ご教示ありがとうございました。 HTTP/1.0 でリクエストすると、あるサイトの例ですが、 「サイトがありませんこのURLにはサイトがありません。または現在準備中です。準備中の場合は後に再度お試しください。」 などと出てしまい、サイトにたどり着くことができませんでした。 都合上、http://www.yahoo.co.jp/ のように、デフォルトURL の指定にしているせいかもしれませんが、アクセス先のURLを 事前に知ることもできません。 あるいは、HTTP/1.0 で、URL指定の際に、何か回避ができたりしますでしょうか。 先に記載抜けていましたが、ポート番号は $port = getservbyname('http', 'tcp'); であらかじめデフォルトを取るようにして、URL内にポートの指定があれば、 それを優先するようにしています。 |
|
>>4705 Perl Queen HTTP/1.0 で、Host ヘッダを送信してみてください。 http://x68000.q-e-d.net/~68user/net/http-4.html#1 |
|
solaris10をインストールしたのですがインターネットに接続できません。 Mozilla1.7に何か設定が必要なのでしょうか? 初めまして、ゆうです。 先日初めてsolaris10をインストールしました。 デフォルトルーター:192.168.1.1 solarisPC:192.168.1.12 WindowsPC:192.168.1.11 上記のようにネットワークの設定を行っており、 WindowsPCからはインターネット接続が可能です。 また、WindowsPCとsolarisPCは互いにpingが通っています。 |
|
>>4707 ゆう ひととおりチェックしてみてください。 http://xxx.upken.jp/report/sol10nw.html |
|
>>4707 ゆう 経験上 /etc/nsswitch.conf と /etc/resolv.conf の 設定を忘れている人が多い気がします。 |
|
こんにちわ。OSの再起動をスケジューリングしたいのですが、可能でしょうか?またそれはどのような事をすればいよいのでしょうか。ちなみにsolaris8を使ってます。よろしくお願いします。 |
|
自分が考えてることは、shutdownコマンドシェルを書いて、cronで実行、スケジュールする方法なんですが、他にありますか?例えば、再起動のスクリプトがあるとか・・・・ |
|
うまくいきました。どうも失礼します。 |
|
システム間で電文を送受信する機能の設計を 担当することになり悩んでおります。 「相手システムに電文を送信して、その結果を受信する」または、 「相手から送信されてきた電文を受け取って、その結果を返す」 っといった設計に関してまったくの素人です。 なぜ素人に担当させるのかっといった事で突っ込まれると、 みもふたもないので、その点に関して触れないで下さい m(_ _)m とりあえず、私のレベル(下記)にあった 分かりやすい参考書、またはインターネットのサイトを見て 基礎勉強(下記)からはじめたいのですが、参考資料/サイト の紹介をお願いします。 <開発環境(案)> OS:Solaris 言語:Java(自分からAシステムへ)とPerl(自分からBシステムへ) プロトコル:https <私のレベル> https,SSL、SOAPといった通信用語の意味は知っている(つもり) Javaは実装の経験は無いが解析は出来る。 <知りたいと思っている事> ※「思っている」の意味は、今まで見た事・聞いた事からインスピレーション的に、 「多分、この辺を押さえておかなければいけないんだろうな...」っと思っている事です。 ・送受信処理のJavaの実装例 ・送受信が1秒間に100回あってもレスポンス悪化しない方法 (100回という数値は適当です。普通どれくらいを目標にするのですか?) ・通信エラー等の例外処理の実装方法 (通信エラー発生時の電文はロストするのですか?それってどうリカバリー するのですか? その当たりに関する事) ・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事 |
|
>>4713 榊 > ・送受信処理のJavaの実装例 送受信の基礎は echo クライアント・サーバや http クライアント・サーバの 実装サンプルを探せばよいでしょう。 データ受け渡しは、http のパラメータで渡す・CSV・XMLRPC・SOAP など実現 方法はいろいろあるでしょうが、それは開発スピードや保守性に関わる部分 なので、はっきり言って何でもいいです。 > ・送受信が1秒間に100回あってもレスポンス悪化しない方法 > (100回という数値は適当です。普通どれくらいを目標にするのですか?) 要件次第です。相手側は何箇所あるのか、MAX で 1秒あたり何回送信する 可能性があるかを考え、安全係数 (1.5 とか) をかけて、それをさばける 構成を考えます。 高速化方法は、https の上に載せるのであれば一般的な web のパフォーマンス チューニングがメインとなるでしょう。 - web サーバチューニング - SSL アクセラレータ導入 - DB チューニング・コネクションプール - web サーバ複数台化 > ・通信エラー等の例外処理の実装方法 > (通信エラー発生時の電文はロストするのですか?それってどうリカバリー > するのですか? その当たりに関する事) ロストする可能性があると考えて設計した方がよいでしょう。 プロトコル的には 1. A -> B データ送信 2. B -> A 完了通知 これだけだと思いますが、アプリの手順まで含めると 1. A -> B データ送信 2. B にて受信済フラグセット 3. B -> A 受信完了通知 4. A が受信完了通知を受け、送信済フラグをセット となると思います。で、 - A は送信済フラグが立っていない場合は再送する - B が既に受信済フラグを受けていたら、無視 or 破棄する などの対処をすると。もし即時の再送がまずいなら、 0. A にて送信日時をセット 1. A -> B データ送信 2. B にて受信済フラグセット 3. B -> A 受信完了通知 4. A が受信完了通知を受け、送信済フラグをセット として、「前回送信から n分経過していたら再送する」などの仕組みも必要と なるでしょうが、その辺は要件次第です。 もちろん、ブラウザのように 「タイムアウトしたらエラー通知するだけ。再送は操作者まかせ」 というのも選択肢としてはアリです。 > ・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事 その辺は SSL でカバーするのがよいでしょう。相手側のなりすましも 防御する必要があるならクライアント証明書を使うとか、アプリレイヤで 認証するとか、固定 IP アドレスなら IP アドレスで制限をかけるとか。 もしネットゲームのように不特定多数が接続し、しかも送信プログラムを 改ざんされる恐れがある場合は大変面倒です。 |
|
BシェルからPerlを呼び出し実行しています。 Bシェルの変数の値をPerlに引き継がせることはできるのでしょうか。 以下でいうと、nに、”100”を設定しています。 そのnの値である、”100”を渡したいのですが。 -------------------- #!/bin/sh n=100 a=`perl -MPOSIX -e 'print strftime("%Y%m%d", localtime(time-(24*60*60*$n)))."\n"'` echo $a |
|
>>4715 こう 変数が展開されないのはシングルクォーテーションの中にあるせいなので $n だけ出してあげましょう。 ------ #!/bin/sh n=100 a=`perl -MPOSIX -e 'print strftime("%Y%m%d", localtime(time-(24*60*60*'$n')))."\n"'` echo $a |
|
はじめまして。 現在少々考えこんでしまっていることがあるのですが DB2でフェデレーション設定を行いたいと思っています。 ただ、フェデレーションという事自体をあまり 明確に理解しておりません。 どなたか、わかり易い説明などしていただけますでしょうか。 ラッパーやらニックネーム作成など色々調べれば出てくるのですが いまいちピンとこないのです。 どなかたご教授願えればありがたいです。 よろしくお願いいたします。 |
|
Bシェルのプロンプトについて教えて下さい。 Bシェルのプロンプトに日付、時間を表示し、何かコマンドを実行するごとに プロンプトに表示する表示内容を変えたいのですが、可能なのでしょうか。 PS1="[`date{] " とすれば、表示することはできますが、処理を実行するごとに変わりません。 変えたいのですが、方法とかあるのでしょうか。 |
|
BINDについて教えて下さい。 soralis7でBIND8.1.6の環境でDNSを構築しています。 named.confにzoneで以下の設定を追加してみましたが記述の間違いみたいなエラーが出ました。 zone "ドメイン名" in { type forward; forward only; forwarders { aa.bb.cc.dd; }; }; soralis9でBIND9.3の環境では正常に動作したのでBIND8.1.6ではzoneのforwardは 出来ないのではないかと思っています。 soralis7の環境でBINDをハ゛ーシ゛ョンアッフ゜したら動作するのではないかと思っていますが、 soralis7の環境で正常に動作するBINDは、どのハ゛ーシ゛ョンでしょうか? また、パッチの適応で動作するなどの情報がありましたら教えて下さい。 |
|
>>4718 こう shシェルのプロンプトでは無理です。 機能がなかったと思います。 表示は出来ても、プロンプトが生成される度に実行されません。 bashを使われてはいかかがですか。 bashのプロンプトで、時間、日付を表示できるエスケープが あったはずです。 |
|
テープにtarで吸い上げたファイルを削除する方法を教えてください。 テープ内にはtarで吸い上げたファイルがいくつかあり そのファイルの一つを任意で削除したい場合です。 お願いします。 |
|
tarコマンドでわからないことがあり質問させていただきく以下に記します。 使用マシン:Solaris系 (UNIX) DDS4のテープに15Gほどのデータを吸い上げました。 tar cvf /dev/rmt/0c /XXX/XXX ただし、他のサーバで25Gほどあいているディスクに tar xvf /dev/rmt/0 で展開しようとしたところ、 読み取りエラーが発生しました。 ネットなどでブロックサイズがXXXという説明を見ましたが 実際どのように対応するのかが記載している部分を見つけることが できず、教えてください。 |
|
Solaris8で質問です。 rloginで特定IP帯からは特定ユーザでログインできないよう、 制限したいと考えています。 既存ツールを使って実現する方法はあるでしょうか。 何か情報ご存知の方がおられましたら、ご教授お願いします。 |
|
Solaris8でzip圧縮した際にパスワードをかけたいと思っています。 現在の環境にはinfo-zip2.2がインストールされています。 過去ログにSolaris 標準の zipは暗号化ライブラリなしで コンパイルされていて、ソースを改造してコンパイルすればよい とあるのですが、 これはzip2.2のソースでしょうか?Solaris8のソースでしょうか? またzip2.2の場合、現時点の最新版zip2.3.2にバージョンアップすれば 暗号化できますでしょうか? よろしければご教授おねがいします。 |
|
NetBSD/macppcにて、一通りの初期設定はすみました。 次は、インターネット接続を試みようとしています。 http://nobug.tukusi.ne.jp/netbsd-guide/trans/netbsd.html の10章あたりを参考に設定しているところなのですが、イマイチよく分かりません。 モデムのデバイスが何なのかが分からないのです。 本体のUSB端子からKeyspan USA-28Xを接続してそこからシリアルポ−トにて モデムにつながっています。 USA-28Xは認識できているようなのですが、肝心のモデムのデバイスが分からず、 上記URLの10.1.3.7にあるようなモデムの試験ができないでいます。 モデムはINSメイトV-30DSUです。 どなたか、御助言、御教授いただけませんでしょうか。 環境は、 Power Mac G4 450MHz AGP Graphics NetBSD/macppcのバ−ジョン3.0 カ−ネルはデフォルト(GENERIC) dmesgとls /devの結果は http://ww2.tiki.ne.jp/~gari/dmesg.txt http://ww2.tiki.ne.jp/~gari/device.txt にあります。 |
|
log4j経由でsyslogに同じメッセージを出力する時に… ちょっとこの掲示板で以下の質問をして良いのかどうかわからないのですが、質問します。 log4jのSyslogApenderを使用してのUnix上マシンでのsyslogに出力する時に、前回と同じ内容のメッセージを出力した場合(前回出力してから30秒経過して出力)、なぜか下記の出力になります。 Nov 9 11:56:39 usrA ccc: repeate test Nov 9 11:56:39 usrA last message repeated 1 times 『last message repeated 1 times』とは、syslogdのログの抑止をするための仕様です。 このメッセージが出るのは問題ないのですが、2回目の出力時刻が30秒たったにもかかわらず、前回と同じ時間を示しています。時刻を出力しているのは syslogデーモンであり、syslogdが呼ばれた時刻を本来出力しています。 log4j経由ではなく、直接syslogdにログ要求を出した場合は、以下の出力なります。 Nov 9 11:56:39 usrA ccc: repeate test Nov 9 11:57:09 usrA last message repeated 1 times いろいろ調べたのですが、原因の糸口すらわかりません。どんなに時間が経過しても前回と同じメッセージの場合、『last message repeated n times』が必ず出力されるので困っています。 なぜこのような現象になるのかわかる方がいましたら、ご教授願います。また回避方法がありましたら教えてください。 環境: log4j1.2.12 JDK5.0 Solaris8 |
|
こんにちは と言う言葉は暗号化したら何で しいねてふ になるのですか? 教えてください。 |
|
Proxy経由でSSL_connectをcallした際にエラーが起こりました。 調べたところコネクション成立までに時間が掛かる場合があると 書かれていましたので、sleepしてみたり、複数回callしましたが 効果はありませんでした。 こちらのNo.289xあたりを参考にしましたが、これも効果がありませんでした。 WindowsXP VC++8 Winsock2 OpenSSL0.9.8aを使用しています。 SSL_connectまでは以下のような流れです。 socket(); connect(); proxyにCONNECT送信、200番を受信 SSL_library_init(); SSL_load_error_strings(); SSL_CTX_new(); SSL_CTX_load_verify_locations(); SSL_new(); SSL_set_fd(); SSL_connect();← "-1"が返ってきます SSL_get_error();← "5"が返ってきます 元々はこちらのソースを参考にしてRedHat上で動いていたものを移植しています。 変更点はsocket関数の戻り値がint型からSOCKET型になったぐらいです。 proxyを使わない場合はSSL_connectが成功し、その後のSSL_writeとSSL_readも成功しています。 この現象が起こったマシンのcygwinにさらに移植をしたところ こちらはproxy経由でもSSL_connectに成功しました。 |
|
質問があります。 とあるアプリケーションがとあるサーバーと通信しているとします。 そのアプリケーションが接続しているサーバーの、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のスクリプト内に記述して、実行したのですが、 処理がとまったというか、何も応答が返ってきません。 |