(2005-08の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2005-08-31 Wed (他の年の同じ日: 2004)

Google MAP キーバインド
2005-08-31-4 / カテゴリ: [link] / [permlink]

googleマップで何気なくキーボードをさわったら、ちゃんと反応した。すごいなぁ。

カーソルキー ... スクロール
  • +: 拡大
  • -: 縮小
Home/End/PgUp/PgDn ... 3/4ほどスクロール
とりあえず、気づいたもののみ

Emacsキーバインドとかviキーバインドとかはさすがにムリか(笑)

VSSでプロジェクトの丸ごとExport
2005-08-31-3 / カテゴリ: [win][programming][VC++] / [permlink]

Visual SourceSafe アドミニストレータ を起動し、[アーカイブ(A)]->[プロジェクトのアーカイブ(A)]で、バージョン範囲を[全てのデータを保存(A)]で Go

ファイルがどのパッケージに含まれていたかの確認
2005-08-31-2 / カテゴリ: [unix][Solaris] / [permlink]

dpkg -S /path/file に相当するコマンドは?

% pkgchk -lp /usr/sbin/pkgchk
Pathname: /usr/sbin/pkgchk
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: sys
Expected file size (bytes): 169020
Expected sum(1) of contents: 38077
Expected last modification: Jul 11 05:54:58 2003
Referenced by the following packages:
        SUNWcsu
Current status: installed

パッケージの内容一覧
2005-08-31-1 / カテゴリ: [unix][Solaris] / [permlink]

dpkg -L pkg-name に相当するコマンドは?

% pkgchk -v pkg-name
一覧の表示と同時に、デフォルトからの改竄チェックもおこなう。

% pkgchk -l pkg-name
ファイルリスト以外に、Type/mode/owner/size などの詳細情報も表示する。
2005-08-30 Tue (他の年の同じ日: 2006)

結婚式の招待状の返事
2005-08-30-1 / カテゴリ: [diary] / [permlink]

まず、googleで「結婚式+招待状+返事」で検索しましょう…では書くことなくなっちゃうんで、

1. 宛名の「行」を「様」に改ざんする (まぁ、普通だね!)
2. 「御出席or御欠席」の選択項目の「御」を削除する
3. 「御出席or御欠席」の未選択項目をすべて削除する
4. 「御芳名」の「御芳」を削除する
5. 「御住所」の「御」を削除する
6. 「御電話番号」の「御」を削除する
7. 一言、お祝いのメッセージを添える
8. (重要)受け取ったらスグに返信する

2〜6の文字列を見てると、ゲシュタルト崩壊をおこしそうだ。

そして、今晩のおかず。
肉じゃが
言葉どおり、(豚)肉とジャガイモのみ(笑)
かつおだしがちょっと強すぎたかも。
2005-08-29 Mon (他の年の同じ日: 2006)

zsh/tcsh で、「以外」のワイルドカード
2005-08-29-4 / カテゴリ: [unix][linux][shell] / [permlink]

'^'を入れると、指定以外のリストになる。
ls ^*.pl
末尾が .pl 以外のリスト

     An entire glob-pattern can also be negated with `^':

         > echo *
         bang crash crunch ouch
         > echo ^cr*
         bang ouch

     Glob-patterns which do not use `?', `*', or `[]' or which
     use `{}' or `~' (below) are not negated correctly.
man tcsh(1) より
{} との併用は不可なのか。

bash は使えないのね…

iptables で特定条件のアクセスを別ポートにリダイレクト
2005-08-29-3 / カテゴリ: [linux][network] / [permlink]

アクセス元IP 10.0.0.1 からの 80/tcp へのアクセスを、8080/tcp へリダイレクトするには
# iptables -t nat -A PREROUTING -p tcp -s 10.0.0.1 --dport 80 -j REDIRECT --to 8080

このとき、アクセス元IP 10.0.0.1 の 8080/tcp も ACCEPT にしておく必要もある。(DROPではアクセスできない)

iptables -L で名前解決が遅い
2005-08-29-2 / カテゴリ: [linux][network] / [permlink]

-n をつければ名前解決しない。
netstat -n と同じやね。

cygwin JE のパッケージをインストールする
2005-08-29-1 / カテゴリ: [win][cygwin] / [permlink]

通常の setup.exe を使ったネットワークインストールのダウンロードサイトを選択する画面で、User URLに http://cygwin-je.sourceforge.jp/cygwin_je/ を入力・[add]押下する。で、サイトリストに入力した URL(ドメイン名のみ) が追加されるので、そいつを選択し次へすすむ。

lv もこっちにある。
Referrer (Inside): [2005-12-21-3]
2005-08-28 Sun (他の年の同じ日: 2006)

courier-imap-ssl も自己CAのサーバ証明書で
2005-08-28-2 / カテゴリ: [linux][debian][imap][SSL] / [permlink]

courier-imap-ssl の設定で使用する証明書ファイルは、[2005-08-28-1]で作ったCA証明書・サーバ証明書のうち、以下のものを cat で結合した1つのファイルを使う
# cat server.key server.crt ca.csr > courier.pem

で、/etc/courier/imap-ssl は以下の設定
TLS_CERTFILE=/etc/ssl/servkey/courier.pem

メーラ側は、ブラウザ同様 ca.crt をインポートしてやればよい。つか、Firefox あんど Thunderbird 使用だと、同じものをそれぞれインポートしてやらんといけないからメンドウだな…

apache-ssl で自己CAとサーバ証明書の作成・apache-sslへの組み込み
2005-08-28-1 / カテゴリ: [linux][debian][Apache][SSL] / [permlink]

apache-ssl パッケージを apt でインストールすると、インストール時のみに、期限1ヶ月のオレオレ証明書を同時に作成しインストールされる。
ので、自己CAで署名したサーバ証明書を別途作成する。
コマンドは、@ITのApacheでSSLを使うにはの通りで問題なし

作業ディレクトリの作成
# mkdir /etc/ssl/servkey
# cd /etc/ssl/servkey
ま、管理しやすい位置でどこでもいいけど。

CAの秘密鍵の作成
# openssl genrsa -rand /var/log/syslog -out ca.key 1024

CAのCSRの作成
# openssl req -new -key ca.key -out ca.csr
国名や名前などを入力

CA証明書の発行
# openssl x509 -req -in ca.csr -signkey ca.key -days 730 -out ca.crt
-days がないと1ヶ月だったので、2年間と指定してみた。

で、
サーバ証明書の秘密鍵
# openssl genrsa -rand /var/log/syslog -out server.key 1024

サーバ証明書のCSRの作成
# openssl req -new -key server.key -out server.csr
CAと同様に国名などの入力。Common Name に「ブラウザからアクセスするときに使用するドメイン名」を入力すること。

シリアルナンバーのファイルを作成し
# echo 01 > ca.srl

証明書の発行
# openssl x509 -req -days 730 -CA ca.crt -CAkey ca.key -in server.csr -out server.crt

作成した証明書の内容は、以下のコマンドで確認可能
# openssl x509 -in server.crt -text

で、ブラウザ側(クライアントPC)には、(何らかの安全な方法で)ca.crt をコピーし、証明書をインポートorインストールし、「この証明書を信頼する」とかそんな設定を行う。

サーバ(apache-ssl)側は、/etc/apache-ssl/httpd.conf の以下の設定を行う。(パスは作業ディレクトリ)
SSLCACertificateFile /etc/ssl/servkey/ca.crt
SSLCertificateFile /etc/ssl/servkey/server.crt
SSLCertificateKeyFile /etc/ssl/servkey/server.key

関連: mod_ssl(src)[2005-08-09-1], mod-ssl(deb)[2005-03-25-1]
Referrer (Inside): [2008-02-22-1] [2005-08-28-2]
2005-08-27 Sat (他の年の同じ日: 2004 2006)

久々の豚キムチ丼
2005-08-27-1 / カテゴリ: [diary] / [permlink]

近所のスーパーへ、部屋の芳香剤を買いに行ったはずが、いつのまにか食材を買い込んでしまった。つーわけで、久々に豚キムチ丼を作って食べた。

材料(どんぶり1.5杯分)
豚肉180g220y
白菜1/849y
ごはん二合くらい部屋にあった
ごま油適当部屋にあった
キムチの素適当部屋にあった
炒めて混ぜるだけ〜:p

豚キムチ丼

表の練習…

今日の戦利品
2005-08-26-2 / カテゴリ: [diary][ぬいぐるみ] / [permlink]

ドコモダケ リラックマ

白いほうはコリラックマって言うのね…[[http://www.san-x.co.jp/relaxuma/top.html]]
うちにあるリラックマ関連はほとんどコリラックマだ…
Referrer (Inside): [2005-09-05-1]

Perl 5.005 (以下)でファイルハンドルをスカラ変数に保持
2005-08-26-1 / カテゴリ: [programming][perl] / [permlink]

ぺるりめも - ハンドル名を変数に入れる の方法では、undef のスカラ変数を open の引数にしても
Can't use an undefined value as filehandle reference at ./test.pl line 11.
Can't use an undefined value as a symbol reference at ./test.pl line 11.    (use strict時)
で、実行できない。

で、version 5.005_03 built for sun4-solaris で試した結果、
my $fh = "";
と、とりあえず空文字にしておけばクリアできた…
いいのかな。

で、これだと気持ち悪いので、FileHandle モジュールを使う方法。
use FileHandle;

my $fh;
$fh = new FileHandle "sample.txt", "r"
  or die "cannot open: $!\n";
while (<$fh>) {
  print;
}
$fh->close;
書式が C 言語っぽい…
2005-08-25 Thu (他の年の同じ日: 2006)

stoneで穴掘り(より)
2005-08-25-1 / カテゴリ: [debian][network][SSL] / [permlink]

http://wiki.spc.gr.jp/tunnel/?DigByStone (stoneで穴掘り)

うぁー、ガッコの友達に(随分前に)教えてもらって試しに
(A) PC(winXP)

(B) 社外アクセス用proxyサーバ(一部の社内サーバにもアクセス可能)

(C) 社内サーバ
つー環境で、(C) を外部のサーバに見立ててやってみたら、見事に (A)->(C) の ssh がアクセスできた…。
あ、(A) の PC のネットワークは外部には全く出れず(名前解決もできない)、http(80,8080), https(443) のみ、(B) を proxy に Internet にアクセスできる、という環境です。で、(A), (B), (C) 全て異なるネットワークにいます。

ちなみに、(C) は debian sarge で、
# aptitude install stone
で、必要なものは揃う。

(A) の win 用の stone は http://www.gcd.org/sengoku/stone/Welcome.ja.html より。
「stone version 2.2e for Win32 OpenSSL 版パッケージ」をダウンロードし、適当なディレクトリに展開し、コマンドプロンプトから実行。

まぁ、ネットワークが違うので、実際に外部に出れるかはわかんないけどね。



05/08/29 追記
出れた :p

プロトタイプを使ってサブルーチンに複数の配列を渡す
2005-08-23-1 / カテゴリ: [programming][perl] / [permlink]

コード
sub print_a_list(\@\@) {
  my $list1 = shift;
  my $list2 = shift;
  foreach my $a (@$list1) {
    print "$a\n";
  }
}

@array1 = (1,2,3);
@array2 = (4,5,6);
print_a_list(@array1, @array2);

結果
% ./test.pl
1
2
3

プロトタイプとして \@ を指定することで、配列のリファレンスとして受け取ることを強制できる。
サブルーチン内では結局配列のリファレンスをいじるハメになるけど、呼び出し側は引数を配列のまま渡すことができる。
2005-08-22 Mon (他の年の同じ日: 2012)

馬丼
2005-08-22-1 / カテゴリ: [diary] / [permlink]

たべた。レトルトですけどね。熊本空港で売ってます:D
馬丼
2005-08-21 Sun (他の年の同じ日: 2004 2007)

Odd number of elements in anonymous hash at xxx line yyy.
2005-08-21-1 / カテゴリ: [debian][perl] / [permlink]

コード書いていたら、warning だけど、そんなメッセージが出た。英単語の vocabulary にはうといんで、とりあえず google につっこむと、Movable Type (Blog??) の導入時エラーで未解決の記事ばっかりヒット。ダメじゃん。
ってことで、
$ man perldiag
マニュアル perldiag は登録されていません
って、おい^^;

man perl はあるけど(巨大なPerlのマニュアルの目次みたいなモン)、ほかは全然インストールされてないっぽい。
http://www.debian.org/distrib/packages でみると、perl-doc パッケージに含まれるみたいだけど、なにやらすさまじい量のドキュメントがインストールされるっぽいのでパス^^;

なので、エラーメッセージの文意そのもの、、、というより "Odd" の意味を調べる。「奇数」

あぁ、ハッシュ内のリストの要素が奇数っていってるのね…。馬鹿だな>自分

該当コード
  $self->{testCase} = {
  		       0 => plainSent(),
		       1 => dataIncNull(),
		      };
作りかけだったので、plainSent サブルーチンは値を返していたけど、dataIncNull は何も return してなかったのね。

まぁ、後々不便なので、perl-doc はインストールしておきませう。

man perldiag(1) より該当部分を引用
       Odd number of elements in anonymous hash
           (W misc) You specified an odd number of elements to initialize a
	    hash, which is odd, because hashes come in key/value pairs.

えーと、ハッシュのリファレンスのときが↑のメッセージになって、通常のハッシュの場合のメッセージは "Odd number of elements in anonymous hash at xxx.pl line N." と出るみたいね。



2005/08/23 追記
奇数: odd number
偶数: even number
2005-08-20 Sat (他の年の同じ日: 2004 2006 2007)

今日の戦利品
2005-08-20-5 / カテゴリ: [diary][ぬいぐるみ] / [permlink]

友達と卓球してきた。革靴でやったから、マメできちゃったよ。。。

カウンター横でゲット(x2)
ブルーテディ

次の日、筋肉痛に…

fetchmailエラー cannot get a range of message sizes
2005-08-20-4 / カテゴリ: [linux][command][POP3][メール] / [permlink]

ここ数日、メールが全く届かないからおかしいなぁと思っていたら(個人メールはなくても、ML と spam は届くはず...orz)、fetchmail がエラー吐いていた。(というか全然気づかんかった...)
$ fetchmail 
fetchmail: 185 通のメッセージがアカウント zaki@mail.example.org , サーバ mail.example.org 宛に届いています。 (933330 バイト)
fetchmail: cannot get a range of message sizes (1-100).
fetchmail: クライアント/サーバプロトコルエラーが mail.example.org よりメールを 受信している最中に発生しました。
fetchmail: Query status=4 (PROTOCOL)
んぎゃぁ。

で、調べてみると、
http://lists.ccil.org/pipermail/fetchmail-friends/2003-October/008061.html
> This is the log:
fetchmail: cannot get a range of message sizes (1-14).

i have added fetchsizelimit 0 for this account and now it works (wasn't
necessary with 6.2.4)
新しい Bug なのね。

というか
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=323027
これかなぁ。

まぁ、
$ fetchmail --version
:
  Fetch message size limit is 100 (--fetchsizelimit 100).
:
と(そんな設定はしていないのに)なってるんで、.fetchmailrc に
fetchsizelimit 0
追加しておけば、とりあえず fetch できた。


数日前に、友人から結婚します(未来形)のご報告メールが...

alternativesアプリの変更
2005-08-20-3 / カテゴリ: [linux][debian] / [permlink]

x-terminal-emulator や x-www-browser 等のコマンドは、/etc/alternatives 以下に symlink があり、実態は rxvt や Eterm だったり、mozilla-firefox や galeon だったりする。
で、X の[ブラウザ]ボタンなんかでアプリを起動すると、大抵はここから起動されたりする。(…とりあえず、xfce4 on debian では)
また、単に emacs を実行すると、emacs20 だったり emacs21 だったり xemacs だったりするのも、この辺の設定。

で、これを確認・変更するには

# update-alternatives --display x-terminal-emulator
x-terminal-emulator - status is manual.
 link currently points to /usr/bin/Eterm
/usr/bin/krxvt - priority 9
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/krxvt.1.gz
/usr/bin/crxvt - priority 8
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/crxvt.1.gz
/usr/bin/grxvt - priority 8
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/grxvt.1.gz
/usr/bin/Eterm - priority 10
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/Eterm.1.gz
Current `best' version is /usr/bin/Eterm.
で、/usr/bin/Eterm になっている(2行目) 推奨は Eterm らしい(最後の行)
(つーか、ls -l /etc/alternatives/x-terminal-emulator でもいいけど)
また、Eterm 以外に設定できるターミナルエミュレータの候補として、krxvt, crxvt, grxvt が表示される。

候補リストを表示するだけなら
# update-alternatives --list x-terminal-emulator
/usr/bin/krxvt
/usr/bin/crxvt
/usr/bin/grxvt
/usr/bin/Eterm

設定(リンク)を変更するには
# update-alternatives --config x-terminal-emulator

There are 4 alternatives which provide `x-terminal-emulator'.

  Selection    Alternative
-----------------------------------------------
      1        /usr/bin/krxvt
      2        /usr/bin/crxvt
      3        /usr/bin/grxvt
*+    4        /usr/bin/Eterm

Press enter to keep the default[*], or type selection number:
となるので、krxvt に変更するには
Press enter to keep the default[*], or type selection number: 1
Using `/usr/bin/krxvt' to provide `x-terminal-emulator'.
と。

SMTPでNULL(0x00)文字を送信する
2005-08-20-2 / カテゴリ: [programming][perl][SMTP] / [permlink]

MUA(メーラ)や telnet じゃちょっと無理だけど、プログラム書いちゃえば簡単。
Net::SMTP, Mail::Sender, Mail::Sendmail の3つを試したが、どれも送信可能。RFC的にはコントロールコードを含むascii文字を送信して良いと読めるので、MTAは処理しなければならない…と思う。少なくとも、MTA が core 吐いて死んだりとかは NG でしょう。

RFC2821 4.5.2 Transparency より引用
   The mail data may contain any of the 128 ASCII characters. All
   characters are to be delivered to the recipient's mailbox, including
   spaces, vertical and horizontal tabs, and other control characters.

Net::SMTP版
use Net::SMTP;
$smtp = Net::SMTP->new("localhost",
                       Debug => 1) or die;
$smtp->mail('from@mail.example.org');
$smtp->to('to@mail.example.org');
$smtp->data();
$smtp->datasend("\x1\x0\x1");
$smtp->dataend();
$smtp->quit();

Mail::Sender版
use Mail::Sender;
$sender = new Mail::Sender{smtp => 'localhost',
                           from => 'from@mail.example.org'};
$sender->MailMsg({ to => 'to@mail.example.org',
                   msg => "\x1\x0\x1" });

Mail::Sendmail版
use Mail::Sendmail;
$Mail::Sendmail::mailcfg{mime} = 0;
sendmail( To => 'to@mail.example.org',
          From => 'from@mail.example.org',
          Message => "\x1\x0\x1" ) or die $Mail::Sendmail::error;

Mail::Sender は、デフォルトでは(MIME::QuotedPrintが使えれば)quoted-print エンコードして送信するので、mailcfg{mime} を false に設定する。

NTPを使ってマシンの時刻合わせ
2005-08-20-1 / カテゴリ: [linux][debian] / [permlink]

NTPサーバに問い合わせて、実行ホストの時刻を合わせる。
# aptitude install ntpdate
インストールと同時に、一旦時計あわせが実行される。

コマンドラインからの実行は
# ntpdate ntp1.jst.mfeed.ad.jp

# ntpdate -s ntp1.jst.mfeed.ad.jp
-s オプション付で、結果が syslog へ出力される。

debian的には、/etc/init.d/ntpdate にスクリプトが、/etc/default/ntpdate を見て実行できるみたいなので、/etc/default/ntpdate に NTP サーバを指定しておけばよいのかな。
NTPSERVERS="ntp1.jst.mfeed.ad.jp"
/usr/sbin/ntpdate はこのファイルを見るわけではないので注意。

あとは、/etc/cron.daily あたりに、/etc/init.d/ntpdate restart を実行するようにセットしておけばよいかな。
2005-08-19 Fri (他の年の同じ日: 2007)

子プロセス孫プロセスひ孫プロセス...を一気に殺す
2005-08-19-1 / カテゴリ: [programming][perl] / [permlink]

少なくとも子プロセスの pid はわかってるはずだから、プロセスグループ ID を取得して、kill する。
$pgrp = getpgrp $chld_pid;
kill -9, $pgrp;
kill の第一引数は、送りたいシグナル番号。

かなりドンくさいけどテストコード
if ($pid[0] = fork) {
  # oya;
  local $SIG{INT} = sub {
    my $pgrp = getpgrp $pid[0];
    print "pgrp: ", $pgrp, "\n";
    print "catch ", shift, " (oya)\n";
    kill -15, $pgrp;
    exit;
  };
  &loop;
}
elsif (defined $pid[0]) {

  if ($pid[1] = fork) {
    # ko
    local $SIG{TERM} = $SIG{HUP} = sub {
      print "catch ", shift, " (ko)\n";
      exit;
    };
    &loop;
  }
  elsif (defined $pid[1]) {

    local $SIG{CHLD} = 'IGNORE';

    if ($pid[2] = fork) {
      # mago
      local $SIG{TERM} = $SIG{HUP} = sub {
        print "catch ", shift, " (mago)\n";
        exit;
      };
      &loop;
    }
    elsif (defined $pid[2]) {
      # himago
      local $SIG{TERM} = $SIG{HUP} = sub {
        print "catch ", shift, " (himago)\n";
        exit;
        };
      &loop;
    }
  }
}

sub loop {
  while (1) {
    print "sleep ";
    sleep 1;
  }
}
kill にシグナル名を与えられないのは微妙に使いにくいかな??

実行
% ./test.pl
sleep sleep sleep sleep ^Cpgrp: 7060
catch INT (oya)
catch TERM (himago)
catch TERM (mago)
catch TERM (ko)
zsh: terminated  ./test.pl

100均で売ってる
2005-08-17-1 / カテゴリ: [diary] / [permlink]

友達(♂|26歳)に皿を買ってきてくれと頼まれたので、近所のスーパーに内蔵されている100均で買ってきてあげました。

マリー

あとは、リロ&スティッチも :D
(というより、その2種しか置いてなかった)
2005-08-10 Wed (他の年の同じ日: 2007)

多バイトファイル名の文字コード変更スクリプト
2005-08-10-3 / カテゴリ: [programming][perl] / [permlink]

というわけで試作。Perl 5.8+ 用。shift_jis -> eucjp 固定
#!/usr/bin/perl

use Encode qw(from_to);
use File::Find;

my $basedir = shift;
-d $basedir or die "Usage $0 dir\n";

find( sub {
        my $target = $_;
        sj2e($target) if -f $target;
      },
      $basedir);

find( sub {
        my $target = $_;
        sj2e($target) if -d $target;
      },
      $basedir);

sub sj2e {
  my $from = shift;
  my $to = $from;
  from_to($to, "shiftjis", "euc-jp");
  rename($from, $to) ? print "renamed: ", $File::Find::name, "\n" :
    print "renamed failed: ", $File::Find::name, "\n";
}
なんか、ムダに長いなぁ。ってか、1パスで動作させた方がスマートかも。
ascii のみのファイル/ディレクトリの場合は、同じファイル名への rename のため失敗するが、仕様です :p

smb.conf の文字コード設定が有効なのは global のみ??
2005-08-10-2 / カテゴリ: [linux][debian][samba] / [permlink]

/dev/hdd1 に SJIS でネーミングされたファイルが大量にある。
/dev/hdb1 に EUC-JP として、全部コピーしたい。

文字コードを設定した mount は、ext2/ext3 では使えず、smbfs や NTFS 等だけみたいなので、
hdd1 を dos charset = CP932 / unix charset = CP932
hdb1 を dos charset = CP932 / unix charset = eucJP-ms
として samba 共有し、win から cp すればクリアできると思ったが…

[global]セクションに設定したコード設定は有効だけど、それ以外のセクション([share-1]とか)は、コードの設定が効かない…

こーゆーことをしたかったんだけどなぁ。
[share-b]
   path = /mnt/hdb1
   comment = hdb1
   browseable = yes
   writable = yes
   create mask = 0644
   directory mask = 0755
   dos charset = CP932
   unix charset = eucJP-ms
	 
[share-d]
   path = /mnt/hdd1
   comment = hdd1
   browseable = yes
   writable = yes
   create mask = 0644
   directory mask = 0755
   dos charset = CP932
   unix charset = CP932

rename スクリプト作るのが手っ取り早いのかな。

HDD増設
2005-08-10-1 / カテゴリ: [linux][debian] / [permlink]

先月末に / が吹っ飛び、バックアップ用に /dev/hdb として使ってたやつを / (/dev/hda) に持ってきたので、新しく /dev/hdb としてセット。つか、買ったのはやっぱ先月末だったんだけど、フォーマットしてなかった。

パーティションの作成
# fdisk /dev/hdb
:
Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19457, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-19457, default 19457):
Using default value 19457

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       19457   156288321   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
めんどっちぃので、1パーティションブッタ切りで :D

フォーマット
# mkfs -t ext3 /dev/hdb1
mke2fs 1.37 (21-Mar-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
19546112 inodes, 39072080 blocks
1953604 blocks (5.00%) reserved for the super user
First data block=0
1193 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables:
:
:

マウント
# mkdir /mnt/hdb1
# mount /dev/hdb1 /mnt/hdb1/
# ls /mnt/hdb1/
lost+found/

買ったのは Seagate の ST3160021A で、160GB/7200rpm
某での書込みを見る限りでは、音量は結構静かな感じだったけど、サーバ用ってことでずっと 5400rpm のディスクばっかり使ってた自分には、ちょっとうるさく感じた…
2005-08-09 Tue (他の年の同じ日: 2006 2007)

Digest認証の実装
2005-08-09-2 / カテゴリ: [HTTP] / [permlink]

[2005-07-18-2]の続き。情報元は同じくHTTP 認証: 基本アクセス認証及びダイジェストアクセス認証(RFC2617 日本語訳)
サーバ側の digest 認証の設定は[2005-07-08-3], [2005-05-29-2]

パケットキャプチャすると、サーバ側(Apache 1.3.33/debian)のレスポンスは
HTTP/1.1 401 Authorization Required
Date: Tue, 09 Aug 2005 06:20:01 GMT
Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-15 mod_jk/1.2.5 mod_fastcgi/2.4.2 mod_ssl/2.8.22 OpenSSL/0.9.7d
WWW-Authenticate: Digest realm="relm", nonce="98ca43d0f7a1e2641ea305f44db89cca1123568401"
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
こんな感じ。
RFC2617に載っている、'algorithm' や 'qop' といった指示子がないな。ま、使用す[べきである]だから、いいのか(qop-options)。必要なのは realm と nonce かな。
algorithm がない場合は、"MD5" 扱いとのこと。

 challenge = "Digest" digest-challenge

 digest-challenge = 1#( realm | [ domain ] | nonce |
                     [ opaque ] |[ stale ] | [ algorithm ] |
                     [ qop-options ] | [auth-param] )

んで、クライアント(mozilla 1.7.6)のリクエスト
GET /~zaki/auth/digest/ HTTP/1.1
Host: www.example.org
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.6) Gecko/20050319
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Authorization: Digest username="zaki", realm="relm", nonce="98ca43d0f7a1e2641ea305f44db89cca1123568401", uri="/~zaki/auth/digest/", response="52b08746ab144ba29cf2fd6fe31174ca"
認証のための HTTP リクエストは Authorization ヘッダ。
 credentials = "Digest" digest-response
 digest-response = 1#( username | realm | nonce | digest-uri
                 | response | [ algorithm ] | [cnonce] |
                 [opaque] | [message-qop] |
                     [nonce-count] | [auth-param] )

