アクセス拒否スクリプトでハマる

以前はスパムコメントとかを防ぐブラックリストというプラグインの機能を使ってスパム送信先をアクセス拒否するようにしていた。ところが、サーバを自宅サーバからレンタルサーバに変えてからはiptablesを使ってのアクセス制御はできなくなった。なので、しばらくNucleusの機能だけでアクセス拒否にしていたのだけれど、しつこくしつこくアクセスしてくるところがあったのでhtaccessでアクセス制御してみたのは以前にも書いたとおり。

で、ついでなので、以前のように自動でアクセス拒否できるよう、スクリプトを書いてみた。大した内容でもないけど、メモしておく

こんな感じ。

#!/bin/sh

#IP_BlacklistのブロックIPアドレスの記録場所
blockip_blacklist=/サーバのディレクトリ/nucleus/plugins/blacklist/settings/blockip.pbl

#IPブラックリストから出力されたブロックIPアドレスを書き出すファイルを指定
blockipwritelist=/サーバのディレクトリ/blocklist
#既存で設定している.htaccessを書いておく
htacsform=/サーバのディレクトリ/htform
#.htaccessの場所を指定
htacsfile=/サーバのディレクトリ/.htaccess

#blocklistに拒否IPアドレスに書き出す
grep “.” $blockip_blacklist |awk ‘{ print “deny from ” $1 }’>$blocklist
#.htaccessに既存で設定してあるファイルと拒否IPを書いたファイルを書き出す
cat $htform $blocklist >$htacsfile
#.htaccessのパーミッションを変更
chmod 604 $htacsfile

htformで書いておかなければならない内容は次の通り。

order allow,deny
allow from all

で、Windowsでこういうスクリプトを作成してサーバに上げると、何故かエラーを吐き出す場合がある。調べてみると、原因はBOM らしい。簡単に言うと、「このファイルUnicodeで書かれていまっせ」という印らしい。俺もこれで結構ハマった。解決策はこちら。

コマンドラインでUTF-8テキストのBOMを追加したり削除したりする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください