オンラインで .tty ファイルを再生する

TTYPLAYER
 
[2006-04-11]に紹介した ttyplay の Java アプレット版(GPL License)です。
デモも見られますが、便利そうです。
 
追記:
(20060-07-06) 非公式ですが、サンプル付きの class ファイル, フォントファイルのセットをここに置いておきます。すぐ使いたい方はこれをダウンロードして、example.html を開いてみてください。
 
参考:
– TTYPLAY で遊んでみる(rogue)

Linux でバイナリ処理をする

標準で入っている od というプログラムでバイナリダンプが可能です。

$ # /bin/sh を 2 バイト単位で 10 進ダンプする
$ od /bin/sh
$ # /bin/sh を 1 バイトずつ 16 進ダンプする
$ od -t xC /bin/sh
$ # /bin/sh を、1 バイトずつ 16 進ダンプし、同時に ASCII 文字でも確認する
$ od -t xCa /bin/sh

また、任意の ASCII コードを出力するのに、echo を利用することできます。

$ # 0x50 0x51 0x52 の文字(‘P’,’Q’,’R’)を、末尾に改行なしで出力する。
$ echo -en ‘\x50\x51\x52’
# Hello と改行つきで出力する。
$ echo -e ‘\x48\x65\x6C\x6C\x6F’

その他バイナリエディタ関係:
hex(ports: japanese/hex)
日本語文字列対応のバイナリダンプツール。
HexEdit(ports: editors/hexedit)
Emacs ライクなバイナリエディタツール。
Emacs の Hexl モードを使う
hi
vi ライクなバイナリエディタ。
参考:
– Manpage of OD
– Manpage of ECHO

端末での作業を記録/再生する

script コマンドは標準ではいってますが、必ずしも視認しやすいわけではないのであんまり使ってなかったりします。
 
そこで ttyrec (port: misc/ttyrec) というものを導入してみました。時系列まで記録され、実際に作業してるかのように再生できるあたりが面白いです。利用の仕方は script (や通常のシェル)と同じように

ttyrec output.tty

とすれば記録を開始します(入出力を記録して転送するだけのシェルで現在のシェルへの動作をラップする)。
終了するときは

exit

でOKです。
再生するときは

ttyplay output.tty

再生のみでファイル操作は行わないのですが、知らないと焦りそうです。
ちなみに

ttyplay -p output.tty

とすれば
tail -f の動作のような、リアルタイム再生も可能です。
拡張範囲が広くてなかなか面白いし便利ですね。
 
参考:
横着プログラミング第 4 回: ttyrec 端末を録画再生するツール

メモ – rsync のススメ

同期に使う rsync, なかなかいいですよ。
scp 使いの方は、ほぼ同じ感覚で利用できます。
adhoc に開発環境とテスト環境を同期させるのにも使えたりします(CVS などで管理していない場合とか)。
 

scp -pr from[ from2[ from3 …] ] to

に対して

rsync -a –rsh=ssh from[ from2[ from3 …] ] to

のように使えます。差分コピーを行っているのか, 2回目以降は scp よりはるかに高速です。
さらにオプション次第で同期の動作を制御できます。–rsh=ssh は RSYNC_RSH で事前に設定することで省略できます。

例:
rsync -a –rsh=ssh ~/public_html [email protected]:

とすれば sync.example.com サーバの user アカウントの ~/public_html をローカルの ~/public_html に同期します。
 
参考:
man rsync

CUI で SSL 証明書と秘密鍵の中身を表示する

OpenSSL プログラムを利用することで表示が可能です。
– server.crt という証明書の情報を表示する。

openssl x509 -noout -text -in server.crt

– server.key という RSA 方式秘密鍵の情報を表示する。

openssl rsa -noout -text -in server.key

 
参考:
– トラブルシューティング – サーバが起動したように見えるが、セキュアサイトにアクセスできない(Linux JF)

CUI で CD-ROM 等をイジェクトする

eject というコマンドを使うと、CUI で CD を出し入れできます。
何が便利というわけではありませんが、次の用途にいいんじゃないでしょうか。
 
1. CD を用いるインストーラでユーザビリティ向上
2. ビープ音の代わりに、何かを通知するのに用いる。

sleep 180 && eject

3. リモートから実行して近くにいる人にいたずら
参考:
– Manpage of EJECT

Linux を日本語化するためには

/etc/sysconfig/i18n の LANG, SUPPORTED を例えば次のようにします。

LANG=”ja_JP.eucJP”
SUPPORTED=”ja_JP.eucJP:ja_JP:ja”

これで、メッセージが日本語化されます。
man のバイナリがつぶれて表示できなくなった(less がバイナリ文字列をエスケープしている)場合、
/etc/man.config
を編集して

PAGER /usr/bin/less -isr

のように、-r オプションを付けるか、日本語対応の less (jless)に置き換えてください。

iptables -F でネットにつながらなくなりました

Q. リモートからネットワーク設定作業をしており、いざと言うときのために、

sleep 300 && iptables -F

を裏で実行するようにしましたが、iptables -F を実行した瞬間にネットに一切つながらなくなりました。何が原因ですか?
 
A.iptables -F はデフォルトポリシー以外の全てのルールを消去します。
iptables -F を実行した直後はデフォルトポリシーだけの状態になるため、
たとえば iptables-save が次のように始まるような場合…

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

このように、INPUT DROP の設定になっている場合、もし iptables -F を実行すると、入力パケット(INPUT)を常に破棄(DROP)してしまうため、外部から(ping = ICMP すら)一切つながらなくなってしまいます。
 
こういう環境で作業する場合、代替として次のようにして確実に繋げる設定を復旧させるとよいでしょう。

sleep 300 && ( iptables-restore < iptables-free )

あるいは、環境に依存しますが例えば次のようにして /etc/sysconfig/iptables の状態を復元するのもいいでしょう。

sleep 300 && /etc/init.d/network restart