んで、
username 使用するユーザ名 (username="zaki")
realm 使用するrealm(レスポンスヘッダにある) (realm="relm" <- スペルミスった)
nonce レスポンスにある nonce そのまま (nonce="98..."
digest-uri リクエストするファイル (uri="/~zaki/auth/digest/")
response ダイジェスト (response="52...")

でもって、response は、
"qop" が "auth" か "auth-int" である場合:
 request-digest = <"> < KD ( H(A1), unq(nonce-value)
                                     ":" nc-value
                                     ":" unq(cnonce-value)
                                     ":" unq(qop-value)
                                     ":" H(A2)
                             ) <">

"qop" 指示子が与えられない場合 (RFC 2069 との互換性のための構文)
    request-digest =
               <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) ) > <">

A1 と A2 についての定義は以下を見よ。
とゆーことなので、 "KD(H(A1), unq(nonce-value) ":" H(A2)" ということ。

KD(xx, xx) は
 H(data) = MD5(data)
また
 KD(secret, data) = H(concat(secret, ":", data))
なので、"xx:xx" の md5sum 値

H(xxx) は、"xxx" の md5sum 値

A1 は
 A1 = unq(username-value) ":" unq(realm-value) ":" passwd
で、ユーザ名:zaki, パス:zaki、realm:relm であれば、
$ printf 'zaki:relm:zaki' | md5sum
f85142f6a9b00f64cd3afb151ba80505
こうなる。

