読者です 読者をやめる 読者になる 読者になる

findを使って再帰的なgrep

find ./ -name '*' | xargs grep hogehoge

拡張子がphpのものだけならばfindの時点で絞ってあげればいい。

find ./ -name '*.php' | xargs grep hogehoge

findで容量の合計を出す

1年前~現在 までのファイルの合計容量(KB)
find ./ -mtime -365 -type f -printf "%s\n" |awk '{sum += $1; printf("\r%d",sum/1024) }; END{print""};'
1年前~現在 までのファイルの合計容量(MB)
find ./ -mtime -365 -type f -printf "%s\n" |awk '{sum += $1; printf("\r%d",sum/1024/1024) }; END{print""};'

秘密鍵公開鍵の作成

サーバ間でsshログインしたり、rsyncしたい時用に、サーバの秘密鍵公開鍵ペアを作成します。

ssh-keygen -t rsa -b 2048 -C {ユーザ名}@{ホスト名}

オプションの -t はタイプ。 -b はビット。 -C はコメント。

アカウント期限30日延長

Linuxにて、アカウントの期限を30日間延長します。

chage -E `date -d '30 days' '+%Y-%m-%d'` {アカウント名}

tcpdumpでよく使うオプション

cpdumpコマンドを打つ際によく使うオプションです。

tcpdump

tcpdump -i eth0 -p -nn -X tcp and port 10051 and host 192.168.40.11
よく使うオプション
-i インターフェース指定
-p プロミスキャスモード(無差別モード)をOFF。自分宛のパケットのみ
-nn ポート番号をプロトコル名に変換(80 を http など)しない
-X ヘッダだけでなくパケットの中身も表示(16進数とASCII)
たまに使うオプション
-n アドレスやポート番号を名前に変換しない。DNS lookup の時間短縮
-s キャプチャするサイズを指定。0 だと全て
-w 生データをそのままファイルに書き込む。WireSharkEtherealで開くこともできる
-r -w で保存したファイルを開く
-c 指定した個数のパケットを受信したら終了。ディスク圧迫しないように使う
-A ヘッダだけでなくパケットの中身も表示(ASCII)
-G ファイル書き込みを指定時間間隔で rotate する。-w のファイル名に時間フォーマットを指定
-W -G での rotate の回数を制御する。-W の回数に達すると終了


例) ファイル吐き出しをする場合に、ファイルが巨大に1つになってしまうと追いづらいので、15秒間隔で rotate させたい場合。

tcpdump -s0 -A port 80 -G 15 -w /tmp/tcpdump_%Y%m%d_%H%M.cap

例) crontab に仕込んで毎日 12:00 – 13:00 だけパケットキャプチャしたい場合
オプション -G 60 で毎分 rotate させ、-W 60 で 60回 rotate したら、つまり1時間たったら、tcpdump 終了。
ただし、一切書き込みがない場合、ファイル rotate が発生せず、tcpdump が終了しない挙動となるため、念のために kill もしている。

0 12 * * * sudo /usr/sbin/tcpdump -i bond0 -s 512 -A -n -nn -p "tcp port 80" -G 60 -W 60 -w /tmp/tcpdump_%Y%m%d_%H%M.cap >/dev/null 2>&1 & echo $! > /tmp/tcpdump.pid
0 13 * * * sudo kill $(cat /tmp/tcpdump.pid)

【手順書】自己証明書の作成

#日付設定
export ssldate={yyyymmdd}

#ドメイン名設定
export ssldom={ドメイン名}

#bit数の指定
export sslbit=2048

#ユーザ名の指定
export user={ユーザ名}

#ssl用ディレクトリの作成&移動
mkdir -p /home/$user/ssl
cd /home/$user/ssl/
chown $user:$user /home/$user/ssl/
cd /home/$user/ssl/

#シード値の生成
date >> mkssl.log; openssl md5 * > rand.dat

#秘密鍵の作成
openssl genrsa -rand rand.dat $sslbit > $ssldom.$ssldate.key

#CSRの作成
openssl req -new -key $ssldom.$ssldate.key -out $ssldom.$ssldate.csr


情報をいろいろ聞かれますが、自己証明書なのでCommon Name以外は空Enterで問題ありません。

Country Name (2 letter code) [XX]:
State or Province Name (full name) :
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) :
Common Name (eg, your name or your server's hostname) :{ドメイン名}
Email Address :

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password :
An optional company name :
#CSRの確認
openssl req -noout -text -in $ssldom.$ssldate.csr | head -8

#自己証明書の作成(期限は約10年(3650日))
openssl x509 -in $ssldom.$ssldate.csr -sha256 -out $ssldom.$ssldate.crt \
-req -signkey $ssldom.$ssldate.key -days 3650


以上です。