68user's page 掲示板

Prev< No. 4733〜5096> Next  [最新発言に戻る] [過去ログ一覧]
No. 4734 # ひよこ 2006/12/24 (日) 16:42:22
質問があります。

とあるアプリケーションがとあるサーバーと通信しているとします。
そのアプリケーションが接続しているサーバーの、IPとPort番号を調べるにはどうすればよいのでしょうか。

No. 4735 # tkoba 2006/12/26 (火) 13:10:58
>>4734 ひよこ

netstat コマンドでどうでしょう。

http://x68000.q-e-d.net/~68user/unix/pickup?keyword=netstat&target=command

No. 4736 # tkoba 2006/12/26 (火) 13:13:06
>>4731 wssjf120

「シーザー暗号」で調べてみてください。

No. 4737 # moto 2006/12/27 (水) 14:24:44
こんにちわ 
いくらかでもヒントが欲しくて投稿しました。

グーグルマップの 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 のような任意の属性名を定義する方法というか
それに関して何らかの情報があれば教えていただけませんでしょうか。

No. 4738 # 68user 2006/12/27 (水) 15:56:19
>>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>
---------

No. 4739 # 68user 2006/12/27 (水) 16:09:01
>>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).

の通りにやってみるとどうなりますか?

No. 4740 # moto 2006/12/27 (水) 19:11:48
68user 様
ヒントありがとうございました。
  
グーグルマップを制御しているmaps2.68.jsファイル内にもgetAttribute,setAttributeの関数が出て
いますのでこれらが鍵なんですね。
一筋の光明が見えてきた気がします。

でも、maps2.68.jsファイルは170キロバイトもあるのに一行しかありません。
ですからコメントなぞ一つもなくすごい代物です。
解読するのに改行とインデントを入れる作業をしているのですが、
これがまた気の抜けない大変な作業です。
グーグルさんも簡単には教えてくれないんですね (^_^.)

ありがとうございました。

No. 4741 # 68user 2006/12/27 (水) 21:48:50
>>4740 moto
どこかに解説サイトがあったような…と思ったら、Google Suggest でした。
    http://slashdot.jp/developers/article.pl?sid=04/12/18/1033242

Maps の解説は見たことはありませんが、ある程度なら探せばあるかもしれませんね。

No. 4742 # 68user 2006/12/29 (金) 05:34:20
http://X68000.q-e-d.net/~68user/unix/ の検索は OR 検索だったのですが、
AND 検索に変更しました。そのために結構な量の改修を行ったのですが、例に
よって怪しげです。もし不具合があればお教えいただけると幸いです。

No. 4743 # びすこ 2007/01/09 (火) 17:18:24
>> 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の方を使うことにします。

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

No. 4744 # peace 2007/01/12 (金) 17:12:51
初めて書き込みさせていただきます。
http://x68000.q-e-d.net/~68user/net/rsa-1.html
に書かれているrsa1.cをVisal Studio 2005で実行させたいのですが、可能でしょうか?

No. 4745 # 68user 2007/01/12 (金) 17:29:47
>>4744 peace
そのままでは動かないので、
    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=981427&SiteID=7
などを参考にしてください。

No. 4746 # hornets 2007/01/14 (日) 23:42:07
初めまして、hornetsと申します。
このサイトには、OpenSSLを用いたRSA暗号のプログラムが掲載されていますが、
OpenSSLを用いてElGamal暗号もできるのでしょうか?
教えていただけたら幸いです。

No. 4747 # 68user 2007/01/15 (月) 15:31:12
>>4746 hornets
> OpenSSLを用いてElGamal暗号もできるのでしょうか?
現時点の OpenSSL には ElGamal は実装はされていません。

OpenSSL の ML を探すと、実装が欲しいなら
    http://mixmaster.sourceforge.net/
を見れば、とありました。

# http://marc.theaimsgroup.com/?l=openssl-users&m=92476310717523&w=2

No. 4748 # Kenichi Maehashi [E-mail] 2007/01/15 (月) 23:00:02
初めまして。Kenichi Maehashi と申します。
いつもネットワーク関連の情報を拝読させていただいております。

さて、
>> http://x68000.q-e-d.net/~68user/net/module-pop3.html
を参考にさせていただきながら、POP3 クライアントを書いたのですが、
実行すると、カレントディレクトリに msg-xxxxx-x.txt というような
テキストファイルが出力されてしまいます。(x は数字です)

これは Net::POP3 モジュールの仕様なのでしょうか。
または、出力をしないような設定方法はありますでしょうか。

ご教示いただければ幸いです。
よろしくお願いいたします。

No. 4749 # 68user 2007/01/16 (火) 11:18:14
>>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 にすると何かわかるかもしれません。

No. 4750 # Kenichi Maehashi [E-mail] 2007/01/18 (木) 00:56:08
>>4748 68user さま
有り難うございます。
コードを削って確認してみたところ、併用していた MIME::Parser モジュールが
出力するファイルであることが分かりました。確認不足で申し訳ありません。
MIME::Parser の出力するメッセージファイルは出力しないよう設定できないのでしょうか。。。

重ね重ね申し訳ございませんが、何卒宜しくお願い致します。

No. 4751 # 68user 2007/01/19 (金) 10:31:02
>>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.

No. 4752 # Kenichi Maehashi [E-mail] 2007/01/19 (金) 22:18:37
>>4748 68user さま
お世話になっております。
ご指摘の通り、$parser->output_to_core(1); で解決できました。
このページはチェックしていたのですが、見落としておりました。。。申し訳ありません。
本当に有り難うございました。

No. 4753 # サーバにUPしたプログラムと通信したい [E-mail] 2007/01/20 (土) 15:36:09
はじめましてwここのHPをみてソケット通信を勉強しています。
よろしくお願いします。

perlを使ってサーバプログラムとクライアントプログラムを作り
ソケット通信をしています。
ActivePerlを使用し、ローカルマシンでは通信できているので
実際にサーバプログラムをサーバにUPしてテストしたいと思い
プロバイダからもらった領域にFTPでUPしました。

で、質問なのですが
サーバプログラムが仮に http://www.aaa.com/user/test.pl という
アドレスにある場合
クライアントプログラムの
IO::Socket::INET->new( PeerAddr ... );
のPeerAddrはどう変えればいいのでしょうか?
※モジュールを使ってみようを参考にしています。

またほかにも何かしなければいけないのでしょうか?
よろしくお願いいたします。

No. 4754 # 68user 2007/01/20 (土) 18:00:20
>>4753 サーバにUPしたプログラムと通信したい
$socket = IO::Socket::INET->new(
    PeerAddr => 'www.aaa.com',
    PeerPort => '80',
    Proto => 'tcp');
  );
でよいです。

http://perldoc.perl.org/IO/Socket/INET.html に書き方のサンプルが
あるので、ざっと眺めてみてください。

No. 4755 # かみゅ [E-mail] 2007/01/20 (土) 19:01:34
ありがとうございます。

PeerAddr => 'www.aaa.com'
を指定した場合
user/test.pl
この部分はどうなるのでしょうか?
特に指定しなくても通信できるのでしょうか?

No. 4756 # 68user 2007/01/21 (日) 19:50:40
>>4755 かみゅ
IO::Socket はソケットのモジュールです。その上に HTTP を流すのであれば
    HTTP クライアントを作ってみよう(1)〜(4)
を読んで、送信すべき HTTP リクエストはどんなものなのかを調べてください。

No. 4757 # matsumoto 2007/01/24 (水) 12:04:11
初めまして、書き込みさせていただきます。
現在RSAについて学んでおり、非常に有用な情報としてこちらのHPを拝見させていただきました。
さて、http://x68000.q-e-d.net/~68user/net/rsa-1.htmlに記載されているrsa-1.cをコンパイル
してみたところ、openssl関連のヘッダファイルが読み込まれない旨のエラーが返され、
実行できません。実行環境としてVineLinux3.1にてgccコンパイラを用いており、opensslの
バージョンは最新版と思われる0.9.8をインストールしております。
対策方法をご教授いただければ幸いです。よろしくお願いします。