A2 は
"qop" 指示子の値が "auth" か指定されない場合、A2 は:
A2 = Method ":" digest-uri-value

"qop" の値が "auth-int" ならば、A2 は:
A2 = Method ":" digest-uri-value ":" H(entity-body)
で、/~zaki/auth/digest/ への GET リクエストであれば、
$ printf 'GET:/~zaki/auth/digest/' | md5sum
b513229595a7eff3223d5412614d2ba4
となる。

で、元の "KD(H(A1), unq(nonce-value) ":" H(A2)" に戻ると、サーバのレスポンスの nonce が "98ca43d0f7a1e2641ea305f44db89cca1123568401" なので
$ printf 'f85142f6a9b00f64cd3afb151ba80505:98ca43d0f7a1e2641ea305f44db89cca1123568401:b513229595a7eff3223d5412614d2ba4' | md5sum
52b08746ab144ba29cf2fd6fe31174ca
になる。



んーと、Digest認証は、パスワードが平文でネットワークを流れないから安全・サーバ上にパスワードを平文で保存しないので安全って聞くけど、前者は良いとして、後者は、パスワードファイル(例えば .htpasswd)の中身が
zaki:relm:f85142f6a9b00f64cd3afb151ba80505
こーなってんだよね…。'zaki'って生パスワードではないけど、強調するほど安全じゃないよな。このファイル(のハッシュ値)と nonce 値さえ取られてしまえば、あとは md5sum 計算するだけだし。

