68user's page 掲示板

Prev< No. 4792〜4868> Next  [最新発言に戻る] [過去ログ一覧]
No. 4792 # べた 2007/05/23 (水) 13:51:17
>>4791 68user

>・ftp コマンドの終了ステータスが >0 ならエラー
>・2xx がひとつもなかったら認証以前で失敗とみなしてエラー
ありがとうございます。

なるほど、2xxがなかったらですか。
確かに、接続エラーということは、レスポンスコードが出てなかった
ので、レスポンスコードがなければで良いかも知れません。
UNIXのOSによるかも知れませんが。
環境は、Solaris8 です。

No. 4793 # 保守見習い 2007/05/24 (木) 22:44:47
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を直接、
編集して正しい順序に設定しようと考えていますが上記ファイルシステムが
マウントされたままの状態で作業を行なっても大丈夫か教えて頂けますでしょうか?

No. 4794 # 68user 2007/05/24 (木) 23:17:24
>>4793 保守見習い
AIX は知りませんが、マニュアルを読む限りでは他 UNIX 系システムの
/etc/fstab と同様に、
    ・ブート時の mount 順序を決める
    ・ブート時の mount の設定を記述する
    ・mount コマンド実行時に各種オプションが省略された場合の
        デフォルト値を記述しておく
という役割のようなので問題ないでしょう。

http://publib16.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/files/aixfiles/filesystems.htm

No. 4795 # 保守見習い 2007/05/25 (金) 23:25:00
>>4794 68user
ご意見ありがとうございます。
ファイルシステムをマウントしたまま、/etc/filesystemsを編集し、
問題なく無事作業が完了しました。

No. 4796 # ふくし 2007/05/26 (土) 15:42:08
おひさしぶりです。
わからないことができると質問しに現れてすみません。
よろしくお願いします。

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;
でずっとやってきていたので・・・。

何かわかりましたらよろしくお願いいたします。

No. 4797 # ふくし 2007/05/27 (日) 23:42:13
追記です。
どうも 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;

でも動作します。
ううーん。

No. 4798 # 通りすがりのプログラマ 2007/06/10 (日) 20:42:48
kqueue の説明の所
timeval は tv_sec, tv_usec で分解能 10^-6 == micro second
timespec は tv_sec, tv_nsec で分解能 10^-9 == nano second
実際の分解能は処理系依存

No. 4799 # べた 2007/06/13 (水) 17:16:21
awk/nawkを使って編集をしています。
ファイルから読み込み、読み込んだ内容を判断して
printf関数を使って表示しています。
例えば
    { \
        printf("XXX:%s\nxxx:%s\nxxx:%s\n・・・・\n", \
        $1,$2,$s・・・・); \
    } \
のように、値の前にコメント付けて表示しています。

この表示内容を追加したところ、
「Word too long」
のメッセージが出力され動かなくなりました。
メッセージの通り、printf関数で表示する内容が長すぎるためだと
思うのですが、原因は、その通りでしょうか。
実際、何バイト(何文字)までなのでしょうか。
また、対処するにはどうしたらよいのでしょうか。

環境は、
    Solaris8、csh

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 4800 # べた 2007/06/13 (水) 17:30:24
>>4799 べた
補足です。

メッセージの通り1行が長いのがいけないのではと
フィールドごとに表示しようとしたのですが、
例えば
    { \
        printf("xxx:%s\n",$1); \
        printf("xxx:%s\n",$2); \
        printf("xxx:%s\n",$3); \
            :
            :
    } \

やはり、
「Word too long」
のメッセージが出力され動かなくなりました。

No. 4801 # おーさん 2007/06/13 (水) 17:53:52
はじめまして。
最近openSSLを使用することになったので勉強しています。
非常にいい内容で助かっています。

それでですねrsaを使用する際のサンプルを一度コンパイルしてみたのですが…
RSA_generate_keyをはじめとする、約25個の関数が未定義と起こられてしまいました…
これはハードウェア的な問題なのでしょうか?

ちなみにlinuxにtelnetで接続しながら作っています。
よろしくお願いいたします。