No. 4758 # 68user 2007/01/24 (水) 12:21:12
>>4757 matsumoto
まずは rsa.h や engine.h のありかを探してください。
例えば /usr/local/include/openssl/rsa.h が存在するなら
    % gcc -I /usr/local/include rsa-1.c
とします。

No. 4759 # ST 2007/01/28 (日) 15:46:17
はじめまして。STと申します。
CGI初心者です。
質問させていただきます。
「静的な画像表示」のところで、該当するソースをコピーして
サーバーにアップした後http://〜cgiと入力しGIFファイルを表示させようとすると
「GIF89aX」と表示されます。
パーミッションはOKで画像ファイルは存在します。
解決方法を教えていただけますと幸いです。
よろしくお願いします。

No. 4760 # 68user 2007/01/28 (日) 16:45:43
>>4759 ST
http://chaichan.web.infoseek.co.jp/qanda/qa7041.htm
に一本化ということで。

No. 4761 # 68user 2007/02/13 (火) 22:13:46
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;

No. 4762 # べた 2007/02/15 (木) 16:05:07
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シェル

No. 4763 # 68user 2007/02/16 (金) 00:33:04
>>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}'
などの方法がよいような気もします。

No. 4764 # べた 2007/02/16 (金) 13:06:41
>> 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}'
これが、一番よい方法になるのですかね。

No. 4765 # 68user 2007/02/16 (金) 15:23:55
>>4764 べた
> 直下のファイルがでませんでした。
FreeBSD では表示されました。Solaris の find は出ないのでしょうか。

> 実際には、パスに、’/’が2個以上含まれるているので無理かと。
「3個以上」の誤りでした。

ベストなのは「/tmp/ 直下に置くといういまいちな仕様を直す」だと
思いますが、それができれば苦労してないんでしょうね。

No. 4766 # べた 2007/02/16 (金) 17:48:15
>>4765 68user

ありがとうございます。
> find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print
ですが、
期待したものがでませんでした。
「*.csv」が表示されず、それ以外の全てがでました。

lsコマンドで上手く行きそうなので、この方法で試します。

No. 4768 # 庵 2007/02/18 (日) 00:56:54
>>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」が表示されず、それ以外の全てがでました。
使い方、間違ってませんか。?

No. 4769 # beck 2007/02/18 (日) 17:56:20
初めまして!beckと申します。
このサイトでOpenSSLを用いたRSA暗号を実装例を紹介していますが、
鍵生成などの工程では、どれほどの時間を要するのでしょうか?
もちろん、PCのスペックに左右されることは承知していますが・・・

No. 4770 # べた 2007/02/19 (月) 11:54:58
>>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以外の環境がないのでなんともいえませんが。

No. 4771 # zxcv 2007/03/07 (水) 16:19:16
文字コードとエンコーディング (1)
http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html

上記のページ、とても良くできていると思います。 ありがとうございます。

しかしながら、「エンコーディングとは」の項の先頭付近にある「他の文字と同時に扱う場合のことは考えられていません」の『文字』は『文字集合』とするべきでは無いでしょうか?

# 入門学習のために読む人にとって、重要な部分だ思います。

No. 4772 # 68user 2007/03/08 (木) 03:58:39
>>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 です。

No. 4773 # べた 2007/03/17 (土) 17:20:13
readコマンドを使ってファイルから読み込みを行っています。
読み込んだ件数を出力しようとしているのですが、どうしても
0件となってしまいます。
どこがいけないのでしょうか。どう直せばよいのでしょうか。

-----------------------------------
#!/bin/sh
#

FILE="/tmp/sample.csv"

i=0
while read LINE
do

        編集処理

        表示処理

        i=`expr ${i} + 1`

done < ${FILE}

echo "${i} 行読み込みました。"

No. 4774 # べた 2007/03/18 (日) 11:26:27
>>4773 べた

whileとかforのループ内で使用した変数は、
ループ終了後(ループを抜けた後)参照する
ことはできないのでようか。

できるとした場合、どうすればいいのですか。

No. 4775 # 庵 2007/03/19 (月) 23:45:28
>>4774 べた
私もあまり詳しくないのでしりません。
kshでできたような。

http://search.luky.org/linux-users.9/msg06099.html

で、似たことが質問されていますので確認してみては。

No. 4776 # zsh 2007/03/20 (火) 10:37:41
>>4774 べた
最近シェルスクリプト触ってないんですが、
多分これでOKかと。

------
i=0
exec 3<&0 0<$FILE
while read LINE; do
        :
done
exec 0<&3 3<&-
echo $i
------

No. 4778 # べた 2007/03/20 (火) 17:35:18
>> 4776

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

また、以下でも出来ました。

-------------
i=0
exec < ${FILE}
while read LINE
do

        echo ${LINE}
        i=`expr ${i} + 1`

done

echo ${i}
-------------

No. 4779 # める 2007/03/31 (土) 16:14:20
はじめまして。
質問があります。

よくあるポートモニターなどはどのように作っているのでしょうか。
また、自分のパソコンが通信しているデータを見ることができますか?

No. 4780 # べた 2007/04/10 (火) 16:24:19
Perlなのですが、sync(fsync?)を使って
書き込みを実現しようとしています。
書き込み後、正しく書けたか、ファイルの比較や
サイズの取得をやろうとしています。

今一、Perlのモジュールとかライブラリとかが
わかりません。
参考になるものありませんか。
また、どのようにすればよいですか。

No. 4781 # べた 2007/05/17 (木) 16:52:39
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

No. 4782 # 68user 2007/05/17 (木) 22:34:02
>>4781 べた
http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html
がわかりやすいかと思います。
    -perm -mode
        mode で指定されている許可属性ビットのすべてがファイルでも立っていたら真。
    -perm +mode
        mode で指定されている許可属性ビットがファイルでどれか一つでも立っていたら真。

No. 4783 # のみ 2007/05/19 (土) 03:02:10
おしえてください

No. 4784 # のみ 2007/05/19 (土) 03:30:10
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サーバのアドレス 
                  };

No. 4785 # のみ 2007/05/21 (月) 01:06:52
解決しました。
recusionがnoになっていたようです。

No. 4786 # べた 2007/05/21 (月) 12:22:23
>4782
ありがとうございます。
読んでみます。

No. 4787 # べた 2007/05/21 (月) 12:22:47
>>4782 68user
ありがとうございます。
読んでみます。

No. 4788 # べた 2007/05/21 (月) 13:00:51
シェルで、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.

No. 4789 # 68user 2007/05/21 (月) 23:01:43
>>4788 べた
ftp コマンドを使う限りは
> すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ
> があるかないかをgrepでみるしかないのでしょうか。
が無難です。また、どのようなエラーがどこで発生したかをプログラム上で
突き止めようとせず、行頭の 4xx か 5xx にマッチするものがあれば全て
エラーとすることをお勧めします。

これ以上を求めるならば、Perl + Net::FTP モジュールなどで FTP クライアントを
作成するのがよいとわたしは思います。

No. 4790 # べた 2007/05/22 (火) 18:48:35
>> 4789
ありがとうございます。
必要な、エラーすべてをgrepしようと考えていました。
行頭の 4xx か 5xx にマッチするものがあれば全てエラー
とするでやつてみます。

ちなみに、接続エラー(open)ですが、これは、4xxとか5xx
にならないのですが、メッセージの内容で見た方がよいの
でしょうか。

No. 4791 # 68user 2007/05/23 (水) 02:27:15
>>4790 べた
> ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないの
> ですが、メッセージの内容で見た方がよいのでしょうか。
数年ほど前に同じようなことをやっていましたが、そのときはどうやったの
だったか…。
    ・ftp コマンドの終了ステータスが >0 ならエラー
    ・2xx がひとつもなかったら認証以前で失敗とみなしてエラー
のいずれかだったような気がします。

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
ですよね?

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

No. 4869 # しも [E-mail] 2008/02/06 (水) 10:33:11
初めて質問させていただきます。
12月から本格的にUNIXの勉強を始めて、現在はHP-UXの業務に就いております。
参考資料を購入したり、netで調べるもどうしても見つからない。。