多分

Apache(1.x), mod_ssl で https
2005-08-09-1 / カテゴリ: [unix][SSL][Apache] / [permlink]

オレオレ CA 付で、新規に CA とサーバ鍵を生成する。
参考 Apache+mod SSLのインストールと設定
非 root で作業(ぉぃ

$ mkdir -p ~/local/src/apache
$ cd ~/local/src/apache
$ wget http://www.modssl.org/source/mod_ssl-2.8.23-1.3.33.tar.gz
$ wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/apache_1.3.33.tar.gz
$ gzip -dc mod_ssl-2.8.23-1.3.33.tar.gz | tar xvf -
$ gzip -dc apache_1.3.33.tar.gz | tar xvf -

つか、mod_ssl の INSTALL にインストール手順が載ってるので、そのまんま作業すれば良い。

(↓ prefix の指定方法を間違ってます。後述)
$ cd mod_ssl-2.8.23-1.3.33
$ ./configure --with-apache=../apache_1.3.33 --with-ssl=/usr/local/ssl --prefix=~/local/apache-ssl
Configuring mod_ssl/2.8.23 for Apache/1.3.33
 + Apache location: ../apache_1.3.33 (Version 1.3.33)
 + OpenSSL location: /usr/local/ssl
 + Auxiliary patch tool: ./etc/patch/patch (local)
 + Applying packages to Apache source tree:
   o Extended API (EAPI)
   o Distribution Documents
   o SSL Module Source
   o SSL Support
   o SSL Configuration Additions
   o SSL Module Documentation
   o Addons
Done: source extension and patches successfully applied.

Configuring for Apache, Version 1.3.33
 + using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
 + configured for Solaris 280 platform
 + setting C compiler to gcc
 + setting C pre-processor to gcc -E
 + using "tr [a-z] [A-Z]" to uppercase
 + checking for system header files
 + adding selected modules
    o ssl_module uses ConfigStart/End
      + SSL interface: mod_ssl/2.8.23
      + SSL interface build type: OBJ
      + SSL interface compatibility: enabled
      + SSL interface experimental code: disabled
      + SSL interface conservative code: disabled
      + SSL interface vendor extensions: disabled
      + SSL interface plugin: Vendor DBM (libc)
      + SSL library path: /opt/usr/local/ssl
      + SSL library version: OpenSSL 0.9.7b 10 Apr 2003
      + SSL library type: installed package (stand-alone)
 + enabling Extended API (EAPI)
 + using system Expat
 + checking sizeof various data types
 + doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/modules/standard
Creating Makefile in src/modules/ssl

Now proceed with the following commands:
 $ cd ../apache_1.3.33
 $ make
 $ make certificate
 $ make install


$ cd ../apache_1.3.33
$ make
:
(コンパイル)
:

TYPE=custom で、CA とサーバ鍵をセットで作る(作ったサーバ証明書をCAに署名させる)
$ make certificate TYPE=custom
make[1]: Entering directory `/export/home/miyazaki/local/src/apache/apache_1.3.3
3/src'
SSL Certificate Generation Utility (mkcert.sh)
Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reserved.

Generating custom certificate signed by own CA [CUSTOM]
______________________________________________________________________

STEP 0: Decide the signature algorithm used for certificates
The generated X.509 certificates can contain either
RSA or DSA based ingredients. Select the one you want to use.
Signature Algorithm ((R)SA or (D)SA) [R]:
______________________________________________________________________

STEP 1: Generating RSA private key for CA (1024 bit) [ca.key]
1578372 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
.....................++++++
...++++++
e is 65537 (0x10001)
______________________________________________________________________

STEP 2: Generating X.509 certificate signing request for CA [ca.csr]
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
1. Country Name             (2 letter code) [XY]:JP
2. State or Province Name   (full name)     [Snake Desert]:Kanagawa
3. Locality Name            (eg, city)      [Snake Town]:Yokohama
4. Organization Name        (eg, company)   [Snake Oil, Ltd]:home
5. Organizational Unit Name (eg, section)   [Certificate Authority]:admin
6. Common Name              (eg, CA name)   [Snake Oil CA]:foo
7. Email Address            (eg, name@FQDN) [ca@snakeoil.dom]:www@www.example.org
8. Certificate Validity     (days)          [365]:
______________________________________________________________________

STEP 3: Generating X.509 certificate for CA signed by itself [ca.crt]
Certificate Version (1 or 3) [3]:
Signature ok
subject=/C=JP/ST=Kanagawa/L=Yokohama/O=home/OU=admin/CN=foo/emailAddress=www@www.example
.org
Getting Private key
Verify: matching certificate & key modulus
Verify: matching certificate signature
../conf/ssl.crt/ca.crt: /C=JP/ST=Kanagawa/L=Yokohama/O=home/OU=admin/CN=foo/emailAddress
=www@www.example.org
error 18 at 0 depth lookup:self signed certificate
OK
______________________________________________________________________

STEP 4: Generating RSA private key for SERVER (1024 bit) [server.key]
1578471 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
..............++++++
...............................++++++
e is 65537 (0x10001)
______________________________________________________________________

STEP 5: Generating X.509 certificate signing request for SERVER [server.csr]
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
1. Country Name             (2 letter code) [XY]:JP
2. State or Province Name   (full name)     [Snake Desert]:Kanagawa
3. Locality Name            (eg, city)      [Snake Town]:Yokohama
4. Organization Name        (eg, company)   [Snake Oil, Ltd]:home
5. Organizational Unit Name (eg, section)   [Webserver Team]:foo
6. Common Name              (eg, FQDN)      [www.snakeoil.dom]:www.example.org
7. Email Address            (eg, name@fqdn) [www@snakeoil.dom]:www@www.example.org
8. Certificate Validity     (days)          [365]:
______________________________________________________________________

STEP 6: Generating X.509 certificate signed by own CA [server.crt]
Certificate Version (1 or 3) [3]:
Signature ok
subject=/C=JP/ST=Kanagawa/L=Yokohama/O=home/OU=foo/CN=www.example.org/emailAddress
=www@www.example.org
Getting CA Private Key
Verify: matching certificate & key modulus
Verify: matching certificate signature
../conf/ssl.crt/server.crt: OK
______________________________________________________________________

STEP 7: Enrypting RSA private key of CA with a pass phrase for security [ca.key]
The contents of the ca.key file (the generated private key) has to be
kept secret. So we strongly recommend you to encrypt the server.key file
with a Triple-DES cipher and a Pass Phrase.
Encrypt the private key now? [Y/n]: n
Warning, you're using an unencrypted private key.
Please notice this fact and do this on your own risk.
______________________________________________________________________

STEP 8: Enrypting RSA private key of SERVER with a pass phrase for security [ser
ver.key]
The contents of the server.key file (the generated private key) has to be
kept secret. So we strongly recommend you to encrypt the server.key file
with a Triple-DES cipher and a Pass Phrase.
Encrypt the private key now? [Y/n]: n
Warning, you're using an unencrypted RSA private key.
Please notice this fact and do this on your own risk.
______________________________________________________________________

RESULT: CA and Server Certification Files

o  conf/ssl.key/ca.key
   The PEM-encoded RSA private key file of the CA which you can
   use to sign other servers or clients. KEEP THIS FILE PRIVATE!

o  conf/ssl.crt/ca.crt
   The PEM-encoded X.509 certificate file of the CA which you use to
   sign other servers or clients. When you sign clients with it (for
   SSL client authentication) you can configure this file with the
   'SSLCACertificateFile' directive.

o  conf/ssl.key/server.key
   The PEM-encoded RSA private key file of the server which you configure
   with the 'SSLCertificateKeyFile' directive (automatically done
   when you install via APACI). KEEP THIS FILE PRIVATE!

o  conf/ssl.crt/server.crt
   The PEM-encoded X.509 certificate file of the server which you configure
   with the 'SSLCertificateFile' directive (automatically done
   when you install via APACI).

o  conf/ssl.csr/server.csr
   The PEM-encoded X.509 certificate signing request of the server file which
   you can send to an official Certificate Authority (CA) in order
   to request a real server certificate (signed by this CA instead
   of our own CA) which later can replace the conf/ssl.crt/server.crt
   file.

Congratulations that you establish your server with real certificates.

make[1]: Leaving directory `/export/home/miyazaki/local/src/apache/apache_1.3.33
/src'

インストール
$ make install

…うまくいってるように見えたけど、~/local/apache-ssl がない。
探してみると、作業ディレクトリ直下に '~' ディレクトリができてる… orz

つーわけで、--prefix は絶対ディレクトリ指定にすれば OK
でもって、インストールディレクトリ(~/local/apache-ssl)以下にある conf/ssl.crt/ca.crt をクライアント(ブラウザ) にインポートしてやれば、OK

debian での apache + mod-ssl インストール[2005-03-25-1]と似たようなものか。
Referrer (Inside): [2005-08-28-1]

lm_sensors を使ってCPU温度の取得
2005-08-08-3 / カテゴリ: [linux][debian] / [permlink]

今更ドキュメントシリーズ

# aptitude install lm-sensors
:
The following NEW packages will be installed:
  i2c-2.4.27-2-386 libsensors3 lm-sensors lm-sensors-2.4.27-2-386
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
:
debconf は <Yes> 押下で終わり
ちなみに現状、OSインストール直後の kernel-image を使ってます。(not カスタムカーネル)
lm-sensors-2.4.27-2-386 が kernel-module になってるみたいで、modprobe なんかでロード可能になる。

# sensors-detect
:
......[Enter]連打で。
:
To make the sensors modules behave correctly, add these lines to
/etc/modules:

#----cut here----
# I2C adapter drivers
i2c-piix4
# I2C chip drivers
lm78
eeprom
#----cut here----

Do you want to add these lines to /etc/modules automatically? (yes/NO)

モジュールのロード(明示的にやんなくても良いのかな?)
# modprobe i2c-piix4
# modprobe lm78
# modprobe eeprom

で、
# sensors
lm79-i2c-0-2d
Adapter: SMBus PIIX4 adapter at 5000
VCore 1:   +2.03 V  (min =  +0.02 V, max =  +1.74 V)   ALARM
VCore 2:   +1.49 V  (min =  +0.98 V, max =  +1.39 V)   ALARM
+3.3V:     +3.20 V  (min =  +3.95 V, max =  +1.66 V)   ALARM
+5V:       +5.11 V  (min =  +2.96 V, max =  +2.87 V)   ALARM
+12V:     +11.78 V  (min =  +5.05 V, max =  +8.44 V)   ALARM
-12V:     -11.75 V  (min =  -6.33 V, max =  -0.45 V)   ALARM
-5V:       -5.03 V  (min =  -0.39 V, max =  -2.36 V)   ALARM
fan1:        0 RPM  (min = 25000 RPM, div = 2)          ALARM
fan2:        0 RPM  (min = 28125 RPM, div = 2)          ALARM
fan3:        0 RPM  (min = 6136 RPM, div = 2)          ALARM
temp:      +47.0 C  (high =   +30 C, hyst =  +116 C)   ALARM
vid:       +2.00 V

eeprom-i2c-0-50
Adapter: SMBus PIIX4 adapter at 5000
Memory type:            SDR SDRAM DIMM
Memory size (MB):       256

eeprom-i2c-0-51
Adapter: SMBus PIIX4 adapter at 5000
Memory type:            SDR SDRAM DIMM
Memory size (MB):       128

eeprom-i2c-0-52
Adapter: SMBus PIIX4 adapter at 5000
Memory type:            SDR SDRAM DIMM
Memory size (MB):       256
なんか、電圧とかの min/max が変…
つか、FAN回転数とれてないなぁ。

/etc/init.d/lm-sensors なんてある…
# /etc/init.d/lm-sensors start
Setting sensors limits: done.
# ps aux | grep lm
root     26135  0.0  0.0  1536  456 pts/16   R+   15:09   0:00 grep lm
daemon じゃないのね。
中身は
:
case "$1" in
  start)
        echo -n "Setting sensors limits:"
        /usr/bin/sensors -s 1> /dev/null 2> /dev/null
        /usr/bin/sensors 1> /dev/null 2> /dev/null
        echo " done."
        ;;
  stop)
        ;;