No. 4802 # zsh 2007/06/13 (水) 19:20:15
>>4800 べた
awk スクリプトを別ファイル(以下の例では hoge.awk)にして
    $ awk -f hoge.awk fuga.txt
のようにしてもダメですか?

No. 4803 # zsh 2007/06/13 (水) 19:21:36
>>4800 べた
書き忘れましたが、別ファイルにする場合は
行末の "\" は削除してください。

No. 4804 # pixy 2007/06/15 (金) 18:57:49
はじめまして。
サーバ関係の情報を探していて、ここにたどりつきました。
下記のようなPOPサーバの改造は可能でしょうか。
ネット上を探してみたのですが、情報が少なく、
参考になるサイト等ご存知でしたら、ご教授ください。
よろしくお願い致します。

【現状】
POPクライアントの拡張コマンド内で、
ユーザID等をべた書きして、サーバにリクエストしている。
【改造】
現在クライアントにて上記のべた書きしている箇所をプロパティファイル
とする。POPサーバを改造し、このファイルを読み込むようにする。

No. 4805 # べた 2007/06/16 (土) 12:30:15
>> 4803

ありがとうございます。
上手くいきました。

No. 4806 # zsh 2007/06/16 (土) 21:33:25
>>4805 べた
それで OK だったということは
awk ではなく csh の制限に引っかかっていたようですね。
恐らく awk のスクリプト部分を \ で複数行つなげていたので
一行に記述できる制限(1024文字)を超えたのでしょう。

No. 4807 # Perl使い 2007/07/07 (土) 03:21:16
はじめまして。
Perl CGIで基本認証をクリアーするやり方は分かっているのですが、
IEに事前に基本認証をクリアーさせるための設定方法が分かりません。
perlから、IEに対して、ヘッダーとして下記を書き込んでも、だめなんですね。
print "Authorization : Basic Base64文字列\n";
かならず、認証画面が表示されます。
IEに何を書き込めば良いのでしょうか。ご教示をお願いします。

No. 4808 # 68user 2007/07/15 (日) 01:16:20
>>4798 通りすがりのプログラマ
ありがとうございます。バグ ID 28 として記載いたしました。
近日中に直します。
http://spreadsheets.google.com/pub?key=pAr6UVKFG0jthbVP572cKEA&output=html

No. 4809 # mac 2007/07/19 (木) 22:04:10
はじめまして、'斎藤 誠'と申します。
初めての投稿で質問する不躾をお許しください。

とある理由から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の場合とは
逆に前者が正常に応答して後者はエラーとなります。

今日一日費やしてみましたが、解決できません。どなたかにご教授願いただきたく
投稿しました。なお、初心者ですので何卒お手柔らかにお願いいたします。

No. 4810 # 68user 2007/07/20 (金) 01:36:33
>>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
を使う手もあります。

No. 4811 # mac 2007/07/20 (金) 11:02:07
早々のお返事、有難う御座います。
エラーは「認証失敗: 」だったのですが、
ご教授の通りデバッガつけて起動させて見ましたところ

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などもやってみるつもりですのでまたお世話になるかもしれません。
そのときはまたお願いいたします。

No. 4812 # mac 2007/07/20 (金) 12:19:30
Net::POP3 の検索でみましたら
login ( [ USER [, PASS ]] )
USER、PASSコマンドの両方を送信します。...
メールボックスのなかのメッセージ数を返します。
しかしサーバーにメッセージが何もなければ文字列"0E0"を返します。
これはブール値コンテキストでは trueになりますが、
数値コンテキストでは0です。
指定したユーザがサーバーで認証できなければ、undefが返されます。
-----------------------------------
とあったのですがバグということでしょうか。
Mailが無いことを確認できる方法は有りますでしょうか。
その場合はundefのエラーを回避するというスクリプトを
書けばよいようにも思っています。