質問内容:
ファイルサイズをbyteで表示させるコマンドが知りたいです。

データ移行作業をしているので、移行前マシンと移行後のマシンでの
容量チェックをしなくてはいけなくて。。。
大変初歩的質問で申し訳ないのですが、ご教授下さい。

※HP-UX 11iを使用しております。

No. 4870 # 68user 2008/02/06 (水) 11:42:01
>>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

No. 4871 # しも [E-mail] 2008/02/06 (水) 17:47:36
>>4870 68user
ありがとうございます。
ファイル個々のサイズはcksumやwcで確かに確認できました。
ディレクトリのサイズはbyte表示させる事は不可能なのでしょうか?

duを使用しましたが、KBだったのとブロック単位でした。

No. 4872 # 68user 2008/02/06 (水) 20:57:05
>>4871 しも
HP-UX に限らず、du ではブロックカウント機能しかないと思います。
    http://sonic64.com/2004-05-26.html
のように自前でカウントするしかないでしょう。

No. 4873 # 大臣 2008/02/07 (木) 15:45:40
cygwinでbash not find :bash.exeというエラーがでんだけどどうすれば
いいか教えろ!!!!!どーせ暇だろ!ニート諸君、俺様の変わりに調べろ!
パスの設定はしてある。
俺も暇じゃないから5分やるですぐ調べて返信しろ。貴様らは蛆虫だ。
./bashrc等も完璧
しかーーーーし動かん。楽勝だて。

No. 4874 # ふくし 2008/02/08 (金) 17:11:14
お世話になります。
質問のときだけ現れてスミマセン。
Perl で、

filename -> title
aaa.html -> aaaについて
bbb.html -> bbbについて
ccc.html -> cccについて

みたいなタブ区切りのテキストを読んで処理するとき、カンタンには

while (<>) {
    ($filename, $title) = <>;
}

のようにすると思いますが、1行目に見出しが入っていて、
これを捨てたいと思います。

今は、

$trash = <>;
while (<>) {
    ($filename, $title) = <>;
}

のようにしていますが、
$trash が1回しか使われていませんが書き間違いではありませんか、
という警告が出ます。
警告だから無視すればいいようなものですが、
もっとスマートな書き方はあるでしょうか。

No. 4875 # 68user 2008/02/08 (金) 17:20:10
>>4874 ふくし
- <>;
- my $trash = <>;
- (undef)=<>;
のいずれかでどうでしょうか。Perl5.8.8 では問題ありませんでした。

No. 4876 # ふくし 2008/02/08 (金) 17:51:25
>>4875 68user
さん、ありがとうございます。
いずれも 5.10.0 でもうまくいきました。

(undef) = <>;

というのは自分で思いついていたんですが、
リストコンテクストで評価されて、
全部の行が代入されたのち2行目以降は捨てられる
(1行目も undef だから捨てられる)
ような気がしていました。
ありがとうございます。

No. 4877 # 68user 2008/02/08 (金) 18:48:31
>>4876 ふくし
ああそうですね。書くなら
    (undef)=scalar(<IN>);
でしょうか。しかし仕事でこのコード見たらイラッとしますねぇ。

No. 4878 # has 2008/02/09 (土) 00:08:12
>>4873 大臣
ご期待に沿えず残念ですが、たぶん多忙で善良なプロの皆さんとかからの
回答になると思います。
どのくらい完璧か晒したら進言あるかもですよ。

No. 4879 # ふくし 2008/02/13 (水) 10:56:17
そういえば(どういえばだ)以前(数年前)Perl で

goto FIN;
sub foo {}
FIN:

だとエラーになるけど

goto FIN;
FIN:
sub foo {}

または

goto FIN;
sub foo {}
FIN:
;

だとダメ、という件があったんだけど、急に思い立って perlbug してみました。
2時間後に返事が来て(すげえな)perlsyn に書いてあるけど
それはバグではない、ラベルの後には1個以上の文がなければならないと
いうことです。FAQらしいですね。

No. 4883 # しも [E-mail] 2008/02/14 (木) 15:55:49
>>4872 68user
返信が遅くなりました。
68userさんの仰るように、自分でツールを作成する必要がある事を理解しました。
awkを使って作成しようと思います。
初めて作るので、時間がかかりそうですが結果はまた報告にきます。
ありがとうございました。

No. 4884 # ふくし 2008/02/15 (金) 01:20:39
>>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;
}

No. 4885 # maya 2008/03/04 (火) 16:06:17
初歩的なことなんですが教えてください。
tar.gz な書庫にファイルを追加したい場合、
いちいちgunzipしないといけないんでしょうか?

なにかスマートな方法はあるんでしょうか?

No. 4886 # つのりん [E-mail] 2008/03/23 (日) 20:10:01
はじめまして、つのりん と呼んでください。

早速ですがx68k専用マウスが故障しました。

症状はとしては、カーソルは全く異常なく動作しますが、クリックが左右ともできなくなりました。原因はボタン下のマイクロスイッチの故障ではないかと思われます。

なにか対策法はありませんか?

よろしくお願いします。

No. 4887 # mm 2008/03/24 (月) 06:42:58
はじめまして。
http://x68000.q-e-d.net/~68user/unix/pickup?find
findの説明のところで、
-atime 4 4日前にアクセスされたファイル
-ctime 4 ちょうど4日前にファイルステータスが変更されたファイル
-mtime 4 ちょうど3日前に修正されたファイル
と、mtimeだけ3日前となっていますが、これは間違いでしょうか?

No. 4888 # べた 2008/03/25 (火) 12:40:27
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

No. 4889 # 68user 2008/03/25 (火) 17:25:53
>>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"
など。

No. 4890 # べた 2008/03/25 (火) 18:30:49
>>4889 68user

ありがとうございます。

No. 4891 # べた 2008/03/26 (水) 15:09:22
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);
------------------------------------------------------------

No. 4892 # maya 2008/03/26 (水) 18:52:55
>>4889 68user

なるほど。ここらへんはzipやrarなどと比べると不便ですね。
ありがとうございました。

No. 4893 # 68user 2008/03/26 (水) 18:54:47
>>4891 べた
「perl: warning: Setting locale failed」で検索すれば出てきますが、
環境変数 PERL_BADLANG を設定することで回避可能です。詳細は検索願います。

No. 4894 # つのりん [E-mail] 2008/03/26 (水) 19:31:35
>4889
ありがとうございます。ヤフーのオークション
で見てみます。

No. 4895 # べた 2008/03/27 (木) 11:29:44
>>4893 68user

ありがとうございます。

perlのスクリプトを実行時のみ有効にしたいのです。
perlのスクリプト内で記述する場合はどのように
定義すればよいのですか。

No. 4896 # 68user 2008/03/27 (木) 11:44:00
>>4895 べた
perl コンパイルの際の Configure 時に設定する方法があります。

それが無理なら
    #!/bin/sh
    PERL_BADLANG=0 /foo/bar/baz.pl
と wrapper を作るか、env コマンドで
    #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl
とする手もあります。

No. 4897 # べた 2008/03/27 (木) 12:55:00
>>4896 68user
ありがとうございます。

#!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl
#

とperlのスクリプト内に記述して、実行したのですが、
処理がとまったというか、何も応答が返ってきません。

No. 4898 # 68user 2008/03/27 (木) 23:05:24
>>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 では動きました。

No. 4899 # べた 2008/03/28 (金) 12:53:23
>> 4898

> #!/bin/sh
> PERL_BADLANG=0 /foo/bar/baz.pl
>なら動くと思います。Linux では動きました。
で動きました。

色々とありがとうございました。

No. 4900 # 68user 2008/04/02 (水) 19:10:27
さきほどお問い合わせページよりご指摘いただきました、ジャンル一覧リンク切れの件、
修正しました。ご指摘ありがとうございます>連絡いただいた方