:
と、limits を設定するスクリプトみたい。

で、その後は
:
VCore 1:   +2.03 V  (min =  +1.90 V, max =  +2.10 V)
VCore 2:   +1.49 V  (min =  +1.90 V, max =  +2.10 V)   ALARM
+3.3V:     +3.20 V  (min =  +3.14 V, max =  +3.46 V)
+5V:       +5.11 V  (min =  +4.74 V, max =  +5.24 V)
+12V:     +11.78 V  (min = +11.36 V, max = +12.58 V)
-12V:     -11.75 V  (min = -12.59 V, max = -11.33 V)
-5V:       -5.01 V  (min =  -5.25 V, max =  -4.74 V)
fan1:        0 RPM  (min = 25000 RPM, div = 2)          ALARM
fan2:        0 RPM  (min = 28125 RPM, div = 2)          ALARM
fan3:        0 RPM  (min = 6136 RPM, div = 2)          ALARM
temp:      +47.0 C  (high =   +30 C, hyst =  +116 C)   ALARM
vid:       +2.00 V
:
温度と電圧についてはちゃんと取れるようになった(多分)
FANはどうなってんだろ…??

えーと、後は、rrdtool に食わせるようにすれば良いのか。現状、グラフにして楽しげなのは温度くらいかな。

tar アーカイブから、部分的にファイルを取り出す。
2005-08-08-2 / カテゴリ: [linux][command] / [permlink]

