ls コマンドで出力されたファイル日時の書式を変換する

BSD 系の ls コマンドには --time-style オプションが無いので、これをUNIXタイムなどに変換するにはどうすりゃええんやろ、と調べてみたのさ。


touch dummy.file
set MOD_TIME="`ls -lT dummy.file | awk '{print $6,$7,$8,$9}'`"
date -j -f "%b %d %H:%M:%S %Y" "$MOD_TIME" '+%s'
こんな感じかー。

シェルスクリプトでURLエンコード


echo ${STRINGS} | nkf -MQ | sed -ez 's/=\n//g' | tr = %
これでいいのだろうか。
nkfMIME encode するときにブツブツ改行分割してくるから、そこを sed で除去する必要がありそうだった。
POSTデータを生成するなら、さらに半角スペース(%20)を "+" に置換する必要もある。
python とか使えばもっとシンプルなんだろうけど、ありふれたコマンドの組み合わせでやろうとすると案外面倒くさいなぁ。
……あれ、これだと改行が %0A にならないかも。あぁっ、めんどくせぇぇっ

echo ${STRINGS} | nkf -MQ | sed -ez 's/=\n//g' | sed -z 's/\n=/=0A=/g' | tr = %
こう?うわぁ、すごく泥臭い……。

DSN: Return receipt

メーラーデーモンから心当たりの無いメールがでるとのユーザからの問い合わせ。
メールの内容を読むと、Return receipt, Successfully delivered だそうな。
開封確認の類かなと見当を付けたけど、それがどういう仕組みで実現されていないことに思い当たった。そうだ、何年か前に気になりつつも、そのまま調べずにスルーしてたんだった。そんなワケで調べてみた。

      • -

まず、メールクライアントで「開封確認付きです、確認応答しますか?」みたいなメッセージが出る類のもの。これは、メールヘッダ Disposition-Notification-To: を指定した際にクライアントが勝手に振る舞うようだ。
でも、今回はメールクライアントではなく、デーモンが勝手に返しているようだ。若干回り道しながらググると、かつてはメールヘッダに Return-Receipt-To を付けるとデーモンが自動返答するというものだったらしいが、いまはそのやり方は廃止され、rcpt to の指定時に NOTIFY の内容を続けて指定するそうだ。あぁ、そうか。DSN でしたか。
つまりは、こんな
telnet to.example.jp 25
helo from.example.jp
mail from:
rcpt to: NOTIFY=success
data
mail data.
.
quit
みたいな。
なーるほどねー。なんか、こういう新しい知見を得るのって久しぶりの感覚だけど、この知識が再度活用される機会があるかどうかは、かなり微妙。21世紀にもなって、電子メールで開封確認とか配送確認を使う人って……。

  • www.puni.net/~mimori/smtp/service.html#dsn

コマンドラインで、UNIXタイムを日付に変換する。

どーやるんだっけかなぁとか考えてググってみたり、それぽいコマンドの man 引いたりしながらよくよく考えてみた末に、深く考える必要は無かった事に気がついた。

# date -d '00:00:00 1970-01-01 UTC + seconds'

なんだよ、ちょう簡単じゃねぇかよ。



追記20120706
FreeBSD とかの date コマンドではどうやるのかなーとあれこれ試した。

date -j -f "%s" "1341372967" "+%a %b %d %T %Z %Y"

こんな感じかしら?

中間証明書が正しく設定されているかを調べる。

ベリサインの仕様変更(鍵長の1,024→2,048bit化)過渡期において、中間証明書がちゃんと導入されたかどうかがよくわからないサーバがあり、あれこれと調べてみた。
"openssl 中間証明書 確認" とかそんなキーワードで検索してみると、さくっとヒットした。

どうやら、Certificate chain 項目内で、証明書のiと、その下段の証明書(中間証明書)のsの情報が一致していたらいいのかな。
ちなみに、openssl コマンドを叩いた中で生じているエラーは、CA証明書を指定することで回避できるようだ。

CentOS などの Linux ならば、バンドルされている(?) /usr/share/swamp/CA.pem を与えれば良いのかもしれない。