No. 4901 # 68user 2008/04/18 (金) 13:53:44
2年半ぶりの人材募集です。
http://x68000.q-e-d.net/~68user/tmp/job2.html

No. 4902 # TKC 2008/05/02 (金) 14:09:57
こんにちわ。
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の解決方法がありましたら教えてください。
宜しくお願いします。

No. 4903 # 68user 2008/05/02 (金) 16:00:22
>>4902 TKC
まず、-exec の代わりに -ok を使って何が実行されているか確認しましょう。

> ディレクトリも表示させるには何かオプションが必要なのでしょうか?
./aaa/ の中身が空ではないですか? 空であれば ls ./aaa しても何も
表示されないと思います。

> 削除後にfindしているように見受けられますがこのエラーの出力原因は
> なんでしょうか?
find はディレクトリを下降してファイルを探しますが、おそらく
ディレクトリを削除した後にそのディレクトリに下りようとしている
のではないでしょうか。-prune を組み合わせれば下りないように
できるかもしれません (試していません)。

No. 4904 # TKC 2008/05/02 (金) 16:38:38
>>4903 68userさん
-okを使用して確認しました。
ご察しの通り./aaa配下が空のため< ls ... ./aaa >となり
結果的にログに./aaaが出力されていないことがわかりました。

findのエラー原因はやはり削除後に配下に移動しているものと思われます。
rmにデータが渡る前に-pruneを使い解消されました。

最終的には下記で行いたい処理ができました。
find ./ -mtime +31 -prune -exec ls -d {} \; -exec rm -r {} \;

どうもありがとうございました。

No. 4906 # hoge 2008/05/19 (月) 00:21:11
いつもこちらにはお世話になってます。

flexについての指摘です。
http://x68000.q-e-d.net/~68user/unix/pickup?flex

GNUでは作成・配布してないようです。
http://ftp.gnu.org/gnu/flex/flex.README

No. 4907 # 68user 2008/05/19 (月) 23:44:38
>>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 入門」
だったりするんでしょうか。

No. 4908 # 68user 2008/05/19 (月) 23:57:23
>>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 も見つからないし…。

No. 4909 # 68user 2008/05/24 (土) 14:05:02
>>4908 68user
> うーん、やはり 2.5.3 以前は GNU だったのだろうか。
flex-2.5.2/COPYING を確認しましたが、
>> 下の Flex 2.5.4の COPYING みたいなことになっている。
とほぼ同じでした。よって、以前は flex は GNU であったが、
ある時点から GNU でなくなった、などという事実はないようです。

No. 4910 # 68user 2008/05/24 (土) 14:40:56
>>4907 68user
> http://www.ascii.co.jp/books/books/detail/4-7561-3097-6.shtml
> Flex入門
> シリーズ:GNUシリーズ
後はこれだけが気になってしょうがないので、アスキーに「なぜ GNU シリーズなのか」という
問い合わせを投げました。返事来るといいなぁ。

# その前に訳者と思われる方にメールを投げたものの、user unknown で返ってきました。

No. 4912 # hoge 2008/05/30 (金) 00:10:44
問題を投げっぱなしにしてすいません。
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 入門」
だと考えますが、いかがでしょうか。

No. 4913 # BK 2008/06/04 (水) 14:02:24
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/でないと表示されないように思います。参考にさせて頂いています。

No. 4914 # 68user 2008/06/13 (金) 10:00:15
>>4912 hoge
flex については更新しております。ご指摘ありがとうございます。
http://x68000.q-e-d.net/~68user/unix/pickup?flex

「GNU シリーズ」についてはアスキーより回答をいただいたのですが、
残念ながら Web での公開は不可とのことなので、墓場まで持っていき
たいと思います。

>>4913 BK
ありがとうございます。取り急ぎ IP アドレスのみ更新しました。

No. 4915 # べた 2008/07/04 (金) 21:17:12
shで、文字列から文字列を取り出そうとしています。

”aaa.bbb@test.cojp”
から「@」より前と後を、

”aaa.bbb"
と
”@test.co.jp”
を取り出したいのです。
どのようにすれば良いか教えてください。

No. 4916 # 68user 2008/07/08 (火) 20:45:49
>>4915 べた
変数 $email にメールアドレスが入っているなら、こんな感じでしょうか。

$ echo $email | sed 's/\(.*\)@.*/\1/'
aaa
$ echo $email | sed 's/.*\(@.*\)/\1/'
@bbb.com

No. 4917 # findusi [URL] [E-mail] 2008/07/08 (火) 21:13:16
耶� 闔逅珥蓚�� 鰲鉗 闔頏琺, 褌辣�邇 聽 � 繝� 硴繿� � 驟痳 � 艢裨珞褂 � 鱚閻顫 袱聹�� 鞐� 癈糂 繝� 闔驟�瑩�. 吭鉗 闔頏琺 粮髓鉗迯�� 硴蓐琿�� � 辣 鴈譛褌 � �瑜鱶 褌迺纃鰰, 邇 � 關鉐鴈 � 矼驟謗竡 銓鉋跌纃��. �鞳粳珮珱 闔驟鱶鴾 <a href=http://www.find-business.ru>跪�</a> 闔頏琺

No. 4918 # べた 2008/07/08 (火) 22:44:17
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シェル)

No. 4919 # べた 2008/07/08 (火) 22:55:38
>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 で置換する方法は気が付きませんでした。
ためして見ます。

No. 4920 # 68user 2008/07/09 (水) 01:38:42
>>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 の世界で固めるのが好きか、でしょうか。

No. 4921 # zsh 2008/07/09 (水) 10:09:43
>>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 さんの仰るとおりだと思います。

No. 4923 # べた 2008/07/10 (木) 22:27:06
>>4921 zsh
ありがとうございます。

exprやcutでの使い方ありがとうございます。
勉強になります。

No. 4924 # べた 2008/07/10 (木) 22:28:12
WindowsXP IE6.0 SP2 の別の端末から書き込みを
おこなったら以下のエラー画面が表示されました。

何かインストールされていないものがあるのでしょうか。


エラー : 内部エラーが起こりました。
http://x68000.q-e-d.net/%7E68user/cgi-bin/wwwboard.cgi の実行ができませんで
した。
おそらくCGIプログラムの不具合が原因です。

もし、こちらのファイル設定ミス・リンクミス・CGI の不具合などが原因であった場
合は早急に修正します。

の画面が表示されます。

No. 4925 # べた 2008/07/10 (木) 22:36:19
>>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”が返却。

No. 4926 # べた 2008/07/12 (土) 01:29:32
>>4923 べた

ありがとうございます。

$ expr $email : '\(.*\)@.*'
$ expr $email : '.*\(@.*\)$'
$ echo $email | cut -d '@' -f 1
$ echo $email | cut -d '@' -f 2

どれでも、取り出せました。

No. 4927 # 68user 2008/07/20 (日) 03:21:17
>>4925 べた
> 1回目のiconv(パイプの左側のiconv)がエラーとなったとき、
> ステータスがエラーで返ってきません。
> エラーを判断したいのですが、どのようにしたらエラーと判断
> できるでしょうか。
bash なら PIPESTATUS を使えばよいですが、sh であれば
終了ステータスは取得できないと思います。しょぼいですが、
パイプを使うのをやめるのがよいかと思います。

>>4924 べた
> WindowsXP IE6.0 SP2 の別の端末から書き込みを
> おこなったら以下のエラー画面が表示されました。
IP アドレスや発言内容などから SPAM と判定されたのかもしれません。
特に判定精度の高いものではないので、頻発するようならご連絡ください。

No. 4928 # べた 2008/07/22 (火) 21:53:41
>>4927 68user

ありがとうございます。
sh できないんですね。
出力結果がなければ、出力結果をパイプで渡さなければ
「&&」でいけるのでないかと覆いますが。

パイプを使わず個々に行います。

No. 4929 # べた 2008/07/30 (水) 00:39:04
Solaris8 なのですが、「/var/log/syslog」に、
TCPコネクションのログを出力させたいのです。
telnet、ftpなど、接続したログを出力したいの
です。
どのようにすればよいのでしょうか。