No. 4813 # 68user 2007/07/20 (金) 13:03:08
>>4811 mac
pop3-client-Net::POP3.pl の
    if ( $auth_check == undef ){
は誤った書き方で、正しくは
    if ( ! defined $auth_check ){
です (以前は undef かどうかのチェック方法を誤解していたため)。

これだとどうなりますか。

No. 4814 # mac 2007/07/20 (金) 18:33:55
>>4813 68user
> if ( ! defined $auth_check ){
バッチリです。それにしてもすばやいレス、本当に有難う御座います。

No. 4815 # mac 2007/07/20 (金) 20:20:37
たいへん心苦しいのですが別のことをお聞きしてよろしいでしょうか。
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);

No. 4816 # 68user 2007/07/21 (土) 02:54:23
>>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";

No. 4817 # mac 2007/07/21 (土) 23:19:18
>>4816 68user
重ね重ね、有難うございました。

No. 4818 # ふくし 2007/07/24 (火) 21:20:42
>>4810 68user
さん、

そうなんですよ。use は引用符をつけてはいけないが use base だとダメ、
no strict 'refs'; だとあらゆる裸のワードを勝手にクォートするらしいです。
お騒がせしました。

No. 4819 # 68user 2007/07/25 (水) 01:30:27
>>4818 ふくし
わかっておられるかもしれませんが、use base は built-in な文法ではなく
ただ base.pm を use しているだけなので、base 内の sub import の引数として
渡されるから、ということですね。strict も実体は strict.pm なので同様に
strict refs ではなく 'refs' としなければならないと。

個人的には、ここまで汚い造りにするかねぇ、という感じです。いちおう
つじつまをあわせてるのはすごいですが。

No. 4820 # べた 2007/08/01 (水) 09:33:24
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

No. 4821 # なし 2007/08/03 (金) 23:13:29
UNIXの環境変数のLANGに使用する言語の指定に
「japanese」があるのですが、これは、日本語
が使えるのですか。それとも日本語のSJISが
使えるのでしょう。
また、UNIXのOSがどのコードなのかどこを見れば
わかるのでしょうか。
また、EBCDICコードがあるのですが、これを使うには
どうしたらよいのでしょうか。

No. 4822 # 68user 2007/08/07 (火) 15:41:08
>>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 に変換できます。商用のアプリケーションも
いくつか出ているようです。

No. 4823 # 68user 2007/08/07 (火) 15:43:08
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
を追加しました。

No. 4824 # べた 2007/08/09 (木) 15:50:10
>>68user
ありがとうございます。

>% sh -x スクリプト名
で確認してみました。
DAYとDATEは誤記ですが、DAYに直しましたが結果は同じでした。

awk -v DAY=$DATE'/^DAY/,/\\r/ {print $0}' ${LOG_FILE}
パターンマッチングのところが、引数で渡した値ではなく、
”DAY”という文字列でした。(文字列と言い切れるのかどうか。?)

No. 4825 # 68user 2007/08/10 (金) 11:48:35
>>4824 べた
まずはコマンドラインから awk を叩いて、正しい結果を取得できるように
なるところから始めましょう。シェルスクリプトはその後。

あと
>>4822 68user
> 具体的には以下の問題があります。
を直さないと動きません。念のため。

No. 4826 # べた 2007/08/10 (金) 15:37:58
>>4825 68user

色々とありがとうございます。
試してみます。

No. 4827 # べた 2007/08/10 (金) 16:38:59
>>4825 68user

やはり、「^」を指定しているので、行の先頭が、DAYという
文字列から始まっているのを探していました。
試しにファイルの方を修正し、日付を「DAY Aug 2」としたところ
表示されました。
マッチングのところに、変数を展開できないのでしょうか。

nawk -v DAY="Fri Aug 10" '/^DAY/,/\\r\\n/ {print $0}' /tmp/kekka_log.log

No. 4828 # なし 2007/08/13 (月) 21:52:22
>>4822 68user

返事遅れてすみません。
ありがとうございます。

No. 4829 # 68user 2007/08/15 (水) 10:31:38
>>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" です。

No. 4830 # 通りすがり 2007/08/15 (水) 10:44:32
「リダイレクト」についての説明の中の

『「リダイレクトは右に書いたものから順に評価されるから」は間違いである。』

のくだりが分かりやすくてつい書き込んでしまいました。
他のサイトは上記のような説明で終わっている所があったのですが、
なんとなく「ん?」と違和感が残ってました。
で、このサイトの内容ですっきりです。ありがとうございました。
ドメインも素敵です(笑)

No. 4831 # 68user 2007/08/15 (水) 11:36:41
>>4830 通りすがり
ありがとうございます。ついでなので書いておくと、先頭に書いてもいいです。
    >/dev/null 2>&1 ls foo.txt

No. 4832 # べた 2007/08/15 (水) 15:00:06
>>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 ・・・

見たいになります。

No. 4833 # 68user 2007/08/15 (水) 17:15:01
>>4832 べた
> ファイルの最後まで見るというつもりでした。
その挙動でよいのであれば、問題ないと思います (実質機能していないと
思うので、書き方としてはまずいですが)。

> 日付が二行でます。
print $0 を削除するなどしてください。

No. 4834 # べた 2007/08/31 (金) 16:07:37
>>4833 68user
お礼遅れてすみません。
ありがとうございました。

No. 4836 # べた 2007/09/27 (木) 10:05:21
前にも同じ質問をしたのですが、
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日前のファイルが削除できるように
したいのですが、どのようにすればよいか、
教えてください。

No. 4837 # 68user 2007/09/29 (土) 14:20:52
>>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

No. 4838 # べた 2007/10/01 (月) 19:50:45
>>4837 68user
ありがとうございます。
返事遅れてすみません。

一度、内容を読んで、確認してみます。
それで、再度、質問します。

No. 4839 # べた 2007/10/04 (木) 09:37:55
>>4837 68user
ありがとうございます。
期待した結果が得られました。

No. 4840 # まるこ 2007/10/11 (木) 10:40:25
はじめまして。
以下のページを見て質問させていただきます。
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を使わないと駄目ですとは言われていません。

よろしくお願いします。

No. 4841 # 68user 2007/10/13 (土) 03:22:19
>>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 キー押下でいけると思います。

No. 4842 # yuki 2007/10/16 (火) 20:25:23
はじめまして。
以下のページを参考にさせていただきまして、質問させていただきます。
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)) {

こういった場合はどのように対処したらよいでしょうか。
よろしくお願いします。

No. 4843 # 68user 2007/10/16 (火) 20:41:06
>>4842 yuki
そのページでも紹介していますが、文字単位でマッチさせるために
    http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
という工夫をしています。

PHP であれば mb 系の関数を使えば文字単位で切り出せると思いますが、
いわゆる機種依存文字に対応しているかどうかわからないのでまずは
試してみてください。対応していなければ、上記のようなやり方で
1文字ずつ取り出す必要があるかもしれません。

No. 4844 # yuki 2007/10/19 (金) 14:15:48
>>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様、ありがとうございました。

No. 4845 # 2323 2007/10/19 (金) 15:22:54
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という記述は
修正されたほうが良いかと思います。

No. 4846 # yuki 2007/10/19 (金) 16:11:44
>>4844 yuki
何度も申し訳ありません。
4844の記述ではうまく動かないですね…。
機種依存文字が文頭にある場合のみ動作して
2文字目以降にある場合にはマッチしてくれないです。
正規表現についてもう少し勉強してきます。

No. 4847 # 68user 2007/10/31 (水) 00:33:11
>>4846 yuki
ダメですかねぇ? あっているような気がしますが。
$_POST['adrs']・$check のデータを明示いただければ何かしら回答できるかもしれません。

>>4845 2323
よく理解していないので確認させていただきたいのですが、
    「あくまで 5.1-STABLE を追っかけているに過ぎない」

    「あくまで '5.1 security fix branch' (RELENG_5_1) を追っかけているに過ぎない」
とすれば正確な表現と言えるでしょうか。

No. 4848 # yino [E-mail] 2007/11/09 (金) 03:18:57
はじめまして。
突然ですが、ご教授ください。

私は今、大学4年生で卒業研究をしているのですが、ネットワークプログラムを作る必要が出てきてしまいました。
ですが、私はプログラミングは全くの初心者で、どの言語を使えば良いのか、何から始めればいいのかもよく分かりません。
どなたかアドバイスや、参考となりそうなプログラムやサイトを教えて頂けませんか?

OSはKNOPPIXで、アドホックモード(OLSR)での動画の転送をしたいです。
転送さえできればいいとのことなので、プログラム自体は簡単なものでいいようです。

場違いな質問かもしれませんがよろしくお願いいたします。

No. 4849 # バンガード 2007/11/09 (金) 09:14:02
>>4848 yino
残念ながら聞いた事もないOSですので、お力になれません。
ただ、この様な場合、ひたすら検索サイトでキーワードを入れて検索してみてはいかがですか?
就職しても、この辺りは変わりません。
まずは、片っ端から検索して自分の目的としている情報が載っているサイトを探してみましょう。

No. 4850 # 68user 2007/11/09 (金) 09:38:11
>>4849 バンガード
OLSR はプロトコルのようです。

>>4848 yino
わたしなら
    1. まわりに言語の有識者がいるか
    2. その言語向けのネットワークプログラミング関連の書籍が出版されているか
    3. ネットワークプログラミング向きか
    4. プログラミング初心者が扱いやすい言語か
という観点で考えます。

1 は、まわりを見渡してください (Java が多いのではないかと想像しますが)。
これが最重要だと思います。

2 は、Java が一番、次点が Perl でしょうか。PHP・Ruby はこの点は弱い。

3 は、本質的にはどの言語でも同じでしょうが、PHP などは無駄にハマりやすそうな
気がします。

4 は、まぁ Java ではないかと。


個人的には、Java がイチオシ、次点が Perl です (自分が書くなら Perl か Ruby)。

No. 4851 # yino [E-mail] 2007/11/09 (金) 14:51:27
>>4850 バンガードさん、 >>4849 68userさん
ありがとうございました。
とりあえずは周りの人から話を聞いてみたいと思います。
あとはJavaの本を読んでいきたいと思います。

また壁にあたったときはここに来ると思いますので、よろしくお願いします。

No. 4852 # aki 2007/11/12 (月) 15:55:35
はじめまして。
いきなりですが教えてほしいことがあります。

大学の課題でサーバの存在するマシンのカレントディレクトリにおけるファ
イル一覧を表示する。
<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);
}

