2010年09月05日

syslogdで"syslogd: sendto: Bad file descriptor"

先日、恥ずかしながらハマってしまったのでメモ。

CentOS上にsyslogサーバを構築してたら以下のエラーを送信元(こちらもCentOS)のsyslogdがmessagesに吐いてうまく動作しませんでした。

"syslogd: sendto: Bad file descriptor"

結果から言ってしまうと、UDP/514ポートが既に他のアプリケーションで使用されていて、正常に動作していない状態でした。
ListenPortの確認(netstat)を怠ってしまうとは…。
Apacheとかだと使用したいportが既に使われている場合に「80番portは既に他で使われてるぜ」的なメッセージが出るのですぐに気付くのですが、今回は起動時に何もエラーが出ていなくて問題の切り分けにちょっと時間がかかってしまったのです。

おかげで初心を思い出しましたとさ。
ラベル:Linux syslogd
posted by qphoneyとかiaraとか at 17:02| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2009年12月11日

ドメインの有効期限を監視するシェルスクリプト

先日参加してきた hbstudy#6 で、@matsuuさんがドメイン監視の必要性(重要性)について発表していました。
僕も以前勤めていた会社でドメインの有効期限が切れて大変な目にあったので、これには大変共感できました。
@matsuuさんはNagiosでドメインの監視をされているようですが、僕は当時「忘れなければいいか」くらいに
考えていたので、以下のサイトを参考にスクリプトを改造しました。
今思えば、matsuuさんのブログだったんですね…。

http://d.hatena.ne.jp/tmatsuu/20070928/1190940248

要件としては、

  • 確認は週に1回程度でいい
  • 複数ドメインを確認したい
  • 有効期限を60日切ったら注意、30日切ったら警告させたい

こんな感じです。
恥ずかしいと知りつつ公開してみます。
突っ込み大歓迎です。

check-domain-jp.sh
オリジナルとのdiffが以下になります。
% diff -u check-domain.sh check-domain-jp.sh
--- check-domain.sh
+++ check-domain-jp.sh

@@ -2,11 +2,11 @@

 PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`

-. $PROGPATH/utils.sh
+#. $PROGPATH/utils.sh

 # Default values (days):
-critical=7
-warning=30
+critical=30
+warning=60
 whois="/usr/bin/whois"
 host=""

@@ -14,6 +14,7 @@
         echo "check_domain - v1.01p1"
         echo "Copyright (c) 2005 Tom〓s N〓〓ez Lirola <tnunez@criptos.com> under GPL License"
         echo "Modified by MATSUU Takuto <matsuu@gentoo.org>"
+        echo "Modified by Tateoka Mamoru <qphoney@gmail.com>"
         echo ""
         echo "This plugin checks the expiration date of a domain name."
         echo ""
@@ -70,16 +71,22 @@

 # Calculate days until expiration
 TLDTYPE=`echo ${domain##*.} | tr '[A-Z]' '[a-z]'`
-echo "debug: host = $host"
+echo "host:$domain"
 if [ "${TLDTYPE}" == "in" -o "${TLDTYPE}" == "info" -o "${TLDTYPE}" == "org" ]; then
         expiration=`$whois $host $domain | awk '/Expiration Date:/ { print $2 }' |cut -d':' -f2`
 elif [ "${TLDTYPE}" == "biz" ]; then
         expiration=`$whois $host $domain | awk '/Domain Expiration Date:/ { print $6"-"$5"-"$9 }'`
+elif [ "${TLDTYPE}" == "sc" ]; then
+        expiration=`$whois -h whois2.afilias-grs.net $host $domain | awk '/Expiration Date:/ { print $2 }' | awk -F : '{ print $2 }'`
 elif [ "${TLDTYPE}" == "jp" -o "${TLDTYPE}" == "jp/e" ]; then
         expiration=`$whois $host $domain | awk '/Expires/ { print $NF }'`
+    if [ -z $expiration ]; then
+            expiration=`$whois $host $domain | awk '/State/ { print $NF }' | tr -d \(\)`
+    fi
 else
         expiration=`$whois $host $domain | awk '/Expiration/ { print $NF }'`
 fi
+echo $expiration
 expseconds=`date +%s --date="$expiration"`
 nowseconds=`date +%s`
 ((diffseconds=expseconds-nowseconds))
このスクリプトを外から呼び出す形で、もう一個スクリプトを作りました。
(ちょっとスマートではない気が…)

domain-mail.sh

このスクリプトの中で複数のドメインを指定しています。
cronに登録して、適当にメールアドレスを指定して出来上がり。
ただ単に、check-domain-jp.shをまわしてるだけなんですけどね。
posted by qphoneyとかiaraとか at 11:29| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2009年10月20日

VMware仮想ディスクの拡張

16GBの仮想ディスクを32GBに拡張にチャレンジ。
参考URLを見て、あっという間にできました。
先人の知恵に感謝!


# fdisk -l

Disk /dev/sda: 34.3 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2088    16667437+  8e  Linux LVM

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       15G   11G  2.8G  80% /
/dev/sda1              99M   37M   58M  39% /boot
tmpfs                 252M     0  252M   0% /dev/shm


# fdisk /dev/sda

このディスクのシリンダ数は 4177 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (2089-4177, default 2089): 2089
終点 シリンダ または +サイズ または +サイズM または +サイズK (2089-4177, default 4177): 4177

コマンド (m でヘルプ): t
領域番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

# reboot

再起動後

# fdisk -l

Disk /dev/sda: 34.3 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        2088    16667437+  8e  Linux LVM
/dev/sda3            2089        4177    16779892+  8e  Linux LVM


# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       15G   11G  2.8G  80% /
/dev/sda1              99M   37M   58M  39% /boot
tmpfs                 252M     0  252M   0% /dev/shm

まだこの時点では利用できません。

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
# vgextend VolGroup00 /dev/sda3
  /dev/hdc: open failed: メディアが見つかりません
  Volume group "VolGroup00" successfully extended
# lvextend -L +16G /dev/VolGroup00/LogVol00
  Extending logical volume LogVol00 to 30.88 GB
  Logical volume LogVol00 successfully resized

# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 8093696 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 8093696 blocks long.

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       30G   11G   18G  39% /

/dev/sda1              99M   37M   58M  39% /boot
tmpfs                 252M     0  252M   0% /dev/shm

うお!できた!
ラベル:Linux VMware LVM
posted by qphoneyとかiaraとか at 17:25| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。