「/etc/syslog.conf」には、以下の様な記述をしています。

user.notice /var/log/syslog

syslogのデーモンも再起動したのですが、出力されません。

No. 4931 # バンガード [E-mail] 2008/08/05 (火) 10:01:38
>>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デーモンを再起動)

No. 4932 # バンガード [E-mail] 2008/08/05 (火) 10:02:46
>>4931 バンガード
ごめんなさい。
4929へのコメントでした。

No. 4933 # べた 2008/08/19 (火) 21:25:01
>>4932 バンガード
お礼が遅れ申し訳ありません。
ご説明ありがとうございます。

どちらにしてもデーモンの再起動(リフレッシュ)が
必要なんですね。

No. 4934 # べた 2008/08/19 (火) 21:28:29
Solaris8 なのですが、シェルを実行する際、
./シェル名としないと起動できません。

「./」で起動するにはどうしたらよいのでしょうか。

「./」で起動できるアカウントがあるので、違いを比べてみると
PATHの変数が異なっていました。

PATH=./:/usr/bin・・・・・
とか
PATH=・・・・/usr/bin:

PATH変数の中に、「./」の設定がある。
PATH変数が「:」で終わっている。

「./」を指定しないと動かないアカウントは、両方がない状況と
なっています。
どのように環境変数を設定すればよいのですか。

No. 4935 # zsh 2008/08/20 (水) 12:07:16
>>4934 べた
> 「./」で起動するにはどうしたらよいのでしょうか。
「./」なしで起動したいということでしょうか?
PATH 環境変数に ./ を含めれば可能ですが、お勧めはしません。
特定のディレクトリにスクリプトを集めて、そのディレクトリを
PATH 環境変数に含める方がよいと思います。

なお、同じ名前のコマンド(スクリプト)が複数のディレクトリに
存在する場合は、PATH 環境変数で先に見つかったコマンド
(左側のパスから順番に探しに行きます)が実行されます。

No. 4936 # 68user 2008/08/21 (木) 02:14:31
>>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 など、今どきなシェルを使っている場合は、
        ./
    からタイプした方がファイル名補完を使えるため、入力が速い。

No. 4941 # べた 2008/08/26 (火) 22:00:32
>> 4935
>> 4936

返事が遅くなってすみません。

分かり易く説明ありがとうございます。
勉強になります。

No. 4942 # べた 2008/10/08 (水) 20:36:52
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シェル
です。

No. 4943 # 68user 2008/10/08 (水) 22:16:55
>>4942 べた
tty 宛でよいなら、サブシェルを使って
    ( cat file.txt > /dev/tty ) >& /dev/null
です。

No. 4944 # べた 2008/10/09 (木) 20:49:11
>> 4944

ありがとうございます。

> tty 宛でよいなら、サブシェルを使って
> ( cat file.txt > /dev/tty ) >& /dev/null
> です。
出来ました。

tty 宛でよいなら、サブシェルを使って
tty を使わない方法もあるのですか。あるのでした教えてください。
サブシェルとは。
「( command )」とはどのよな使い方でしょうか。

良い案が思い浮かばなかったので、「cat file.txt > /dev/tty」で
表示ができたので、 /dev/tty を使えば上手くできるのではないかと。

No. 4945 # 68user 2008/10/10 (金) 10:06:19
>>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

No. 4946 # べた 2008/10/10 (金) 20:24:28
>> 4945

ご説明ありがとうございます。

Windows XPの別端末で書き込みをしたら
「エラー : 内部エラーが起こりました。」
の画面が表示されました。
何かあるのでしょうか。

No. 4947 # 素人 2008/12/11 (木) 14:52:56
こんにちは.linuxを使い始めたものです.
パイプに関する質問です.環境はVine Linux のbashです.

あるファイル名(ここではtestfile)のものを検索して,
さらにその中身に"test"という文字列を含むかどうかを
知りたいと思っています.
対象のファイルがひとつとは限りません.例えば,
...........
../Data1/testfile ⇒(中身)This is test file.
...........
../Data2/testfile ⇒ (中身) This is hoge hoge.
といった感じで同じ名前のファイルが別のディレクトリにあります.

cat,find, grepを組み合わせれば出来そうな気はしているのですが,
findしてリスト表示されたファイル名を引数としてcatコマンドに
渡すことができません.

自分なりにいろいろ検索しましたが,よくわかりませんでした..
よろしくご教授ください.

No. 4948 # 68user 2008/12/11 (木) 17:17:18
>>4947 素人
親ディレクトリ以下の testfile というファイル名のファイル中に
test という文字列があるものをリストアップ、であれば
    % find ../ -name testfile | xargs grep -l test
でしょうか。それを cat するなら
    % find ../ -name testfile | xargs grep -l test | xargs cat
ですかね。

No. 4949 # 素人 2008/12/11 (木) 18:35:48
>>4948 68user
できました!答えはxargsでしたか.
勉強不足で恐縮です.ありがとうございました.

No. 4950 # 佐藤丈師 [E-mail] 2008/12/12 (金) 17:03:36
RSA1のプログラムを実行するにあったってエラーが多くでます。これのヘッダファイルはどこにあるのでしょうか。

No. 4951 # 68user 2008/12/23 (火) 17:49:12
>>4950 佐藤丈師
OpenSSL に同梱されていますので、OpenSSL をインストール済みであれば
/usr/include/openssl や /usr/local/openssl/include などにあるはずです。
コンパイル時に -I /usr/include/openssl などのオプションを付加してください。

No. 4952 # kawasaki 2009/01/13 (火) 18:11:06
初めて投稿します。
全くの初心者ですが、次のことをお尋ねします。
Debian4.0ですが、デスクトップにアイコンを作成し、クリックすると
プログラムを起動するようにしたいのですがどのようにすればいいの
でしょうか。

#su - abc ’abcでログインし、「sh /usr/lib/scripts/claim/ORC_CLAIM_SERVER.sh 5001 /var/tmp」

ktermに記述などお尋ねします。

No. 4953 # 68user 2009/01/14 (水) 02:02:57
>>4952 kawasaki
やり方はインストールしたデスクトップ環境 (GNOME とか KDE とか) によると思います。

が、お使いのデスクトップ環境をお教えいただいたとしても、ここ数年は UNIX 系
デスクトップ環境をいじっていないので、わたしはさっぱりわかりません。

No. 4954 # uccこーひー 2009/01/18 (日) 15:47:46
初めまして。
ちょっと気になったので言わせて下さい。

UNIXの部屋 コマンド検索: Machでの説明で、

発音は、普通なら [まっは] が正しいと思うが、アメリカ人は "ch" の発音ができないらしくて
  [まーく] [まっく] といっている (発音できないような名前を付けるなと言いたい)。

とありますが、発音できないんじゃなくて、そういうスペルだと、
英語的には、マークって呼ぶだけです。hの2つ前は、aつまりエイって発音し、
cは、基本的には、ックって発音になり、
何も考えずにつなげて読むと、マークって読みます。

で、でもなんで、マッハが正しいかと言うと、
これは、ヨーロッパ系の言語の多くが、
machって書いてまっはって読むからです。
発音できないわけじゃないですよ^^;

No. 4955 # 68user 2009/01/28 (水) 02:30:07
>>4954 uccこーひー
ご指摘ありがとうございます。が、正直なところを申しますと、学がないので
真偽のほどが判断できません。よって、該当コンテンツより、
>>4954 uccこーひー
の発言にリンクを張らせていただきますので、あとはお読みいただいた方に
ご判断いただくことでご了承ください。

No. 4957 # たけ 2009/02/10 (火) 13:43:32
いつも便利に参照しています。
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」かな?

No. 4958 # 68user 2009/02/13 (金) 00:15:02
>>4957 たけ
> 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。
ありがとうございます。Sun のページはたまに URL が変わるんですよね…。
最新情報で更新しておきました。

NetBSD の manpage へのリンクも表示されなくなっていますが、そのうち直します。