No. 4853 # 68user 2007/11/12 (月) 16:07:19
>>4852 aki
> うまく実行できません。
何をどうしたらどうなるのか明示してください。

No. 4854 # aki 2007/11/12 (月) 16:13:39
>>68userさん
すみません。
実行した後にLIST、GET ファイル名、PUT ファイル名、QUITなど打ち込んでもなにも
おきないんです。

No. 4855 # 68user 2007/11/12 (月) 16:59:12
>>4854 aki
提示いただいたプログラムはサーバ側のプログラムであって、
    1. サーバを実行する
    2. 別途 telnet コマンドなどを用いてクライアント側からサーバにアクセス
          (telnet localhost 10092 など)
    3. そこで LIST などをタイプする
というものですが、それは理解した上での質問でしょうか?

もし理解していないのであれば、まずはまわりの人に聞くとか、資料を
もっと読むなどして概念を理解してからでないと効率が悪いと思います。

プログラム自体については、telnet 上から
      LIST:(Ctrl-D)
などと変な送信の仕方をする必要がありましたが、一応動くようです。

No. 4856 # aki 2007/11/12 (月) 17:08:01
>>4855 68userさん
ありがとうございます。
よく理解できてなかったみたいなのでもう少し友達に聞いてみます

No. 4857 # aya 2007/12/06 (木) 01:00:19
今度大学の課題でマルチスレッドサーバを作成することになったので、
http://x68000.q-e-d.net/~68user/net/echo-4.html
を参考にマルチスレッドサーバについて勉強している者です。
そこで、素朴に疑問があるのですが、
このページに書いてある内容は、本当にマルチスレッドなのでしょうか?
マルチスレッドというと処理が平行して行われるという認識なのですが、
この実装では多数のソケットからデータが到着したソケットを順次選択して
処理をする、というように見られるのですが・・・。
これはマルチスレッドサーバと呼んでもよろしいのでしょうか?