$ tar tzvf tmp.tar.gz
tmp/telnet/terminal.c
tmp/telnet/tn3270.c
tmp/telnet/types.h
tmp/telnet/utilities.c
tmp/test.cat
tmp/test.grep
tmp/unison.test/
tmp/unison.test/dira/
tmp/unison.test/dirb/
tmp/zzz/
tmp/zzz/1.0.6/
tmp/zzz/1.0.6/zzz.txt
tmp/zzz/1.0.7/
tmp/zzz/1.0.7/zzz.txt
tmp/zzz/today/
つー、状態で

$ tar zxvf tmp.tar.gz tmp/zzz
tmp/zzz/
tmp/zzz/1.0.6/
tmp/zzz/1.0.6/zzz.txt
tmp/zzz/1.0.7/
tmp/zzz/1.0.7/zzz.txt
tmp/zzz/today/

ls をリダイレクトしたときに、1行複数項目表示
2005-08-08-1 / カテゴリ: [unix][command] / [permlink]

$ ls -C | more

オプションなしで ls をリダイレクト・パイプしたときは1行1エントリになる(つか、これがデフォルトみたい)。
       出力は標準出力に対して行われ、 -C オプションで複数列出力が要求されな い
       限 り、1 行に 1 エントリである。しかし、端末に対する出力では、出力が 1
       列または複数列のどちらになるかが定められていない。オプション -1 と -C
       は、それぞれ 1 列出力と複数列出力を強制させるために使用される。