No. 4960 # 谷口 功 [E-mail] 2009/02/27 (金) 18:25:50
SE募集の件で書き込みさせていただきました。
大変興味がありますので、一度詳細を教えていただけないでしょうか。
ご連絡をお待ちしています。

No. 4961 # 68user 2009/02/28 (土) 00:14:30
ありがとうございます。メールを送ります。

No. 4974 # べた 2009/03/19 (木) 19:53:35
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";

No. 4975 # べた 2009/03/19 (木) 19:57:17
>> 4974

環境を書き忘れました。

環境は、
    Solaris8
    Perl v5.8.5

No. 4976 # 68user 2009/03/21 (土) 00:36:01
>>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時と比較する部分は手で書かないと
いけないように見えますので、イマイチですね。

No. 4977 # べた 2009/03/22 (日) 23:25:34
>>4976 68user

ありがとうございます。
また、返事が遅くなって申し訳ありません。

> find . -newer foo
ですか。
シェルで、findの結果を取得することも考えました。

> あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと
> いけないように見えますので、イマイチですね。
Perlを使おうとしていたので、手で書かなくてはいけないと思っていました
この部分の良い方法が実現できなくて。

環境上、教えて頂いたモジュールも入れることができません。

No. 4978 # 68user 2009/03/23 (月) 22:00:19
>>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";
}

No. 4979 # べた 2009/03/24 (火) 21:19:39
>> 4978

ありがとうございます。

教えていただいた方法ですと、前日9時のタイムスタンプの
取得をPerlでやればあとは、シェルスクリプトでもできます
ね。

実のところ、findを使わない、Perlでの記述、遣り方を教えて
ほしいのですが。

No. 4980 # べた 2009/03/25 (水) 09:16:00
>>4978 68user

> find を使わないなら、
> 昨日9時の日時 (20090323090000) を Time::Local で epoch time に
> 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。

Time::Local で epoch time に直しての「epoch time」とは
なんでしょうか。

No. 4982 # ちびヴァル [URL] [E-mail] 2009/04/05 (日) 23:19:53
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 で終了しました

No. 4983 # 68user 2009/04/06 (月) 11:36:31
>>4982 ちびヴァル
オプション -lX11 が足りていません。まずは
    http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html
からどうぞ。

No. 4984 # 68user 2009/04/06 (月) 11:37:59
>>4980 べた
> 「epoch time」とはなんでしょうか。
http://oku.edu.mie-u.ac.jp/~okumura/php/date.php
    UNIX で Epoch とは,協定世界時(UTC,いわゆるグリニッジ標準時 GMT)
    1970 年元旦 0 時 0 分のことです。 UNIX の内部ではこの瞬間からの秒数で
    時刻を表しています。
のことです。

No. 4985 # ちびヴァル [URL] [E-mail] 2009/04/06 (月) 14:46:01
>>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
と出てどうすればいいか迷っています

No. 4986 # 68user 2009/04/07 (火) 23:39:02
>>4985 ちびヴァル
> Found a swap file by the name "/etc/X11/.xorg.conf.swp"
vim が作成したスワップファイルでしょうから、.xorg.conf.swp を
削除して、root 権限で xorg.conf を更新すればよいと思います。

No. 4988 # べた 2009/04/11 (土) 14:29:40
>> 4978

> find . -newer foo の方法を書いておきます。find を使わないなら、
> 昨日9時の日時 (20090323090000) を Time::Local で epoch time に
> 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう

の方法を教えて欲しいのですが。

No. 4989 # べた 2009/04/21 (火) 20:16:51
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シェル

No. 4990 # 68user 2009/04/22 (水) 03:06:48
>>4989 べた
basename・dirname コマンドを使うのはダメですかね。

No. 4991 # べた 2009/04/22 (水) 08:52:24
>>4990 68user

>basename・dirname コマンドを使うのはダメですかね。
も考えましたが、
出来れば、使わない方法でと

No. 4992 # zsh 2009/04/22 (水) 11:56:48
>>4991 べた
普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。

sed でやりたいならこんな感じかなぁ?
- ファイル名
echo ${FILE} | sed 's/.*\///g'
- パス名
echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'

No. 4993 # べた 2009/04/22 (水) 12:12:04
>>4992 zsh

> 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。
すみません。

> - パス名
> echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'
が、上手くいきませんでした。
パス名がとれません。フルパスが返ってきます。

/aaa/bbb/txt.csv → /aaa/bbb/txt.csv
/txt.csv → /txt.csv

No. 4994 # べた 2009/04/22 (水) 12:15:00
>>4992 zsh

> 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。
すみません。

> - パス名
> echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'
が、上手くいきませんでした。
パス名がとれません。フルパスが返ってきます。
それと、ファイル名のみ場合は、値がなしとしたいのですが。

/aaa/bbb/txt.csv → /aaa/bbb/txt.csv
/txt.csv → /txt.csv

No. 4996 # zsh 2009/04/22 (水) 17:14:30
>>4994 べた
失礼しました。↓でどうでしょうか?

echo ${FILE} | sed -n -e 's#\(.*\)/[^/]*#\1#p'

No. 4997 # べた 2009/04/22 (水) 19:10:04
>>4996 zsh
ありがとうございます。
パス名を取り出すことができました。
ただ、以下の様に場合、上手くいきません。

「FILE=/txt.csv」の場合
    「/」となりません。
    ブランクというか、改行します。
    「/」だけ取り出すというのは無理なのでしょうか。

「FILE=txt.csv」の場合
    ブランクとなります。
    正しい動きなのでしょうか。

No. 4998 # ふくし 2009/04/22 (水) 22:39:27
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}

No. 4999 # zsh 2009/04/23 (木) 11:23:01
>>4997 べた
> 「FILE=/txt.csv」の場合
パス名末尾の / を出力しないようにしていたためですね。

echo ${FILE} | sed -n -e 's#\(.*/\)[^/]*#\1#p'

こうすれば出力されると思いますが、
逆に /hoge/fuga.txt のような場合でも /hoge/ となります。

> 「FILE=txt.csv」の場合
パスが指定されていないので、ブランクで正しいと思っていますが。
(そういった条件もありませんでしたし。)

>>4998 ふくし
nawk は参照渡しできないはずなので、そういう書き方ではできません。
ただ nawk では、ユーザ関数の引数として定義された変数を除き、
すべてグローバル変数だと思うので、やろうとしていることはできます。

No. 5000 # べた 2009/04/23 (木) 13:10:32
>>4997 べた

ありがとうございました。
出力されました。

No. 5001 # べた 2009/04/23 (木) 13:19:29
>>4999 zsh

お礼先誤りですみません。
ありがとうございます。


>> 「FILE=txt.csv」の場合
> パスが指定されていないので、ブランクで正しいと思っていますが。
> (そういった条件もありませんでしたし。)

No. 4994で、自分でファイル名のみの場合、値なしとしたいと
書いておきながら正しい動きなんですかと質問すみませんで
した。

No. 5002 # sfish 2009/04/23 (木) 14:46:19
>>4998 ふくし

えっ、Solairs8 の nawk って return を使えないんでしょうか?

No. 5003 # zsh 2009/04/23 (木) 15:58:34
>>5002 sfish
man には
return [expr]
と記載があったので、リターンコードを返すものだと思っていましたが、
確かに値を返すことも出来ました。こっちの方がいいですね。

No. 5004 # ふくし 2009/04/23 (木) 21:06:27
>>4999 zsh

> ただ nawk では、ユーザ関数の引数として定義された変数を除き、
> すべてグローバル変数だと思うので、やろうとしていることはできます。
どういうことでしょか。
nakwで関数を作るのが不慣れなもので、

nawk内で定義した変数はグローバル変数なので、nawk内であれば、
ユーザ定義関数でも参照や書き換えができるということでしょうか。
また、
ユーザ定義関数ないで定義した変数は、関数内でしか有効とならない
ということでしょうか。
例などを載せてくれるとありがたいのですが。

No. 5005 # zsh 2009/04/27 (月) 17:13:54
>>5004 ふくし
> nawk内で定義した変数はグローバル変数なので、nawk内であれば、
> ユーザ定義関数でも参照や書き換えができるということでしょうか。