No. 4858 # masa 2007/12/09 (日) 08:57:28
HTTP1.1でKeepAliveでHTTPSサーバに接続した場合に、サーバからの
レスポンスの長さが短い(500バイト以下程度)場合、クライアントが
タイムアウトとなりサーバからのレスポンスが読めません。
サーバ・クライアント共にFEDORAを使用しており、クライアントは
TCP/IPのソケット、OpemSslを使って作成しています。
対処方法は何かありますでしょうか?

No. 4859 # 68user 2007/12/12 (水) 18:59:29
>>4857 aya
どうなんでしょうか。以前に同様の指摘があった場合は
>>3223 int
>>3224 68user
>>3226 Netboy
>>3227 68user
というところで止まっています。その後、わたしの知識は増えていないため、
まだ疑問のままです。

>>4858 masa
ソースを提示願います。


なお、本日より数日〜数週間の間、返事がしにくい状況になりそうなので、
ご了承ください。

No. 4860 # masa 2007/12/13 (木) 00:31:00
>>4859 68user さん

解決しました。
読み込もうとしているバッファサイズが大きすぎたようです。

No. 4861 # toshi7 2008/01/11 (金) 22:42:16
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に問題ありなど…。
お願いいたします。

No. 4862 # 68user 2008/01/12 (土) 11:29:45
>>4861 toshi7
思いつくのは

