2009,09,07 Mon 14:56
KURO-BOX/T4には、TeraStationと同様のLCDディスプレイが付いています。
標準でのインストールでは機能しないので、これを機能するようにスクリプトを作成しました。
私が実際に使っているスクリプトファイルを、一番下でダウンロード出来ます。
LCD表示スクリプト(LANリンク速度、ディスク容量、ホスト名、IP、日付、ファン回転数、ケース内温度)
NICリンクアップ時スクリプト(DHCPなどでIPが変更になる人は/etc/network/if-up.dなどの下にスクリプトとして書いてください)
リンク速度設定スクリプト
※リンク速度を表示する場合は
miconapl -a lcd_set_dispitem にlinkspeedを追加してください。
(リンク速度を設定することにより、本体のLinkActランプが自動的に点灯、点滅します)
ディスク容量セットスクリプト
※ディスク容量を表示する場合は
miconapl -a lcd_set_dispitem にhostnameを追加してください。
(T4のマイコン仕様書ではLinkSpeedと同じバッファを使ってるように読み取れましたが、miconaplではhostnameで表示されました)
ディスク容量セットスクリプトを定期的に動かすことで容量を再セットしてください。
また、ディスクの容量はマイコン仕様書では16進でセットしますが
miconaplが内部で変換しているようで0~100の値をセットで問題ありません。
(100まで行かなくても、95でFull表示になりました)
尚、raidを組んでいる場合はsdaやsdbの文字では正常に値が取得できませんので、md0などraidのデバイスとして登録してある文字f列をセットしてあげてください。
(一つのディスクに複数のraid用タイプfdを作成し,raidを複数組んでる場合は、このスクリプトは使用できません)
私の場合は、Disk2、Disk3、Disk3の3台をRaid5で運用していますので
device2="/dev/md0"とし
d3=とd4=をコメントにし
miconapl -a lcd_set_disk_capacity $d1 $d2 $d2 $d2
としています。
電源ボタン監視スクリプト
2009/11/13 輝度制御スクリプトの追加
輝度制御設定ファイル(/etc/lcd_control.confで保存してください)
輝度制御スクリプト
2009/11/13 RAID設定スクリプトの追加
※¥は全角で書いていますので、半角に書き換えてください。(blognの制約上)
表示形式は以下の通りです。
LCD下段はRAIDの状態で表示が変わります。
RAIDなし(/proc/partitionsにmdの文字が見つからない場合)
上段:Operation MODE
下段:Normal
RAID0~6
上段:HD 2-3-4
下段:RAID○ [UUUU]
上段はmd○のArrayに使用されているドライブ番号が表示されます。
例:1,2,3,4ドライブでRAID利用=1-2-3-4
下段のUUUUの部分は/proc/mdstatで取得出来るディスクのディスクの動作状況です。
以下はエラー系です。
/proc/mdstatからRAIDの状態を取得出来なかった場合:RAID GET ERROR
/proc/mdstatからディスクの動作状況を取得出来なかった場合:RAID○
※RAID設定を表示する場合は
miconapl -a lcd_set_dispitem にraidmodeを追加してください。
※表示するRIADの情報は/proc/partitionsにて最初に取得出来るmd○のArrayとなります。
※ケース内温度によるファン回転数制御スクリプトは、ネットなどで転がっている物が使えると思いますので省略します。
2009/11/16 追記
以下は私が使っているスクリプトです。
環境に合わせて書き換えてください。
lcd_scripts.tar.bz2
/usr/loca/sbin に解凍して実行権限を与えてください。
lcd_scripts_conf.tar.bz2
このファイルはスクリプトの設定ファイルになります。
/etc に解凍して、設定を行ってください。
またこれらのスクリプトを実行するために/etc/rc.local に以下の記述を行い、起動時に実行しています。
標準でのインストールでは機能しないので、これを機能するようにスクリプトを作成しました。
私が実際に使っているスクリプトファイルを、一番下でダウンロード出来ます。
LCD表示スクリプト(LANリンク速度、ディスク容量、ホスト名、IP、日付、ファン回転数、ケース内温度)
#!/bin/sh
PATH=$PATH:/usr/local/sbin
export PATH
# lcd back light bright {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
BACK_LIGHT_BRIGHT="70"
miconapl -a lcd_set_bright $BACK_LIGHT_BRIGHT
hostname=`cat /etc/hostname`
miconapl -a lcd_set_hostname $hostname
miconapl -a lcd_disp_hostname
miconapl -a lcd_disp_fanspeed_on
miconapl -a lcd_disp_temp_on
#私の場合は固定IPなので、ここにリンク速度のスクリプトへのパスを書いています。(IP取得も同様に1回しか呼んでいません)
#ここにディスク容量取得スクリプトのパス
#ここにディスクRAID設定スクリプトのパス
miconapl -a lcd_set_dispitem linkspeed hostname ipaddress date buffer0 buffer1
miconapl -a lcd_changemode_auto
idx=1
while :
do
sleep 60
dispdatetime=`date '+%y %m %d %k %M %S'`
miconapl -a lcd_set_date $dispdatetime
idx=`expr $idx + 1`
if [ $idx -ge 10 ]; then
idx=1;
#ここにディスク容量取得スクリプトのパス
#ここにディスクRAID設定スクリプトのパス
fi
done
NICリンクアップ時スクリプト(DHCPなどでIPが変更になる人は/etc/network/if-up.dなどの下にスクリプトとして書いてください)
#!/bin/sh
PATH=$PATH:/usr/local/sbin
export LANG=C
export PATH
ipaddress=`ifconfig | grep "inet addr" | awk '{print }' | awk -F: 'NR==1 {print }'`
miconapl -a lcd_set_ipaddress $ipaddress
リンク速度設定スクリプト
#!/bin/bash PATH=$PATH:/usr/local/sbin export PATH eth_dev="eth0" link_nolink="nolink" link_10h="10h" link_10f="10f" link_100h="100h" link_100f="100f" link_1000="1000" mii_result=`mii-tool $eth_dev` case $mii_result in *"10baseT-HD"*) set_link_speed=$link_10h;; *"10baseT-FD"*) set_link_speed=$link_10f;; *"10baseT-HD"*) set_link_speed=$link_100h;; *"10baseT-HD"*) set_link_speed=$link_100f;; *"1000baseT-FD"*) set_link_speed=$link_1000;; *) set_link_speed=$link_nolink esac miconapl -a lcd_set_linkspeed $set_link_speed exit
※リンク速度を表示する場合は
miconapl -a lcd_set_dispitem にlinkspeedを追加してください。
(リンク速度を設定することにより、本体のLinkActランプが自動的に点灯、点滅します)
ディスク容量セットスクリプト
#!/bin/bash
PATH=$PATH:/usr/local/sbin
export PATH
device1="/dev/sda"
device2="/dev/sdb"
device3="/dev/sdc"
device4="/dev/sdd"
d1=`df -m | grep $device1 | awk 'BEGIN {use=0; total=0} // {use+=; total+=} END{printf "%d", use/total*100}'`
d2=`df -m | grep $device2 | awk 'BEGIN {use=0; total=0} // {use+=; total+=} END{printf "%d", use/total*100}'`
d3=`df -m | grep $device3 | awk 'BEGIN {use=0; total=0} // {use+=; total+=} END{printf "%d", use/total*100}'`
d4=`df -m | grep $device4 | awk 'BEGIN {use=0; total=0} // {use+=; total+=} END{printf "%d", use/total*100}'`
if [ $d1 -lt 0 ]; then
d1=0;
fi
if [ $d2 -lt 0 ]; then
d2=0;
fi
if [ $d3 -lt 0 ]; then
d3=0;
fi
if [ $d4 -lt 0 ]; then
d4=0;
fi
miconapl -a lcd_set_disk_capacity $d1 $d2 $d3 $d4
exit
※ディスク容量を表示する場合は
miconapl -a lcd_set_dispitem にhostnameを追加してください。
(T4のマイコン仕様書ではLinkSpeedと同じバッファを使ってるように読み取れましたが、miconaplではhostnameで表示されました)
ディスク容量セットスクリプトを定期的に動かすことで容量を再セットしてください。
また、ディスクの容量はマイコン仕様書では16進でセットしますが
miconaplが内部で変換しているようで0~100の値をセットで問題ありません。
(100まで行かなくても、95でFull表示になりました)
尚、raidを組んでいる場合はsdaやsdbの文字では正常に値が取得できませんので、md0などraidのデバイスとして登録してある文字f列をセットしてあげてください。
(一つのディスクに複数のraid用タイプfdを作成し,raidを複数組んでる場合は、このスクリプトは使用できません)
私の場合は、Disk2、Disk3、Disk3の3台をRaid5で運用していますので
device2="/dev/md0"とし
d3=とd4=をコメントにし
miconapl -a lcd_set_disk_capacity $d1 $d2 $d2 $d2
としています。
電源ボタン監視スクリプト
#!/bin/sh
GET_SW="/usr/local/sbin/miconapl -a int_get_switch_status"
BEEP="/usr/local/sbin/miconapl -a bz_on button"
BEEP2="/usr/local/sbin/miconapl -a bz_on boot"
LCD_OFF="/usr/local/sbin/miconapl -a lcd_changemode_button"
LCD_FAN_OFF="/usr/local/sbin/miconapl -a lcd_disp_fanspeed_off"
LCD_TEMP_OFF="/usr/local/sbin/miconapl -a lcd_disp_temp_off"
LCD_BUF2_ON="/usr/local/sbin/miconapl -a lcd_disp_buffer2"
LCD_BRIGHT_ZERO="/usr/local/sbin/miconapl -a lcd_set_bright 0"
COUNT=4
while :
do
SW=`$GET_SW |grep "int=" |sed -e "s/int=//"`
case ${SW} in
power_sw)
COUNT=`expr ${COUNT} - 1`
if [ ${COUNT} -eq 0 ]
then
${BEEP2}
${LCD_OFF}
${LCD_FAN_OFF}
${LCD_TEMP_OFF}
${LCD_BUF2_ON}
${LCD_BRIGHT_ZERO}
/sbin/shutdown -hP now
else
${BEEP}
fi
sleep 1
;;
init_sw_front)
;;
*)
COUNT=4
sleep 2
;;
esac
done
2009/11/13 輝度制御スクリプトの追加
輝度制御設定ファイル(/etc/lcd_control.confで保存してください)
###################################################################
#
# LCD&LED輝度コントロール設定ファイル
#
###################################################################
# LED輝度通常時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
NORMAL_LED=100
# LCD輝度通常時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
NORMAL_LCD=70
# 時刻連動使用 {true | false}
TIME_LINKED=true
# LED輝度減光時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
DOWN_LED=50
# LCD輝度減光時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
DOWN_LCD=50
# LED輝度通常時刻 {0 - 23} step 1
NORMAL_START_TIME=7
# LED輝度減光時刻 {0 - 23} step 1
DOWN_START_TIME=23
輝度制御スクリプト
#!/bin/sh
PATH=$PATH:/usr/local/sbin
export PATH
# 設定ファイル
CONF_FILE=/etc/lcd_control.conf
if [[ -f "$CONF_FILE" ]]
then
. $CONF_FILE
else
echo "LCD輝度制御設定ファイル $CONF_FILE が見つかりません。"
exit 1
fi
if [ $TIME_LINKED = 'false' ]; then
exit
fi
while :
do
sleep 60
now_lcd=`miconapl -a lcd_set_bright|grep lcd_bright=|sed -n -e "s/.*=//p"`
now_led=`miconapl -a led_set_bright|grep led_bright=|sed -n -e "s/.*=//p"`
temphour=`date '+%k'`
if [ $NORMAL_START_TIME -eq $DOWN_START_TIME ]; then
# 通常時と減光時の時刻が同じ場合は、常に通常扱い
mode='normal'
elif [ $NORMAL_START_TIME -lt $DOWN_START_TIME ]; then
# 通常時が減光時より小さい場合
if [ $NORMAL_START_TIME -le $temphour -a $DOWN_START_TIME -gt $temphour ]; then
# 通常時の範囲
mode='normal'
else
# 減光時の範囲
mode='down'
fi
else
# 減光時が通常時より小さい場合
if [ $DOWN_START_TIME -le $temphour -a $NORMAL_START_TIME -gt $temphour ]; then
# 減光時の範囲
mode='down'
else
# 通常時の範囲
mode='normal'
fi
fi
if [ $mode = 'normal' ]; then
# 通常時
lcd_set_num=$NORMAL_LCD
led_set_num=$NORMAL_LED
else
# 減光時
lcd_set_num=$DOWN_LCD
led_set_num=$DOWN_LED
fi
# 現在の設定と違う場合は設定変更
if [ $now_lcd -ne $lcd_set_num ]; then
miconapl -a lcd_set_bright $lcd_set_num
fi
if [ $now_led -ne $led_set_num ]; then
miconapl -a led_set_bright $led_set_num
fi
done
2009/11/13 RAID設定スクリプトの追加
※¥は全角で書いていますので、半角に書き換えてください。(blognの制約上)
表示形式は以下の通りです。
LCD下段はRAIDの状態で表示が変わります。
RAIDなし(/proc/partitionsにmdの文字が見つからない場合)
上段:Operation MODE
下段:Normal
RAID0~6
上段:HD 2-3-4
下段:RAID○ [UUUU]
上段はmd○のArrayに使用されているドライブ番号が表示されます。
例:1,2,3,4ドライブでRAID利用=1-2-3-4
下段のUUUUの部分は/proc/mdstatで取得出来るディスクのディスクの動作状況です。
以下はエラー系です。
/proc/mdstatからRAIDの状態を取得出来なかった場合:RAID GET ERROR
/proc/mdstatからディスクの動作状況を取得出来なかった場合:RAID○
#!/bin/sh
PATH=$PATH:/usr/local/sbin
export PATH
#md?のパーティションがあるかチェック
first_md_char=`cat /proc/partitions|grep md|sed -n -e "s/.*md//p"`
raid_mode="Operation MODE "
if [ $first_md_char = "" ]; then
#md?が見つからない(ノーマルモード)
raid_mode="${raid_mode}Normal "
else
#md?が見つかった場合
proc_mdstat=`cat /proc/mdstat`
#RAIDのドライブ構成を調べる
raid_mode="HD "
raid_info=""
idx=0
while [ $idx -ne 4 ]
do
drive=`echo "$proc_mdstat"|grep ¥[${idx}]|sed -n -e "s/.¥[${idx}].*//p"|sed -n -e "s/.*sd//p"`
case $drive in
a)drive="1";;
b)drive="2";;
c)drive="3";;
d)drive="4";;
*)drive="";;
esac
#ドライブ構成文字の作成
if [ ! $drive = "" ]; then
if [ ! $raid_info = "" ]; then
raid_info="${raid_info}-${drive}"
else
raid_info="${drive}"
fi
fi
idx=`expr $idx + 1`
done
#RAID表示文字(上段)の作成
raid_mode="${raid_mode}${raid_info}"
#16バイトになるまで空白で埋める
idx=`expr length "$raid_mode"`
while [ $idx -lt 16 ]
do
raid_mode="${raid_mode} "
idx=`expr $idx + 1`
done
#RAIDモード、ドライブ動作状況の取得
raid_mode_num=`echo "$proc_mdstat"|grep md${first_md_char}|sed -n -e "s/ sd.*//p"|sed -n -e"s/.*raid//p"`
if [ $raid_mode_num = "" ]; then
#情報取得エラー
raid_mode="${raid_mode}RAID GET ERROR"
else
#モード取得
raid_state=`echo "$proc_mdstat"|grep '] ¥['|tr -d '¥012'|sed -n -e"s/.*] //p"`
#動作状況取得
raid_mode="${raid_mode}RAID${raid_mode_num} $raid_state"
fi
fi
#miconに文字列をセット
miconapl -a lcd_set_raidmode32 "$raid_mode"
※RAID設定を表示する場合は
miconapl -a lcd_set_dispitem にraidmodeを追加してください。
※表示するRIADの情報は/proc/partitionsにて最初に取得出来るmd○のArrayとなります。
※ケース内温度によるファン回転数制御スクリプトは、ネットなどで転がっている物が使えると思いますので省略します。
2009/11/16 追記
以下は私が使っているスクリプトです。
環境に合わせて書き換えてください。
lcd_scripts.tar.bz2
/usr/loca/sbin に解凍して実行権限を与えてください。
lcd_scripts_conf.tar.bz2
このファイルはスクリプトの設定ファイルになります。
/etc に解凍して、設定を行ってください。
またこれらのスクリプトを実行するために/etc/rc.local に以下の記述を行い、起動時に実行しています。
# init LCD display
if [ -x /usr/local/sbin/Keventd ] ; then
/usr/local/sbin/Keventd &
fi
if [ -x /usr/local/sbin/Fand ] ; then
/usr/local/sbin/Fand &
fi
if [ -x /usr/local/sbin/Displayd ] ; then
/usr/local/sbin/Displayd &
fi
if [ -x /usr/local/sbin/lcd_control.sh ] ; then
/usr/local/sbin/lcd_control.sh &
fi
2009,09,07 Mon 15:32
LinkStationにてmediatombは導入済みでしたので
インストール&設定を行って起動でPS3から検索。
LinkStationでの導入記事
しかしPS3からDLNA機器は見つかりません・・・
再度、設定を見直しました。
# vi /etc/default/mediatomb
この中の以下の行が問題でした。
変更前:INTERFACE=""
変更後:INTERFACE="eth0"
インターフェースをちゃんと指定しないとダメなようです。
mediatombを再起動後にPS3からちゃんと見えるようになりました。
ブラウザからDLNAに登録するディレクトリを選択できますが
設定を間違うとサーバーに非常に負担が掛かります。