その通りです。

ただ、
>>5002 sfish
で return で値が戻せることを教えて頂いたので
関数側は、
---------------------------------
function chk1(arg1) {
        sub(/^"*/,"",arg1); sub(/"*$/,"",arg1);
        return arg1;
}
---------------------------------
のようにして、呼び出し側は
---------------------------------
UserID = chk1($1);
---------------------------------
とすれば、やろうとしていることができると思います。

No. 5006 # まえ [E-mail] 2009/04/28 (火) 09:07:23
初歩的な質問ですが

内蔵HDDを増設し「label:Backup」として、クリックしますと「sdb」と表示されています。
プロパティで、場所は/mntとなっています。

このHDDに mv /home/ormaster/123.txt sdb/123.txt とファイルの移動をしたいのですが方法を教えてください。

No. 5007 # ふくし 2009/04/28 (火) 12:01:40
>>5005 zsh

ありがとうございます。

No. 5008 # 山田洋子 [E-mail] 2009/04/28 (火) 21:29:44
エラーメッセージ「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

No. 5009 # 68user 2009/05/07 (木) 13:40:49
>>5006 まえ
mount 済みであれば、mv /home/ormaster/123.txt /mnt/123.txt で
いけるのではないかと思います。

>>5008 山田洋子
よくわかりませんが、cannot execute binary のエラーメッセージを
出力しているのが service コマンドなのか、iconv コマンドなのか、
cat や mail なのかを調べてみてはどうでしょうか。

No. 5010 # ふくし 2009/05/23 (土) 00:01:56
nawkでsystem関数で、コマンドを実行しています。
今、system関数で実行したコマンドの結果を変数
に格納したいのですが、結果のステータスが格納
されて、コマンドの実行結果が格納できません。
どうしてなのでしょうか。そもそも不可能なのでしょうか。

system関数で、dateコマンドを実行し、結果を変数に
格納して、nawk内で使用したいのです。

nawk '{system("date +%Y%m%d")}'

環境は、
Solaris8
bsh
です。

No. 5011 # 68user 2009/05/23 (土) 01:06:30
>>5010 ふくし
system は単なるコマンドの実行であり、コマンドの標準出力を受け取るような
仕組みになっていません。この場合は getline を使うべきかと思います。

No. 5013 # ふくし 2009/05/23 (土) 10:59:31
>>5011 68user

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

No. 5017 # keiji [E-mail] 2009/05/27 (水) 15:07:21
完全ガイドwindowsxp基本+Q&A 2008,3,20
p275,Q057 
1・アイコンの数を増やすは、あるが、減らす方法が、無い。

2・初心者に解かるように、教えて。やり方がわからへん。

No. 5018 # keiji 2009/05/27 (水) 15:14:43
特定のアイコンを消す方法です。

No. 5020 # たろう 2009/06/21 (日) 03:05:55
はじめまして

ネットワークプログラミングのページは
とってもためになりました。

・読みやすい
・わかりやすい
・内容がある

すばらしいです。

少なくとも私の嗜好とあうはず。
なので、
おすすめ書籍を紹介してください!

・実践的にアプリケーションを作る
・複数ファイルのビルドを説明
・winコンポーネント
・プロセス間通信
・管理人さんのように読みやすく、わかる、内容がある
・ネットワークアプリ(サーバー、メーラーetc)
・c言語、perl、php(windows

いま、プロキシサーバと、メールサーバに興味があるので、
それが作れるような本。(あくまでわかりやすく言ってます)
ぜひ、よろしくお願いします。

No. 5021 # 68user 2009/07/04 (土) 15:59:26
>>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
といったアプローチもアリかもしれません。

No. 5022 # たろう 2009/07/11 (土) 12:20:20
>>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

(私の知りたいことは「プロセス間通信」で、「システムプログラミング」って範疇に入るんだなぁ)

これでも読んでみようかと思ってます。

プロセス間通信がわかれば、
数あるソフトウェアを自在に連携して使いこなすことができるる!」

こう思っているが、合ってますでしょうか。(^−^;)

No. 5023 # 68user 2009/07/27 (月) 16:21:59
>>5022 たろう
共有メモリなどのプロセス間通信は、同一サーバ内のプロセスで
データをやりとりする仕組みで、他サーバとはやりとりができません
(とはいえ MySQL や PostgreSQL なども使っている重要な機能ですが)。

複数クライアントからの情報をサーバ内で効率よく共有するためには
役立つのは確かでしょうが、多くのマシンで連携するクラウドばやりの
昨今では、学習の方向性としてはちょっとずれているかもしれません。

No. 5024 # 鈴木 [E-mail] 2009/08/26 (水) 01:28:17
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)からどのようにして
        乱数の種を取得するのでしょうか?

  何卒よろしくお願い致します。
    

No. 5025 # 68user 2009/08/26 (水) 11:01:56
>>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) を呼ぶ…と思うのですが、
        ソースを見てもそのつながりがよくわかりませんでした。
と思いました。

No. 5027 # sep 2009/09/20 (日) 20:34:31
UNIXの初歩的なことですみません。

UNIXで、viを使用するときシェルの環境変数の設定などは
必要なのでしょうか。

cronを編集しようとして、「crontab -e」を実行したの
ですが、正しく表示されませんでした。
「crontab -l」では、正しく見れます。
環境変数のEDITORに、”vi”を設定し、「crontab -e」を
行うと、正しく表示されます。

ここでなのですが、unixにログインし、コマンドラインから、
viを起動すると問題なく使用できるのですが、ログインの場合
環境変数のEDITORは関係ないのでしょうか。
それとも、そういうものなのでしょうか。

環境は、
solaris8
bシェル

No. 5028 # zsh 2009/09/22 (火) 12:08:17
>>5027 sep
環境変数 EDITOR は、単に vi(vi コマンド)を使用する場合には
必要ありません。
crontab コマンドのように、エディタを選択できるプログラムが
参照します。
http://x68000.q-e-d.net/~68user/unix/environment.html#EDITOR

なお、crontab コマンドでは、EDITOR が設定されていない場合は
ed コマンドで編集画面が開きます。

No. 5029 # y-hira 2009/11/03 (火) 01:44:42
はじめまして

POP3 クライアントを作ってみよう(3) のページにて

> APOP はその原理上、必ずサーバ側に生パスワードを保存しておく必要があります。...
> CRAM-MD5 や CRAM-SHA などの認証方法がありますが、サーバ側に生パスワードを保存しておく必要はありません。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

とありますが、CRAM-MD5 (や DIGEST-MD5) は生パスワードを
サーバ側が保持していなければならないと理解しておりましたが如何でしょうか?

サーバーは,認証の際に 「クライアントから受信した文字列(暗号化済み)」と,
「送信したChallengeコードと(サーバー側の)『ユーザのパスワード』をMD5で暗号化したもの」を
比較する必要がありますので...。

No. 5030 # 68user 2009/11/04 (水) 13:56:53
ご指摘ありがとうございます。勘違いしていたようです。
以下のように修正いたしました。

http://x68000.q-e-d.net/~68user/net/pop3-3.html
- 一方 IMAP というプロトコルには APOP と似た認証の仕組みとして、
- CRAM-MD5 や CRAM-SHA などの認証方法がありますが、サーバ側に
- 生パスワードを保存しておく必要はありません。

+ SMTP や IMAP には APOP と似た認証の仕組みとして、CRAM-MD5 や、
+ それを改善した DIGEST-MD5 などの認証方法がありますが、こちらも
+ 同様にサーバ側に生パスワードを保存する必要があります。

No. 5031 # スパムと戦う掲示板 [URL] [E-mail] 2009/11/09 (月) 23:36:27
管理人様、失礼いたします。

この度、私の運営する掲示板への度重なるスパム書き込みに対する対策を行っております。

つきましては、せっかくなら私のサイトだけに囚われず
一般の皆様にも使用していただけた方が良いかと思い
絶対に荒らされない掲示板サービスを立ち上げようと考えております。