man ls より
2005-08-05 Fri (他の年の同じ日: 2004 2007)

SMTP over SSL(starttls)でエラー
2005-08-05-4 / カテゴリ: [linux][debian][squirrelmail] / [permlink]

Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL 	routines:SSL3_GET_RECORD:wrong version number in /usr/share/squirrelmail/class/deliver/Deliver_SMTP.class.php on line 57

Warning: fsockopen(): php_stream_sock_ssl_activate_with_method: SSL handshake/connection failed in /usr/share/squirrelmail/class/deliver/Deliver_SMTP.class.php on line 57

Warning: fsockopen(): failed to activate SSL mode 2 in /usr/share/squirrelmail/class/deliver/Deliver_SMTP.class.php on line 57
えー
サーバ証明が正常に行われないからかな?
SSL/TLSを用いたメールの送受信について

さすがにこれは手の打ちようがない(証明書の検証をしない設定があれば別か)ので、メール送信時は tls 不使用ってことにするか。

つか、squirrelmail 以外なら検証skipで送れるから、緊急用扱いだし、ま、いっか。

アカウント名の別名を作る
2005-08-05-3 / カテゴリ: [linux][debian][imap] / [permlink]

courier-imap の、ね。
# userdb foo@example.sakura.ne.jp set home=/home/zaki uid=1000 gid=1000
# userdbpw -hmac-md5 | userdb foo@example.sakura.ne.jp set imap-hmac-md5pw
# makeuserdb

これで、imap の認証と smtp の認証に個別のアカウントを設定できない squirrelmail に対応 ^^;

[追記]
OSアカウント 'zaki' の認証に、ユーザ名 'foo@example.sakura.ne.jp' で認証する、というお話。
(んで、~zaki/Maildir 以下のメールを閲覧する、と)
[/追記]

インストール
2005-08-05-2 / カテゴリ: [linux][debian][squirrelmail] / [permlink]

woodyのとき[2005-03-25-3]と違う…
# aptitude install squirrelmail
debconf なし

# dpkg-reconfigure squirrelmail
Run /usr/sbin/squirrelmail-configure as root to configure/upgrade config.
そうですか。

で、設定したのは、
SMTP ... さくらのMTAを使うため localhost:25 から変更, auth や tls の設定
IMAP ... 自サーバ用の設定 login -> cram-md5
文字コード ... en_US/iso-8859-1 を ja_JP/iso-2022-jp
など

と、httpd.conf に
Alias /dirname /usr/share/squirrelmail
追加

vncserver のパスワード変更
2005-08-05-1 / カテゴリ: [linux][アプリ] / [permlink]

vncserver 停止中に
$ vncpasswd
Password:
Verify:
で変更

もしくは、~/.vnc/passwd を削除して、再度 vncserver を起動する(?)

ImageMagick でスクリーンショットをとる
2005-08-04-2 / カテゴリ: [linux][debian][X] / [permlink]

デスクトップ全体を保存する
$ import -window root foobar.png

ただ、これだと、"import を実行するターミナルが含まれてちょっと困る" 場合は、Ctrl+Alt-Fn でコンソールへ移り、
$ export DISPLAY=:0.0
$ sleep 6; import -window root foobar.png

で GO
(6秒以内に X の画面に移るべし)

no-ip DDNS 更新パッケージ
2005-08-04-1 / カテゴリ: [linux][debian] / [permlink]

あったのかー
# aptitude install no-ip
…って、何も聞かれない。/etc 直下もそれっぽいのなし…

dpkg -L でリストを見ても、設定ファイルぽいのはなし。
一応、/etc/init.d/no-ip と /usr/bin/no-ip はある。

man もあるので、とりあえず見る。
で、とりあえず /usr/bin/no-ip を実行
# no-ip
Can't locate configuration file /etc/no-ip.conf. (Try -c). Ending!

-c じゃなくて -C じゃないのかな…

# no-ip -C

Auto configuration for Linux client of no-ip.com.

Multiple network devices have been detected.

Please select the Internet interface from this list.

By typing the number associated with it.
0       eth0
1       eth1
0
ここで反応がなくなる… why?

/usr/bin/no-ip 自体はシェルスクリプトなんかじゃないようなので、strace でチェック
# strace -p 15625
:
connect(4, {sa_family=AF_INET, sin_port=htons(8245), sin_addr=inet_addr("8.4.112.97")}, 16) = ? ERESTARTSYS (To be restarted)
ネットワーク接続かい。8245/tcp なんか iptables で閉めとるわい。
# netstat -tau
:
tcp        0      1 192.168.0.10:33341      dynupdate.no-ip.co:8245 SYN_SENT 
:

しかたないので、ポート開放
# iptables -A INPUT -p tcp -s 8.4.112.97 --sport 8245 -j ACCEPT
# iptables -A OUTPUT -p tcp -d 8.4.112.97 --dport 8245 -j ACCEPT

# no-ip -C

Auto configuration for Linux client of no-ip.com.

Multiple network devices have been detected.

Please select the Internet interface from this list.

By typing the number associated with it.
0       eth0
1       eth1
0
Please enter the login/email string for no-ip.com  foo@mail.example.org
Please enter the password for user 'foo@example.org'  ******

Only one host [***.no-ip.***] is registered to this account.
It will be used.
Please enter an update interval:[30]  30
Do you wish to run something at successful update?[N] (y/N)  n

