自己流 英語電話面談の対策

先日、英語の電話面談を受ける機会があったので、自分用のメモを兼ねて。
「自己流」と言いつつ、けっこう他所さまからの受け売りもあります。(爆

>>Read more

千葉県でラピュタの制御室っぽい場所を発見 A place looks like a control room of Laputa

025_convert_20140917194058.jpg

参考画像
laputa_convert_20140917194249.jpg

>>Read more

自動でHTTPリクエストをtelnetで送る

#!/bin/sh

#Send http request by telnet.

request="GET / HTTP/1.1"
host_header="Host: www.example.com"
dst=www.example.com
port=80

echo "$request"
echo "$host_header"
sleep 3

(
echo "$request"
echo "$host_header"
echo ""
sleep 5
) | telnet $dst $port



HTTPリクエストをtelnetで送信します。
"$request"と"$host_header"を2回ずつechoしているのは、リクエストヘッダとレスポンスヘッダの両方を標準出力に出力させるためです。
冒頭の echo 2行を省略すると、レスポンスヘッダのみが出力されます。

以上。

sendmailで送信元ドメイン名をlocalhost.localdomainから変更する

sendmailでメールを送信するとデフォルトの送信元ドメインは"localhost.localdomain"です。
この状態で、自宅のサーバからテストメールを自分のgmail宛に度々送信していたら、某所のIP block listに登録されてしまいました。orz
「localhost.localdomainというドメイン名がスパムっぽくて怪しい」というのが理由らしいです。

というわけで、慌ててsendmailの設定を変更しました。

>>Read more

Webサーバで特定ファイルへのアクセスを監視し、メールで知らせる

#!/bin/sh

# Monitoring the specific access to the web server and send notification mail.

logfile=/path/to/your/server_log

if [ ! -f $logfile ]; then
echo "$logfile: File does not exist"
exit 1
fi

grep -i "/cgi-bin/php" $logfile | awk '$6 == "\"POST" {print $0}' > /tmp/access.log
cat /tmp/access.log | mail -s access_detected your@mail.com



Webサーバの特定ファイルへのアクセスを監視し、メールで知らせるスクリプトです。いちいちサーバにログインしてログを確認するのが面倒なときに使えるかもです。
例に挙げたのはCVE-2012-1823, CVE-2012-2311の脆弱性を利用した不正アクセスを検知するためのスクリプトです。

リクエストURLに「/cgi-bin/php」を含み、かつPOSTメソッドでのアクセスを検知したら、/tmp/access.logに該当のアクセスログを記述します。
awkコマンドの"$0"「すべてのカラム」を意味します。この場合はアクセスログに載っている送信元IPやアクセス先のファイル名、ステータスコード、リファラーなどのすべてのフィールドを出力します。
そして、/tmp/access.logの内容をmailコマンドに渡してメールを送信しています。
grepコマンドで i オプションを指定してリクエストのファイル名の大文字・小文字の区別を無効化してますが、これは無くてもいいかもしれません。
あとはスクリプトをcronで定期実行させれば、通知メールが定期的に届きます。

※スクリプトの最初の方で監視対象のログファイルを指定して、指定したログファイルが存在しなかったらエラーメッセージを表示して終了します。

以上。

2015年4月19日追記
以下のように地味に改良。

#!/bin/sh

# Monitoring the specific access to the web server and send notification mail.

logfile=/path/to/log
file=/path/to/file
old_logline=0
keyword=pattern
mailsubject=subject of mail

while true
do
if [ ! -f $logfile ]; then
echo "$logfile: File does not exist"
exit 1
fi

current_logline=$(grep $keyword $logfile | wc -l)

while [ $current_logline -ne $old_logline ]
do
grep $keyword $logfile | awk '{print $0}' >> $file
cat $file | mail -s $mailsubject example@mail.com
old_logline=$current_logline

done
done



変更点
while文で常にスクリプトを回すことによってログ監視のリアルタイム性をあげた。

sendmailでメールを自動送信する

#!/bin/sh

#send e-mail to specific address

/usr/sbin/sendmail -t << EOT
From: src@mail.com
To: dst@mail.com
Subject: This is test mail

Write something here.
.
EOT



sendmailでメールを自動送信するスクリプトです。
sendmailの t オプションで [To:]ヘッダーから宛先アドレスを読み込んでいます。
またこのスクリプトではヒアドキュメント(Here Documents)を利用してます。
ヒアドキュメントとはシェルスクリプト本体に埋め込んだテキストをスクリプト内のコマンドの標準入力として利用する機能のことです。
ヒアドキュメントとして利用したいテキストを終了文字列(本スクリプトの場合はEOT)で囲みます。

以上。

プロフィール

トニヒコ

Author:トニヒコ
趣味は旅行と読書とマンガ。
将来の夢はコスモポリタン!

リンク・フリーです。

My hobby is traveling and reading(include manga).
My dream is to become cosmopolitan!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
スポンサード リンク
マクロミルへ登録
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR