2008年3月31日月曜日

nmapを使う

nmap -sS -P0 -T2 -p 1-65535 -oN kaons.txt -r -v -sV hoge.co.jp


-sS  ステルススキャン
-P0 ホストの発見を省略する(確実にそのホストが存在していると分かっている場合はこれを使用する)
-T2 スキャン速度。T1、T2、T3、T4、T5と早くなっていく。T5は高速回線が望ましい。
-p ポートスキャンする範囲↑の例では1から65535番まで(全部)
-oN  出力するファイル
-r  ランダムにスキャンしない
-v   冗長オプション。多くの情報を出力する。
-sV そのポートで使用されているアプリを特定する
-O OSを特定する

※注意
家庭用のブロードバンドルーターを使っている人はスキャン速度をT3以下にしないと落ちる場合があります。

2008年3月29日土曜日

Linuxでスワップ頻度を調整する

swappinessという値を変更する。これは0~100までの値で大きいほどスワップし、
小さいほどアプリケーションに割り当てるメモリを多く取り結果スワップが減る。

現在の値を表示する(デフォルトは60)
cat /proc/sys/vm/swappiness

一時的に40に変更する(再起動後はデフォルトに戻る)
echo 40 > /proc/sys/vm/swappiness

永続的に変更する
/etc/sysctl.confを編集し
vm.swappiness=40
を付け加える
その後
# sysctl -p
で適用



参考リンク
ITmedia
http://www.itmedia.co.jp/enterprise/articles/0712/10/news011_4.html

http://www.linuxmagic.org/tips02.html

2008年3月22日土曜日

apacheの.htaccessでユーザーアクセスする人を絞る

AuthType Basic
AuthUserFile "/etc/apache2/pass"
AuthName "Enter pass word"
Require user hogehoge

Require user の後にhogehogeという人なら許すという設定

2008年3月18日火曜日

ブロードバンドルータの設定や確認をperlで行う1

市販されているブロードバンドルーターの多くがブラウザから設定を行うタイプだと思います。これはGUIにより容易に設定が行えますが、ポートの開閉やIPアドレスの定期的な確認などがしたいときには煩わしくプログラムで自動化したいと思うことがあります。
まずは下図の様な場合を想定し、目的のスクリプトを作成したいと思います。

ルーターはNP-BBRPでWAN側はPPPoE接続されています。今回は例としてNP-BBRPを想定しますが、どのルーターでも出来るように説明します。
まず、認証方法を確認します。ブラウザからログインして設定画面に行きます。
この場合http://192.168.0.1/にアクセスしログインします。下図のような画面が出てきました。ユーザー名、パスワード欄に適切なワードを入れてログインします。

2008年3月15日土曜日

analog /etc/analog.cfg以外のコンフィグファイルを使う

analog -G +g/var/www/hoge/foo.cfg.txt

のように書きます。+gの後にスペースを入れないように注意します。
また-Gをつけるのを忘れないで下さい。

analogを使ってログ解析

analogはログ解析ソフトです。
Debianならaptで簡単にインストールできます。
インストールしたらまず/etc/analog.cfgを編集します。

ログファイルの指定
LOGFILE /var/log/apache2/access.log

古いログファイルの指定 (gzで圧縮されていても大丈夫です)
LOGFILE /var/log/apache2/access.log.*

出力HTMLの指定
OUTFILE /var/www/hoge/Report.html


HOSTEXCLUDE・・・このホストからのログは対象としない
リモートホストでの指定ではワイルドカード(*)を省略しないこと
HOSTINCLUDE・・・このホストを集計の対象とする
FILEEXCLUDE・・・このファイル(ディレクトリ)を集計の対象としない
DNSFILE・・・IPの逆引き結果をキャッシュするファイル
DNS WRITE・・・キャッシュを参照、新しいIPはキャッシュする詳しくはこちら
DNSGOODHOURS・・・キャッシュの有効期限 詳しくはこちら