各設定の意味は以下のようになります。
Scan Mode:
None スキャンしない
Timed 決められた時間でスキャンを行う
Inotify カーネルからファイル変更(追加、削除等)の通知を受けてDB登録する
Initial Scan:
Basic 単純にファイルの追加・削除の変更のみで更新を行う
Full 最後に登録されている情報と相違が無いかチェックして更新を行う
Recursive:
チェックを入れると再帰的に下位のディレクトリも検索の対象とします。
Include hidden files/directories:
チェックを入れると隠しファイルも検索の対象となります。
お勧めの設定は、上の画像の通りです。
Scan Mode:Timed + Initial Scan:Full + Recursive:チェックの設定にすると
ファイル数が多かったり、ディレクトリの階層が深いと、かなりの数の検索を行うことになり、サーバーに非常に負荷が掛かります。
インストール&設定を行って起動でPS3から検索。
LinkStationでの導入記事
しかしPS3からDLNA機器は見つかりません・・・
再度、設定を見直しました。
# vi /etc/default/mediatomb
この中の以下の行が問題でした。
変更前:INTERFACE=""
変更後:INTERFACE="eth0"
インターフェースをちゃんと指定しないとダメなようです。
mediatombを再起動後にPS3からちゃんと見えるようになりました。
ブラウザからDLNAに登録するディレクトリを選択できますが
設定を間違うとサーバーに非常に負担が掛かります。
各設定の意味は以下のようになります。
Scan Mode:
None スキャンしない
Timed 決められた時間でスキャンを行う
Inotify カーネルからファイル変更(追加、削除等)の通知を受けてDB登録する
Initial Scan:
Basic 単純にファイルの追加・削除の変更のみで更新を行う
Full 最後に登録されている情報と相違が無いかチェックして更新を行う
Recursive:
チェックを入れると再帰的に下位のディレクトリも検索の対象とします。
Include hidden files/directories:
チェックを入れると隠しファイルも検索の対象となります。
お勧めの設定は、上の画像の通りです。
Scan Mode:Timed + Initial Scan:Full + Recursive:チェックの設定にすると
ファイル数が多かったり、ディレクトリの階層が深いと、かなりの数の検索を行うことになり、サーバーに非常に負荷が掛かります。
2009,09,08 Tue 01:43
T4のでエディターはvimを使用しているのですが
vi /etc/vim/vimrcでsyntax onにしてもエラーになりました。
Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on
バージョン的には問題ないと思うんですが。
ということでvimをフルでインストール(笑)
(パッケージが多くて結構時間掛かります)
#apt-get install vim-full
途中で設定画面が出て来ますが、変更なしで先へ進めば設定完了。
/etc/vim/vimrcのsyntax onを有効にしてvim起動!
ちゃんと色が付いて表示されました。
(vimに色なんて要らね~っていう方には、全く要らないですね)
ついでにlsコマンドでの表示も色表示をONにします。
ユーザー全員に色付けOKにするには/etc/skel/.bashrcの変更を。
と思ったら、こちらは既に色付けOKな設定でした。
という事は、rootが個別に色無しになっているのか確認。
# vi /root/.bashrc
以下の行が色付けの行なんですが、コメントアウトされていました。
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
コメントを取って、上書きして、logout
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
再度ログインするとlsコマンドでちゃんと色付き表示されました。
vi /etc/vim/vimrcでsyntax onにしてもエラーになりました。
Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on
バージョン的には問題ないと思うんですが。
ということでvimをフルでインストール(笑)
(パッケージが多くて結構時間掛かります)
#apt-get install vim-full
途中で設定画面が出て来ますが、変更なしで先へ進めば設定完了。
/etc/vim/vimrcのsyntax onを有効にしてvim起動!
ちゃんと色が付いて表示されました。
(vimに色なんて要らね~っていう方には、全く要らないですね)
ついでにlsコマンドでの表示も色表示をONにします。
ユーザー全員に色付けOKにするには/etc/skel/.bashrcの変更を。
と思ったら、こちらは既に色付けOKな設定でした。
という事は、rootが個別に色無しになっているのか確認。
# vi /root/.bashrc
以下の行が色付けの行なんですが、コメントアウトされていました。
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
コメントを取って、上書きして、logout
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
再度ログインするとlsコマンドでちゃんと色付き表示されました。
2009,09,08 Tue 10:54
LinkStationの時から使用してたIOデータETG-US2があまり調子良くなかったので
BuffaloのLUA2-U2-KGTを購入。
チップはETG-US2と同じでカーネルのソースにはLUA-U2-GTとしてIDの登録もあり。
チップはAX88178です。
既にAsix.cはコンパイルしてmoduleとして入れてあるので差し替えるだけ。
eth1はETG-US2として記録されているのでeth2として認識。
設定を記録してる/etc/udev/rules.d/70-persistent-net.rulesを書き換え。
書き換え後に再起動で無事eth1として認識。
2009/11/08 追記
IOデータETG-US2、Buffalo LUA2-U2-KGT共に
/proc/net/devのパケット情報が全て0で取れていなかったのですが
カーネルのバージョンを2.6.31.5に上げることで、正常動作するようになりました。
(パケットカウントが取れないだけで動きは正常でした)
T4でUSB-LANを使用される方は、カーネルをバージョンアップした方が良いでしょう。
BuffaloのLUA2-U2-KGTを購入。
チップはETG-US2と同じでカーネルのソースにはLUA-U2-GTとしてIDの登録もあり。
チップはAX88178です。
既にAsix.cはコンパイルしてmoduleとして入れてあるので差し替えるだけ。
eth1はETG-US2として記録されているのでeth2として認識。
設定を記録してる/etc/udev/rules.d/70-persistent-net.rulesを書き換え。
書き換え後に再起動で無事eth1として認識。
2009/11/08 追記
IOデータETG-US2、Buffalo LUA2-U2-KGT共に
/proc/net/devのパケット情報が全て0で取れていなかったのですが
カーネルのバージョンを2.6.31.5に上げることで、正常動作するようになりました。
(パケットカウントが取れないだけで動きは正常でした)
T4でUSB-LANを使用される方は、カーネルをバージョンアップした方が良いでしょう。
2009,09,08 Tue 20:56
snmpdにアクセスすると、その度にsyslogにログを吐いてかなりの量に・・・
ログの出力レベルを変更して、通常のレベルのログを出力しないようにします。
# vi /etc/default/snmpd
SNMPDOPTS='-Lsd -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
この行を書き換えます。
※仕様が変わったのか、他と仕様が違うのか、よく書かれている方法ではうまく動きませんでした。
SNMPDOPTS='-LS3d -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
これでsyslogにログが出力されていないのを確認しました。
※ログレベルは3と書いてあるサイトや5と書いてあるサイトがあります。
kernel.hには以下のように書かれているのでerr以上の場合は3、notice以上の場合は5で良いとは思います。
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
ログの出力レベルを変更して、通常のレベルのログを出力しないようにします。
# vi /etc/default/snmpd
SNMPDOPTS='-Lsd -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
この行を書き換えます。
※仕様が変わったのか、他と仕様が違うのか、よく書かれている方法ではうまく動きませんでした。
SNMPDOPTS='-LS3d -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
これでsyslogにログが出力されていないのを確認しました。
※ログレベルは3と書いてあるサイトや5と書いてあるサイトがあります。
kernel.hには以下のように書かれているのでerr以上の場合は3、notice以上の場合は5で良いとは思います。
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
2009,09,10 Thu 20:26
MRTGを動かしていると5分に1回syslogにcronのログが出力され
syslogを見ても非常に見難くなります。
cronの-Lオプションでwarn以上しか出力しないように設定してみましたが
上手く動かずsyslogに出力されてしまいます。
そこでcronのログをsyslogではなく独立して出力するように変更します。
T4のlennyではrsyslogが使用されているので/etc/rsyslog.confを修正します。
以下の行があるので変更します。
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
cron.* /var/log/cron.log ←追加
*.*;auth,authpriv.none;cron.none -/var/log/syslog ←cron.noneの追加
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
変更後にrsyslogをリスタートするか、システムをリブートすれば適応されます。
続いてntpのログもsyslogから切り離します。
ntpのログ設定はntpdオプション用のファイルを修正します。
# vi default/ntp
NTPD_OPTSに以下の用に追加してください。
-l /var/log/ntp.log
ntpデーモンを再起動すれば/var/log/ntp.logが出来ているはずです。
未確認ですが、恐らくこのままではログは肥大化を続けるので
logrotateを使って、ログをローテーションさせてあげます。
新規にlogrotate用のファイルを作成して登録します。
# vi /etc/logrotate.d/ntp
内容はご自分でローテーションさせたい値に書き換えてください。
/var/log/ntp.log {
weekly
rotate 12
compress
missingok
}
これで/var/log/ntp.log がローテーションされます。
dhcp3-serverのログも結構頻繁に出るので独立させます。
基本的にはcronと同じ方法ですが、/etc/dhcp3/dhcpd.confの以下の行をまず確認します。
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
log-facility local7;が該当箇所です。
これはsyslogでlocal7というfacilityを使うという意味です。
もし他のデーモンがlocal7を使っていると、そのログまで一緒に別のファイルに書き込まれることになるので、local7の数字の部分を書き換える必要があります。
他で使われていなければそのままで構いません。
/etc/rsyslog.confを開いてcronと同様に追加、修正します。
追加、修正する文字はlocal7(書き換えていたら書き換えたもの)となります。
両サービスを再起動すれば、ログは別れて出力されます。
またlogrotateもcronと同じように設定する必要があります。
これらのログファイルを分けることでsyslogは大変見やすくなりました。
(ntpやdhcp-serverなどは、システムのログに比べて重要性は下がりますが、チェックはした方が良いと思います)
追記
smartmontoolsも同じようにsyslogのfacilityを指定可能です。
smartdのオプションを見ると以下のように書いています。
smartd version 5.38 [powerpc-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
Usage: smartd [options]
-c NAME|-, --configfile=NAME|-
Read configuration file NAME or stdin [default is /etc/smartd.conf]
-d, --debug
Start smartd in debug mode
-D, --showdirectives
Print the configuration file Directives and exit
-h, --help, --usage
Display this help and exit
-i N, --interval=N
Set interval between disk checks to N seconds, where N >= 10
-l local[0-7], --logfacility=local[0-7]
Use syslog facility local0 - local7 or daemon [default]
-n, --no-fork
Do not fork into background
-p NAME, --pidfile=NAME
Write PID file NAME
-q WHEN, --quit=WHEN
Quit on one of: nodev, errors, nodevstartup, never, onecheck, showtests
-r, --report=TYPE
Report transactions for one of: ioctl[,N], ataioctl[,N], scsiioctl[,N]
-V, --version, --license, --copyright
Print License, Copyright, and version information
/etc/default/smartmontoolsのsmartd_optsに--logfacility=local6などと追加すればOKです。
後はsyslogの設定でlocal6(オプションで指定したlocal)のログを切り離せば別にログを吐き出せます。
syslogを見ても非常に見難くなります。
cronの-Lオプションでwarn以上しか出力しないように設定してみましたが
上手く動かずsyslogに出力されてしまいます。
そこでcronのログをsyslogではなく独立して出力するように変更します。
T4のlennyではrsyslogが使用されているので/etc/rsyslog.confを修正します。
以下の行があるので変更します。
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
cron.* /var/log/cron.log ←追加
*.*;auth,authpriv.none;cron.none -/var/log/syslog ←cron.noneの追加
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
変更後にrsyslogをリスタートするか、システムをリブートすれば適応されます。
続いてntpのログもsyslogから切り離します。
ntpのログ設定はntpdオプション用のファイルを修正します。
# vi default/ntp
NTPD_OPTSに以下の用に追加してください。
-l /var/log/ntp.log
ntpデーモンを再起動すれば/var/log/ntp.logが出来ているはずです。
未確認ですが、恐らくこのままではログは肥大化を続けるので
logrotateを使って、ログをローテーションさせてあげます。
新規にlogrotate用のファイルを作成して登録します。
# vi /etc/logrotate.d/ntp
内容はご自分でローテーションさせたい値に書き換えてください。
/var/log/ntp.log {
weekly
rotate 12
compress
missingok
}
これで/var/log/ntp.log がローテーションされます。
dhcp3-serverのログも結構頻繁に出るので独立させます。
基本的にはcronと同じ方法ですが、/etc/dhcp3/dhcpd.confの以下の行をまず確認します。
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
log-facility local7;が該当箇所です。
これはsyslogでlocal7というfacilityを使うという意味です。
もし他のデーモンがlocal7を使っていると、そのログまで一緒に別のファイルに書き込まれることになるので、local7の数字の部分を書き換える必要があります。
他で使われていなければそのままで構いません。
/etc/rsyslog.confを開いてcronと同様に追加、修正します。
追加、修正する文字はlocal7(書き換えていたら書き換えたもの)となります。
両サービスを再起動すれば、ログは別れて出力されます。
またlogrotateもcronと同じように設定する必要があります。
これらのログファイルを分けることでsyslogは大変見やすくなりました。
(ntpやdhcp-serverなどは、システムのログに比べて重要性は下がりますが、チェックはした方が良いと思います)
追記
smartmontoolsも同じようにsyslogのfacilityを指定可能です。
smartdのオプションを見ると以下のように書いています。
smartd version 5.38 [powerpc-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
Usage: smartd [options]
-c NAME|-, --configfile=NAME|-
Read configuration file NAME or stdin [default is /etc/smartd.conf]
-d, --debug
Start smartd in debug mode
-D, --showdirectives
Print the configuration file Directives and exit
-h, --help, --usage
Display this help and exit
-i N, --interval=N
Set interval between disk checks to N seconds, where N >= 10
-l local[0-7], --logfacility=local[0-7]
Use syslog facility local0 - local7 or daemon [default]
-n, --no-fork
Do not fork into background
-p NAME, --pidfile=NAME
Write PID file NAME
-q WHEN, --quit=WHEN
Quit on one of: nodev, errors, nodevstartup, never, onecheck, showtests
-r, --report=TYPE
Report transactions for one of: ioctl[,N], ataioctl[,N], scsiioctl[,N]
-V, --version, --license, --copyright
Print License, Copyright, and version information
/etc/default/smartmontoolsのsmartd_optsに--logfacility=local6などと追加すればOKです。
後はsyslogの設定でlocal6(オプションで指定したlocal)のログを切り離せば別にログを吐き出せます。
2009,09,12 Sat 00:12
SSHで外から接続出来ると何かと便利です。
しかし、セキュリティ的にはあまり良くありません。
秘密鍵の利用や、SSHポート番号の変更は当然ですが
それでもアタックしてくる奴はいるものです。
私はアタックが多い国のIPをiptablesで規制しています。
(当然ながらその国のIPからは全く繋がりません)
この対応でアタック自体はかなり減らすことが出来ました。
※詳しくはblog内に書いてます。
それでも稀にアタックはあるかもしれません。
より安全にするためにSSHに接続出来るIPを規制します。
(会社などで固定IPがある場合で無いと有効には出来ませんが)
編集するファイルは以下となります。
/etc/hosts.allow
当然ながらローカルの接続は許可となります。
sshd : 192.168. : ALLOW
複数のIPを登録する場合は、スペースで区切って登録します。
(最後の: ALLOWは無くても構いません)
sshd : 192.168. xxx.xxx.xxx.xxx: ALLOW
それ以外は拒否しなければならないので
/etc/hosts.denyにsshd: ALLと書き加える必要があります。
個人的には面倒臭がりなので
/etc/hosts.allowに拒否の行まで書き加えます(笑)
sshd: ALL : deny
許可・非許可のルールはファイル内では上から一致するまで
ファイルの優先順位は/etc/hosts.allowから/etc/hosts.denyへと解釈されます。
どちらにも一致しなかった場合は許可となりますので/etc/hosts.denyの最後に
次の一行を追加しておくことをお勧めします。
ALL : ALL : deny
またsshdにアクセスがあった場合にメールを送ることも可能です。
※メールを送信出来る環境の場合です。
下にサンプルを書いておきます。
# for sshd local access
sshd : 192.168. : ALLOW
# for sshd etc access with mail
sshd : xxx.xxx.xxx.xxx : spawn ( /usr/bin/mail -s "sshd connected from %h" yourname@yourmail.com) &
上の行が192.168から始まるアドレスを許可(メールは送られません)
下の行がxxx.xxx.xxx.xxxからアクセスがあった場合に許可しますが、同時にメールを送信します。
※ポートへの接続自体の許可であって、SSHの認証は当然必要です。
"sshd connected from %h"の部分がメールの件名として送られてきます。
%hは接続してきたホスト名(又はIP)に置き換えられて送信されます。
yourname@yourmail.comは送信先のメールアドレスとなります。
※標準の25番ポートを開けて使うのは、かなりの確率でアタックを受けるのでお勧めしません。
しかし、セキュリティ的にはあまり良くありません。
秘密鍵の利用や、SSHポート番号の変更は当然ですが
それでもアタックしてくる奴はいるものです。
私はアタックが多い国のIPをiptablesで規制しています。
(当然ながらその国のIPからは全く繋がりません)
この対応でアタック自体はかなり減らすことが出来ました。
※詳しくはblog内に書いてます。
それでも稀にアタックはあるかもしれません。
より安全にするためにSSHに接続出来るIPを規制します。
(会社などで固定IPがある場合で無いと有効には出来ませんが)
編集するファイルは以下となります。
/etc/hosts.allow
当然ながらローカルの接続は許可となります。
sshd : 192.168. : ALLOW
複数のIPを登録する場合は、スペースで区切って登録します。
(最後の: ALLOWは無くても構いません)
sshd : 192.168. xxx.xxx.xxx.xxx: ALLOW
それ以外は拒否しなければならないので
/etc/hosts.denyにsshd: ALLと書き加える必要があります。
個人的には面倒臭がりなので
/etc/hosts.allowに拒否の行まで書き加えます(笑)
sshd: ALL : deny
許可・非許可のルールはファイル内では上から一致するまで
ファイルの優先順位は/etc/hosts.allowから/etc/hosts.denyへと解釈されます。
どちらにも一致しなかった場合は許可となりますので/etc/hosts.denyの最後に
次の一行を追加しておくことをお勧めします。
ALL : ALL : deny
またsshdにアクセスがあった場合にメールを送ることも可能です。
※メールを送信出来る環境の場合です。
下にサンプルを書いておきます。
# for sshd local access
sshd : 192.168. : ALLOW
# for sshd etc access with mail
sshd : xxx.xxx.xxx.xxx : spawn ( /usr/bin/mail -s "sshd connected from %h" yourname@yourmail.com) &
上の行が192.168から始まるアドレスを許可(メールは送られません)
下の行がxxx.xxx.xxx.xxxからアクセスがあった場合に許可しますが、同時にメールを送信します。
※ポートへの接続自体の許可であって、SSHの認証は当然必要です。
"sshd connected from %h"の部分がメールの件名として送られてきます。
%hは接続してきたホスト名(又はIP)に置き換えられて送信されます。
yourname@yourmail.comは送信先のメールアドレスとなります。
※標準の25番ポートを開けて使うのは、かなりの確率でアタックを受けるのでお勧めしません。
2009,09,14 Mon 20:04

