2008年7月30日水曜日

lsofでどのプロセスがどのファイルシステムを使用中か調べる

lsof /media/cdrom
みたいに

プロセスが使用中のファイルも見れる
参考リンク
http://d.hatena.ne.jp/hogem/20070223/1172221315

2008年7月27日日曜日

x11vncのリバースコネクトについて

http://www.karlrunge.com/x11vnc/#faq-reverse-connect

2008年7月20日日曜日

puttyで起動時の引数を指定してすぐにコンソールを開く

-load オプションを起動時の引数に与えてやればいいと思います。
詳しくはこちらの 3.8.1 Starting a session from the command line
を見てもらえれば分かると思います。



参考サイト
http://p0t.jp/archives/2006/09/1.html

2008年7月12日土曜日

zshを使おうか

まずzshの強力な補完機能を有効にする


autoload -U compinit
compinit


そんでキーバインドをvi風にする


bindkey -v


あとプロンプトを変えておく

PROMPT="%/%%"



テトリスもできるらしい

zsh
autoload -U tetris
zle -N tetris
bindkey '^T' tetris

Control-T を押せばゲーム開始。zsh最強。

2008年7月10日木曜日

最近、気になったソフト

IgRemote・・・すげー早いVNCだって
Social IME・・・みんなで育てるIMEだって

2008年7月6日日曜日

perlの出力、入力関係

STDIN 標準入力:キーボードからの入力。
STDOUT 標準出力:ディスプレー (コンソール)。
STDERR 標準エラー出力:ディスプレー (コンソール)。

だそうですよ
print STDERR "Erorr";
でエラー出力されるぽい

WindowsでもUNIXでもエラー出力をリダイレクトする際は
route 2> route.txt
みたいに2をつければおk

2008年7月5日土曜日

@wikiのデータバックアップをperlで自動化してみる

まず、ブラウザから保存までの過程を行い、パケットをキャプチャします。
今回、対象とするサイトはこちらです。キャプチャはWiresharkなどでも良いですが、今回はTCPのフローまで見る必要はありません。HTTPのリクエストヘッダさえ分かれば大丈夫なので、Live HTTP Headersなどで見たほうが便利です。(このソフトを使えばHTTPリクエストをGUI上で自由に変更できます。どのヘッダが必要か不要かも分かるので便利です)で、キャプチャしたものが以下のものです↓
Content-Length以下にはwikiidとpassというパスワードを送っています。submitのURLエンコードは「ダウンロード」という文字列を表しています。
ちなみにwikiidの項とpassの項とCookieは適当です。



POST /_mng/backup.php HTTP/1.1
Host: www34.atwiki.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9) Gecko/2008052906 Firefox/3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
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
Referer: http://www34.atwiki.jp/_mng/backup2.php
Cookie: PHPSESSID=5684723debae48752efea5555565acdd
Content-Type: application/x-www-form-urlencoded
Content-Length: 93

wikiid=***********&pass=*******&submit=%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89




次にLive HTTP Headersのリプレイ機能を使って必要なヘッダが何かを判断します。まずCookieが必須かどうかを調べる必要があります。なぜならCookieが必要だった場合はCookie取得の処理が追加されるからです。いらなそうなヘッダを削除→リプレイで目的の結果になるかを確認 を繰り返してください。で、調べた結果、不要だということが分かりました。つまりPerlスクリプトではCookieヘッダは発行しません。ちなみにこの鯖はContent-Typeを指定しないとトップに戻されるようです。


-------------- wiki_back.pl ----------------------------------

#!/usr/bin/perl
use Net::HTTP;

### Initial Setting ###########################

$server ="www34.atwiki.jp";

###############################################


$header{'Host'} = "$server";
$header{'User-Agent'} = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9) Gecko/2008052906 Firefox/3.0';
$header{'Accept'} = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header{'Accept-Language'} = 'ja,en-us;q=0.7,en;q=0.3';
$header{'Accept-Encoding'} = 'gzip,deflate';
$header{'Referer'} = 'http://www34.atwiki.jp/_mng/backup2.php';
$header{'Content-Type'} = 'application/x-www-form-urlencoded';
$content = 'wikiid=***********&pass=*******&submit=%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89';

$s = Net::HTTP->new(Host => "$server") || die $@;
$s->max_line_length(0);
$s->keep_alive(300);

$s->write_request( POST => '/_mng/backup.php' , %header , $content );


($code, $mess, %h) = $s->read_response_headers;
unless($code eq "200"){
die "erorr!!";
}

open (FH,">back.zip") or die $!;
binmode FH;

while (1) {
my $buf;
my $n = $s->read_entity_body($buf, 1024);
die "read failed: $!" unless defined $n;
last unless $n;
print FH $buf;
}

close FH;


print "\n$code $mess\n";
foreach $key(keys %h){

print $key," ";
print $h{$key},"\n";

}


-------------- wiki_back.pl ----------------------------------




※注意
Windows環境下ではファイルをopenした後に必ずファイルをバイナリモードにして下さい。
バイナリモードの指定は
binmode FH;
と引数にファイルハンドルを指定します。これを行わないと0D(CR)の後に0A(LF)が追加されてしまいます。
UNIX環境下ではこの指定は不要です。



ちなみに鯖からのレスポンスヘッダ内でContent-dispositionというヘッダがあります。このスクリプト内ではback.zipという名前でファイルを作成していますが、普通ブラウザではこの項を見てファイル名を決定します。↓はhoge.zipの例
Content-disposition attachment; filename=hoge.zip

2008年7月4日金曜日

vimだとCtrl+Hでバックスペースが入るお

:h i_^Hで確認してみよう

bashのキーバインドをviにしている人も試してみてください

あと
追記:なんか世間一般的にそうなってるみたいです。なにもvimに限った事ではないのかも


Ctrl+M・・・Enter
Ctrl+H・・・BackSpace
Ctrl+I・・・Tab

必要ないモジュールをアンロードしてみてはいかが?

必要ないモジュールはアンロードしておくのが吉ですよ
たとえばUSBのohci_hcdはなぜだかwakeupを繰り返しカーネルのログに吐き出し
やたらリソースを食っていました。
/etc/modprobe.d/blacklistに以下を追加しました。

blacklist trident
blacklist ac97_codec
blacklist joydev
blacklist gameport
blacklist ohci_hcd
blacklist usbcore
blacklist ide_cd
blacklist cdrom
blacklist pcspkr
blacklist psmouse
blacklist parport_pc
blacklist parport
blacklist snd_ali5451
blacklist snd_ac97_codec
blacklist snd_ac97_bus
blacklist snd_pcm
blacklist snd_timer
blacklist snd
blacklist soundcore
blacklist snd_page_alloc


※注意
参考サイトに書いてあったのですが書いただけではなく
update-initramfs -u
コマンドでロードイメージを更新する必要があるようです



モジュールのロード、アンロードについては前回書きました。

参考
Debianインストール覚え書き