- remsh 後のカレントディレクトリが異なる
- ログイン後の環境変数が異なる
- 出力先のパーミッションが異なる
- HiRDB のコマンドの場所が異なる
- HiRDB のコマンドがエラーとなっている
        → HiRDB を実行するのではなく、適当な自作プログラムを実行し、
              起動されているかどうかログ等に記録する
- 標準エラー出力を閉じているので、HiRDB の標準エラー出力への
    出力が出力されていない (もしくは write(2) でエラーになるため
    途中でこけている)

くらいでしょうか。

No. 4863 # toshi7 2008/01/17 (木) 22:57:54
>>4862 68user
68userさん
ありがとうございます。
調査を進めているところですが、HiRDBのコマンドでエラーになっている可能性が大です。
また、今週or来週中にもremshのテストができる予定ですので、
# remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE 2>&1
で標準エラーを出力してみます。
ちなみにサーバ側の"last | more"の結果を見る限りremsh自体は届いているようでした。

また、テストの結果不明点がありましたら、質問させていただいてもよろしいでしょうか?
宜しくお願いします。

No. 4864 # 68user 2008/01/20 (日) 20:23:55
少しずつですが
    UNIXの部屋
        http://x68000.q-e-d.net/~68user/unix/
の各コンテンツを手始めに、Web 全体のデザインを変更していきます。
もし不具合があれば教えていただければ幸いです。

No. 4867 # Ponta [E-mail] 2008/01/27 (日) 13:07:52
68userさま。いつも、初心者に有り難いサンプルをたくさんご提供いただき
ありがとうございます。
HttpClientHttpURLConnectionを走らせたところ、ブラウザで見ると日本語の部分
が、文字化けしています。yahooのページを始め、いくつか試したのですが同じ
状態です。化けないようにするにはどうしたら良いのでしょうか?
お忙しい中恐縮ですが、どなたかご教示下さい。

No. 4868 # 68user 2008/01/30 (水) 13:41:40
>>4867 Ponta
http://x68000.q-e-d.net/~68user/net/java-http-url-connection-1.html
ですよね?

「ブラウザで見ると」の意味がわかりません。実行例にあるとおり、
コマンドラインからの実行を前提としています。

Prev< No. 4792〜4868> Next  [最新発言に戻る] [過去ログ一覧]