New configuration file '/etc/no-ip.conf' created.

で、
# /etc/init.d/no-ip start
Starting dynamic address update: no-ip.

# tail /var/log/syslog
:
Aug  4 23:36:10 localhost no-ip[15683]: v2.1.1 daemon started with NAT enabled 
Aug  4 23:36:10 localhost no-ip[15683]: ***.no-ip.*** set to 2**.2**.**.**
:
すばらしい ^^

ん? 8245/tcp は開けたままじゃないとダメなのかな?



2005/08/23 追記
8245/tcp へのアクセスは実行時のipアドレスチェックに必要(straceで確認)
2005-08-03 Wed (他の年の同じ日: 2007)

samba3 インストール・ユーザ設定
2005-08-03-2 / カテゴリ: [linux][debian][samba] / [permlink]

インストールはsargeがtestingだったときと同じ[2004-06-16-2]なので略。って、1年以上昔じゃん^^;

ユーザ設定は、woody の頃(1.x)は /etc/samba/smbpasswd だったのが、/var/lib/samba/passdb.tdb に変更されている。
でもって、aptitude install での debconf で "create samba password database" に yes で答えると、(多分)/etc/passwd 全員分のデータが入るので、困る場合はいったん削除(リネーム)して、新たにユーザ登録したほうが良いかも
# smbpasswd -a zaki
(ユーザ zaki を登録する場合)
そーすれば、/var/lib/samba/passdb.tdb が新規に生成される。

samba 自体の設定は /etc/samba/smb.conf で変わらず。

xfce4 インストール
2005-08-03-1 / カテゴリ: [linux][debian][X] / [permlink]

新サーバは、軽いとうわさの xfce4 を入れてみることにする。まぁ、wmaker にちょっと飽きたというのもある…^^;
# aptitude install xfce4

libpango1.0-common についての debconf
Do you want to entrust font management to defoma?
(*Yes / No)
Yes で

x-ttcidfont-conf についての debconf
Backend to use for TrueType handling on X:
(*freetype / xtt)
xtt で

…なんか足りない気がする。

# aptitude install xserver-xfree86

xserver-xfree86 の debconf
Attempt to autodetect video hardware?
(Yes / *No)
Yes がラクそーだけど…

Please select the XKB rule set to use.: xfree86
Please select your keyboard variant.: NULL
Please select your keyboard options.: ctrl:nocaps ... と思ったけど、HHKB Lite2 だからNULL :p
Please choose your mouse port.: /dev/psaux (defaultは/dev/input/miceだったけど、、、どうなんだろ)
Please choose the entry that best describes your mouse.: ImPS/2
Is your monitor an LCD device?: No (週末買っておけばよかった…)
Please choose a method for selecting your monitor characteristics.: Medium
Please select your monitor's best video mode.: 1024x768 @ 60Hz
Select the video modes you would like the X server to use.: 1024x768
Please select you desired default color depth in bits.: 24

で、インストール。

Auto 選択したハードウェア設定は、ちゃんと Identifier: "Matrox Graphics, Inc. MGA G400 AGP", Driver: "mga" で認識されてた :D

で、
$ startx
だめです。

Fatal server error:
could not open default font 'fixed';
the X servers font paths might be misconfigured, remote font server(s)
may be unreachable, and/or local fonts may not be installed or are not
configured correctly.

あぁ、
# aptitude install xfonts-base xfonts-100dpi xfonts-75dpi

で、startx で、X/xfce4 は起動。

んで、xterm しか入ってないので、
# aptitude install rxvt-ml

と、、コンソールで他バイト文字が化けるから LANG=C でやってて気づかなかったが、デフォルトで日本語化されてるっぽい? LANG=ja_JP.EUC-JP で startx すると、ボタン類が豆腐状態に^^;

フォント関連のインストールは、東風じゃなくてさざなみを使うのが今風なのかな…? って、パッケージ一覧には東風もあるなぁ。まぁ、さざなみ使ってみるか。
# aptitude install ttf-sazanami-gothic ttf-sazanami-mincho xfont
s-a12k12 xfonts-intl-japanese xfonts-marumoji
日本語表示OK!
画像

あとは、設定の[ユーザ・インターフェイス設定]で、フォントを好きなのに替えた。
2005-08-01 Mon (他の年の同じ日: 2004 2006)

cookie の expires のフォーマットに変換するスクリプト
2005-08-01-4 / カテゴリ: [programming][perl] / [permlink]

#!/usr/bin/perl

use POSIX;

my $fmt = shift;
if ($fmt =~ m#(\d{4})/(\d{2})/(\d{2})-(\d{2}):(\d{2}):(\d{2})#) {
  print strftime "%a, %d-%b-%Y %H:%M:%S\n", $6, $5, $4, $3, $2 - 1, $1 - 1900;
}
elsif (not defined $fmt) {
  print strftime "%a, %d-%b-%Y %H:%M:%S\n", localtime;
}
else {
  print "Invalid format\n";
  print "$0 YYYY/mm/dd-HH:MM:ss\n";
}
実行
$ cookiefmt 2005/08/10-16:17:11
Wed, 10-Aug-2005 16:17:11
だからナニ? って感じだけど^^;

metaタグでcookieのセット
2005-08-01-3 / カテゴリ: [html] / [permlink]

<meta http-equiv="Set-Cookie" content="key=value; expires=Mon, 8-Aug-2005 23:59:59 GMT; path=/">
静的な値しかセットできないけど…(∵;

バックアップすべきデータ(おうちサーバ)メモ
2005-08-01-2 / カテゴリ: [linux][debian] / [permlink]

/etc 以下丸ごと
~ 以下
~root 以下
/usr/local 以下(あれば)
/var/spool/cron/cron/crontab
あ、項目は意外と少ないな(違

あと、メールサーバとかやってれば、/var/mail とか /var/spool/ml とか、かな。
私的サーバは、メール関連はさくらに移管したので、全消しで問題ないけど^^;

とくに etc の下は、各サーバソフトウェアの設定ファイルは最悪再構築できるけど、sshd のサーバ鍵や SSL 関連は再生不可なので、絶対にバックアップしておくべし。

~ 以下は特に
.ssh/ 以下
Maildir 以下
.fetchmailrc .procmailrc .forward (メール関連)
.wl .folders .elmo/ (wl 関連)
.emacs .emacs.d/ (emacs 関連)
.plum/ .liece/ (irc 関連)
.screenrc .bashrc .zshrc .cshrc (シェル関連)
public_html/
bin/
local/
という感じ

bcc でWindowsプログラミングのコンパイル
2005-08-01-1 / カテゴリ: [win][programming][c] / [permlink]

hmiyazaki@chaource:~/work/prog/win/practice$ bcc base.c 
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
base.c:
警告 W8057 base.c 31: パラメータ 'hPrevInst' は一度も使用されない(関数 WinMain )
警告 W8057 base.c 31: パラメータ 'lpsCmdLine' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

これは -W オプションを付けてコンパイルする。
hmiyazaki@chaource:~/work/prog/win/practice$ bcc -W base.c 
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
base.c:
警告 W8057 base.c 31: パラメータ 'hPrevInst' は一度も使用されない(関数 WinMain )
警告 W8057 base.c 31: パラメータ 'lpsCmdLine' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

VisualStudio買おうかな。いや、でも、うーん…
Referrer (Inside): [2007-03-14-1]
2005-08
前の月 / 次の月 / 最新

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12