LANGUAGE japanese-utf
HOSTEXCLUDE 192.168.0.*
HOSTEXCLUDE *.point.ne.jp
HOSTEXCLUDE *.ezweb.ne.jp
#FILEINCLUDE /upload/*
FILEEXCLUDE /icons/*
DNSFILE /var/www/kaiseki/dnscache.txt
DNS WRITE
DNSGOODHOURS 679

BROWSER ON
DAILYREP ON
DAILYSUM ON
FAILHOST ON
FAILREF ON
FAILURE ON
FAILUSER ON
FIVEREP ON
FIVESUM ON
FULLBROWSER ON
HOST ON
HOURLYREP ON
HOURLYSUM ON
ORGANISATION ON
QUARTERLY ON
QUARTERREP ON
QUARTERSUM ON
REFERER ON
REQUEST ON
SEARCHWORD OFF
SIZE ON
WEEKHOUR ON
WEEKLY ON


ALL ONで全て有効にしてから不要なものをOFFにしていく方法もある。


ALL ON
FAILVHOST OFF
INTSEARCHQUERY OFF
INTSEARCHWORD OFF
PROCTIME OFF
REDIRHOST OFF
REDIRREF OFF
REDIRUSER OFF
REDIRVHOST OFF
SEARCHQUERY OFF
SEARCHWORD OFF
VHOST OFF



参考リンク
http://www.miloweb.net/analog.html

2008年3月14日金曜日

apacheのログにリモートホストを表示する

/etc/apache2/apache2.conf
に
HostnameLookups Off
という項があるので
HostnameLookups On
に変更する。

2008年3月10日月曜日

puttyでsftp/scp (psftp/pscp)

sftpはputtyの中にある
psftpを実行します。
実行するとコンソールが開くので
open hogeuser@bar.test.jp 22

と入力します。
また鍵認証をした場合はputtyに登録してあるセッション名でもログインできます。
open sessionname


ログインしたあとはhelpコマンドによってコマンド一覧を見れます。
一つ一つのコマンドの詳細はhelp <コマンド>によって見れます。
ローカルのファイルを確認する場合はWindowsの場合
!dir

と入力します。
put test.txt

でtest.txtをリモートへ送信します。

注意
ftpといってもsshのポートを利用します。



scpは
pscp.exeをDOS窓から実行します

例
C:\>pscp.exe foo.txt user@bar.test.jp:
Using keyboard-interactive authentication.
Password:
foo.txt | 14 kB | 14.1 kB/s | ETA: 00:00:00 | 100%


注意
pscpにpathが通っていること
user@bar.test.jp:←のコロンを忘れないこと

参考リンク
PSFTPの利用

2008年3月7日金曜日

vimでタブをスペースに変換する

:set expandtab
で今後入力されるタブがスペースに変換される。

:retab
既存のタブはこのコマンドで変換される。

:set tabstop=4
としていれば4つのスペースに変換される。

2008年3月5日水曜日

Apacheのautoindexモジュールが文字化けする

ApacheのautoindexはデフォルトエンコーディングでUTF-8を指定しているにも関わらず、
インデックスをリクエストしたときにレスポンスヘッダに
charset=ISO-8859-1
が付いてしまいます。

回避するためにはautoindexのconfのIndexOptionsに
Charset=UTF-8
を追加します。

2008年2月27日水曜日

2chのスレを自動保存

2chのスレを自動で保存する方法を考えます。
スレの進行が早いところはすぐにDAT落ちしてしまいます。プログラムによって定期的にDATを取得できたら便利です。
いきいきwikiによるとUser-AgentをMonazilla/1.00 (ブラウザ名/バージョン)にするといいようです。
また鯖の転送量を減らす目的でgzipを推奨しています。
例としてJaneviewのリクエストヘッダを見て見ます。


こんな感じです。
これよりどこにアクセスし、DATを取得しているか分かります。
取得したdatはgzipに圧縮されているのでgunzipで展開します。(gunzipコマンドのあるLinux環境を想定しています)
ここで注意して欲しいのは必ずgzipで返ってくるとは限らない点です。gzipではなく生のDATが送られてきても対応できるようにします。

例としてDATを取得するスクリプトをいかに示します。定期的に取得する場合はcronなどで回して下さい。

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

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

$server ="namidame.2ch.net";
$category ="campus";
$unixtime ="1234567890";
$backup_directory ='/var/www/';

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

unless($backup_directory=~/\/$/){
$backup_directory.='/';
}


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

$s->write_request(GET => "/$category/dat/$unixtime.dat", 'User-Agent' => "Monazilla/1.00 (perl/1.3)" , 'Accept-Encoding' => "gzip" );


($code, $mess, %h) = $s->read_response_headers;
unless($code eq "200"){
print "Thread not found!\n";
exit;
}

open (FH,">$backup_directory$unixtime.dat.gz") or die $!;

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";

}


chdir "$backup_directory" or die $!;
$gunzip_message = qx/gunzip -f $unixtime.dat.gz 2>&1/;

if($gunzip_message=~/not.*in.*gzip.*format/){
exec "mv $unixtime.dat.gz $unixtime.dat";
}

2008年2月18日月曜日

Debian(etch)の日本語環境設定

$ sudo dpkg-reconfigure locales


こんな感じでおk簡単ですね

参考リンク
http://wiki.debian.org/JapaneseEnvironment

2008年2月13日水曜日

x11vncよく使いそうなオプション(追加)

前回の他に見つけた良く使いそうなオプション

-allow
リモートアクセスを許可するホストを設定する。
例)192.168.0.5からだけアクセスを許可する
-allow 192.168.0.5
例)192.168.0.0/24からのアクセスを許可する
-allow 192.168.0.

-nopw
パスワードファイルが無くても警告を出さない

*その他のx11vnc関連の投稿
x11vnc端末から実行した際に出るエラー出力が邪魔
x11vncの設定を保存するには
Ubuntu7.04 にx11vncをインストールする

x11vnc端末から実行した際に出るエラー出力が邪魔

~$ x11vnc &> /dev/null &

こんな感じでnullへ捨てる。最後の&はバックグラウンドで実行するという意味。

2008年2月8日金曜日

ダウソ板で良く使われる隠語

葱→Negies
PG→peerguardian