スパムに悩まされない掲示板に興味が御座いますでしょうか?
また、使っていただける皆様と共同して随時機能を追加して参ります。

掲示板サービスに対するご要望があれば、
下記のメールアドレスにご連絡いただければ
追って準備が整い次第、お知らせをさせていただきます。
掲示板サービス以外のメールは、一切送信いたしません。

antispambbs@gmail.com

それでは、貴重なスペースをありがとう御座いました。
書き込み内容がサイト内容とそぐわない場合は、
大変お手数ですが削除いただきますようお願いいたします。

失礼いたします。

No. 5040 # あきもと 2010/01/18 (月) 23:55:19
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

No. 5041 # おう 2010/01/19 (火) 01:28:56
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] 終了

となります。
期待する結果を得たいのですが、どうすればよいですか。

No. 5042 # zsh 2010/01/21 (木) 17:14:43
>>5040 あきもと
>>4776 zsh
を参照してください。

>>5041 おう
sed -e '$!N; s/\n \{1,\}//; P; D' file.txt
でどうでしょうか?

No. 5045 # h.maruwa 2010/01/23 (土) 03:47:25
管理人さんへ
『User-Agent 統計』のページ
(http://x68000.q-e-d.net/~68user/cgi-bin/view-browser.cgi)
が『エラー : 内部エラーが起こりました。』となっているので
お知らせします。

No. 5047 # あきもと 2010/01/23 (土) 17:10:34
>>5042 zsh

ありがとうございます。
教えて頂いたところに書いてある方法で
上手くいきました。

No. 5048 # おう 2010/01/23 (土) 20:18:10
>>5042 zsh

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

No. 5049 # ボンジー 2010/01/26 (火) 20:30:18
はじめまして。ボンジーと申します。ハッキングのやり方を教えてください。しーローとなもので

No. 5056 # Misaki [URL] [E-mail] 2010/02/14 (日) 21:05:38
いつもUNIXコマンドでお世話になっています。

画像変換のconvertコマンドについてお伺いしたいことがあります。

私は今、趣味でサイトを作っています。
画像アップロードした際にGIFからjpgに変換させる処理にconvertを使っているのですが、
ファイル名の拡張子は.jpgになっているのですが、バイナリエディタで開いて確認するとGIFファイルのままです。

convertはImageMagickダウンロードしてきて新規インストールしたものです。

このページではGIFからJPGへの画像変換を紹介されていたのですが、
私のところと同じような現象がおこっていませんでしょうか。
http://x68000.q-e-d.net/~68user/unix/pickup?keyword=convert&target=command

No. 5057 # 68user 2010/02/15 (月) 16:38:19
>>5056 Misaki
そういう事象は聞いたことがないですが、ありうることとしては
libjpeg のリンクがうまくいっていない、でしょうか (それにしても
エラーが出るのではないかと思うのですが)。

変換前後のファイルを file コマンドで調べても、やはり gif でしょうか?

No. 5059 # Misaki [E-mail] 2010/02/16 (火) 16:13:19
>> 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)

No. 5060 # かばら 2010/02/16 (火) 22:18:08
初めまして。かばらと申します。
現在、マシン間のソケット通信に関して勉強中なのですが、connectシステム
コールについて質問させていただきいても宜しいでしょうか。

質問1
クライアント側から発行されるconnect()はサーバー側で発行されるaccept()の
ように処理をロックすることがあるのでしょうか。もしあるとすればどの
タイミングでコールした場合でしょうか。

質問2
サーバー側がlisten()をコールする以前にクライアント側でconnect()をコール
するとエラー(返却値-1)が起きますが、クライアントがサーバーの状態を監視し、
connect()をコールするタイミングを得ることは可能でしょうか。
(試しにselect()を使用してみましたが上手くいきませんでした。)

突然の不躾な質問で申し訳ございませんが、何卒ご教授くださいますよう
よろしくお願いいたします。

No. 5061 # 68user 2010/02/17 (水) 19:51:13
>>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()を使用してみましたが上手くいきませんでした。)
サーバ側で準備が整ったら通知がくるといった仕組みはないので、リトライ
し続けるしかないですね。

No. 5062 # Misaki 2010/02/18 (木) 12:41:07
お礼遅くなりました。

libjpegを入れて再インストールしたらちゃんと変換されました。
私ははgifの取り扱いに失敗しているものだと勘違いしていました。

迅速かつ的確な回答ありがとうございました。

No. 5063 # かばら 2010/02/18 (木) 22:32:12
ご回答ありがとうございます。
質問1、2共に納得です。

大変お世話になりました!

No. 5071 # Mods [E-mail] 2010/05/13 (木) 10:22:57
はじめまして、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つ推測を立ててみました(どちらも外れているかもしれませんが:笑)。
<推測>
    推測&#9312; :新たにシェルは起動している、しかし。
    スクリプト実行によるサブシェルはあくまでスクリプトを実行するシェルであって対話シェル
    として起動しているわけではないのでローカル環境設定ファイルを読み込む必要がない。
    言い換えると環境設定ファイルはあくまでログインスクリプトだから。

    推測&#9313; :新たにシェルは起動していない。
    あくまでスクリプトを解釈するのはカレントシェルであって解釈後の実際の処理はシェルの
    起動を伴わない子プロセスが実行するから。

推測&#9313;を書いていてふと思ったのですが、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

No. 5072 # 68user 2010/05/14 (金) 13:19:29
>>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 などを読むべき条件が
揃っていない、ということですね。

No. 5073 # Mods [E-mail] 2010/05/14 (金) 17:19:22
>>5072 管理人様

早速のご回答を頂きましてありがとうございます!
cronの説明も含め非常にスッキリいたしました。

スクリプト実行によるシェル起動プロセスが~/.bashrcを読み込まない件に関しては最初の
推測が近かったものの「ローカル環境設定ファイルを読み込む必要がない。」のではなく
むしろ「読み込んではまずい。」ということだったのですね。
その理由も言われてみれば非常に納得です。

この度は詳細な解説をして頂き、まことにお世話になりました(感謝感激です)。

No. 5078 # BAVO 2010/05/26 (水) 21:59:38
はじめまして
以前『User-Agent 統計』を参考にさせていただいていたのですが
最近トップページから『User-Agent 統計』に進んでもエラーになり
うまく動いてないようですが、他の方からは正常に動いているのでしょうか?
できれば動作確認していただければと思います。
よろしくお願いします。

No. 5079 # 68user 2010/05/26 (水) 23:00:37
>>5078 BAVO
以前サーバの負荷が上昇した際、User-Agent 統計が負荷上昇の
一因であるように見えたので、実行不可としておりました。
その後別アプローチから負荷軽減を図ったので、とりあえず
さきほど実行可能にしてみました。
    http://x68000.q-e-d.net/~68user/cgi-bin/view-browser.cgi

>>5045 h.maruwa
同じご指摘をいただいていたにも関わらず、スルーしており
申し訳ありませんでした。

No. 5080 # abb 2010/06/03 (木) 18:58:08
>FollowSymLinks
>シンボリックリンクを許可するかどうか。
>シンボリックリンクをたどるかどうかを設定します。
>なお、シンボリックリンク自体は OS の機能ですから、いつでも使えます。
>ここでは web 経由でシンボリックリンクを辿るかどうかを決めるわけなので、
>CGI プログラムの中ではいつでもシンボリックリンクを使うことができます。

なんだか日本語が変ですよ。設定がどう働くのかこれじゃわからないです。。。

No. 5084 # h.maruwa 2010/08/13 (金) 07:56:50
>>5079 68user
User-Agent統計のページが閲覧可能となっているのを確認しました。
対応有難うございました。

日本国内でのUser-Agentを多数・長期間分網羅したサイトは稀少なので
アクセスが集中しやすいのかもしれませんね。

No. 5091 # jagio 2010/09/26 (日) 11:03:36
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");
標準出力と標準エラー出力をログ出力させると、
画面表示で何をすれば良いか分かり、
データ入力時の操作がしやすいです。


以上です。////////

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