コピペでできるiptables
サーバをセットアップするときに、iptablesをコマンドでちゃちゃっと設定したいときのためのメモ。
リモートで実行する際にはお気を付けください。
自己責任でご利用願います。Cent OS 4.6にて動作確認はしてあります。
export PATH=$PATH:/sbin/:/usr/sbin/ # allow access for this setting iptables -P INPUT ACCEPT iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # reset policy iptables -F # allow iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p udp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # back to set input as drop iptables -P INPUT DROP # save /etc/init.d/iptables save
db_loadコマンド@Cent OS
vsftpdのvirtual user機能を使うためにはdb_loadコマンドによってbdbフォーマットのパスワードファイルを作る必要がある。
yum searchしても、このコマンドが出てこないからちょっと困った。正解は、db4-utilsに入ってた。
# yum install db4-utils
puttyで作成したプライベートキーをopenssh形式へ変換する方法
puttyで公開鍵認証に利用するためのキーペア(秘密鍵、公開鍵)を作成するとputty用のキーペアが作成される。
このキーペアをopensshで利用するためにはキーの変換を行う。
■秘密鍵の変換
puttykeygen.exeにて秘密鍵(拡張子がPPK)を読み込む。
変換メニューから、OpenSSH形式へエクスポートを選ぶ 。この作業によって秘密鍵が生成される。
■公開鍵の変換
以下のコマンドで行う。
% ssh-keygen -i -f id_rsa_putty.pub > id_rsa.pub
id_rsa_putty.pubは、puttyで出力した公開鍵。
id_rsa.pubはOpenSSH形式の公開鍵
au,docomo向けコンテンツにて、転送禁止命令付与をコマンド一発で。
au,docomo向けページの画像ファイルに対して「転送禁止命令」をJPEG、GIF画像に対して付与できます。
Windowsアプリケーションでは、しょぼいアプリケーションしか出回っていないのでサーバで一発でやった方が楽。
サーバにはImageMagickが必要。
ファイル単体に対しては以下のコマンド。
% convert -comment 'kddi_copyright=on,copy="NO"' infile.jpg outfile.jpg
あるディレクトリ以下の全ての画像ファイルに対して行う場合は以下のコマンド。
% find . -iname "*.gif" -o -iname "*.jpg" -exec convert -comment 'kddi_copyright=on,copy="NO"' {} {} \;
シェルスクリプトで排他処理
運用サーバで、2分おきにsubversionのupdateを行うシェルスクリプトを動かしています。
今までは、1回のupdateが50秒程度で終了するので、同時実行を防ぐための排他処理をしていませんでした。しかし、サーバの負荷が高かったときは2分以内で終わらない場合があるためスクリプト実行の排他処理をしなければなりません。
Webを調べているとシェルスクリプトでロック用のディレクトリを作ってます。しかし、かっこわるい。。。そこで見つけたのがlockfileというコマンド。このコマンドを使った方がロック取得を失敗したときの挙動を変えられるから便利そうです。(今回の場合は意味無いけど)
以下にコード書いておきます。
#!/bin/sh LOCKFILE=/tmp/subversion.locked # try to get lock. With no retry. lockfile -r 0 $LOCKFILE # evaluate return code if [ $? -ne 0 ]; then echo "Command aborted" exit 1 fi # do something exclusive command echo "important command" # unlock rm $LOCKFILE
複数台で運用しているサーバのアクセスログを1つに統合する
複数台のフロントエンドサーバでapacheが動いている場合を想定します。
その場合、アクセスログが複数のサーバにまたがってしまいます。
こんなかんじ。
- web-01.access-log.20071130
- web-02.access-log.20071130
- web-03.access-log.20071130
webalizerやawstatsといったアクセスログ解析ソフトではこのファイルの状態では解析できない。
なぜなら、webalizerやawstatsのデフォルトでは1つのファイルのみを入力として受け付け、時系列順に記録されていなければならない。
この問題を解決するスクリプトを発見しました。awstatsの中に入っているlogresolvemerge.plというperlスクリプトです。
使い方は超簡単。引数に統合したいファイルを指定して実行すると、標準出力に時系列順にそろったレコードが出力される。
例:
% perl logresolvemerge.pl /path/to/log/*access.log.20071130|more
引数にgz圧縮されたファイルを指定してもちゃんと動きます。至れり尽くせりなスクリプト。
★おまけ情報★
ある日まで、commonフォーマットでアクセスログを取っていて、ある時点からcombinedフォーマットでログを取りだした場合、1つのアクセスログの中に2種類のフォーマットのログが混入してしまう。
そこで見つけたのがこの方法。commonフォーマットをcombinedフォーマットにする方法。
http://www.trisweb.com/archives/2007/02/15/convert-apache-common-logs-to-combined-logs/
3回シェルのコマンドを実行すればできちゃう!CUIはすばらしい。
参照:






















