Linux/Distribution/Raspbian
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*Raspbian [#a9c0ad00]
-[[Raspbian:+https://www.raspberrypi.org/downloads/raspbi...
Raspberry Pi用としてメンテナンスされているDebian系ディス...
Debian系なのでAPT(apt-get)を利用してパッケージをインスト...
初期設定を簡素化する為にRaspbian特有のシェルスクリプトが...
Linux初心者でも楽に最低限のOS設定をする事が出来るようにな...
~
*イメージバックアップ [#b96f230c]
Raspberry PiではSDカードにOSをインストールする事を前提と...
ddコマンドによるイメージバックアップ・リストアが簡単に実...
小さい容量のSDカードへリストアすると、SDカード容量不足でd...
よって、Raspberry Pi(Raspbian)では専用のOSコピー(バックア...
こちらを利用する方が正確にコピーを取得する事が出来る。
#region(&color(#ff0000){rpi-clone};)
-&font(b){参考サイト};
[[billw2/rpi-clone:+https://github.com/billw2/rpi-clone]]
[[Raspberry PiでIoTなシステム開発:+http://www.homu.net/ra...
-&font(b){コマンド実行};
バックアップ取得前に、コピー先SDカードをRaspberry Piに接...
今回はSDカードが、&color(#ff0000){"/dev/sda"};に接続され...
# git clone https://github.com/billw2/rpi-clone
# ./rpi-clone sda -f
---
Do you want to initialize the destination disk /dev/sda?...
You may enter a label for the destination rootfs /dev/sd...
Final check, is it Ok to proceed with the clone (yes/no)...
Starting the filesystem rsync to sda
(This may take several minutes)...
---
Hit Enter when ready to unmount the /dev/sda partitions....
unmounting /mnt/clone/boot
unmounting /mnt/clone
#endregion
~
*Crystal Signal Pi [#gfee968c]
Raspberry Piでパトライト(回転灯)を実装する追加モジュール。
(株)インフィニットループが開発・販売をしており、[[amazon:...
APIも用意されている為、監視システムからパトライト代わりに...
~
&size(16){&font(b){1. インストール};};
詳細は[[オフィシャルページ:+http://crystal-signal.com/]]...
インストール先やapacheのスクリプト設定は固定となるが、イ...
インストールにはroot権限が必要なのでrootユーザか、sudoで...
スクリプト実行時はシェルをbashにする必要があるので、bash...
# curl -O https://raw.githubusercontent.com/infiniteloop...
# ./install.sh
~
&size(16){&font(b){2. アップデート};};
Crystal Signal Piのミドルウェアアップデートもスクリプトか...
OSアップデートと同時にCrystal Signal Piのミドルウェアもア...
下記のオプションを[fullupdate]に変更して実行する
# curl -O https://raw.githubusercontent.com/infiniteloop...
# ./install.sh update
~
&size(16){&font(b){3. スクリプト修正};};
apacheのListenを[0.0.0.0]からIPアドレス指定に変更している...
スクリプトからAPIを叩けなくなり、結果としてCrystal Signal...
停止ボタンを使えるようにするには、下記コマンドを実行して...
・apacheのListenを192.168.0.1にしている場合
---
# cd /var/lib/crystal-signal/scripts/
# mv Ack.sh Ack.sh-
# mv AckNewestOnly.sh AckNewestOnly.sh-
# cat Ack.sh- | sed -e 's/localhost/192.168.0....
# cat AckNewestOnly.sh- | sed -e 's/localhost/192.168.0....
# chmod 755 Ack.sh AckNewestOnly.sh
# rm Ack.sh- AckNewestOnly.sh-
~
&size(16){&font(b){4. APIスクリプト};};
Crystal Signal PiはAPIを備えているので、スクリプトを用意...
参考までに作成したスクリプトを掲載。
バーストした時にLEDへ負荷が掛からないように、一度APIを叩...
~
#region(&color(#ff0000){スクリプト [zabbix_csp.pl]};)
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
###
### Const variable
###
my $OPT_DEBUG = 0;
my $OPT_FORCE = 0;
my $OPT_LEVEL = 0;
my $OPT_HELP = 0;
my @LINE;
my $DATE = time;
my $DELTA = 0;
my $LOCK = "/tmp/zabbix_csp";
my $INTERVAL = 60;
my $BIN_CURL = "/usr/bin/curl";
my $OPT_CURL = "-o /dev/null --silent";
my $PROT = "http://";
my $FQDN = "192.168.0.1";
my $TYPE = 0;
my $API = 0;
my %ALERT;
$ALERT{'clear'} = '?ack=1&info=CLEAR';
$ALERT{'information'} = '?color=000,128,000&mode=1&rep...
$ALERT{'warning'} = '?color=064,064,000&mode=1&rep...
$ALERT{'average'} = '?color=064,032,000&mode=1&rep...
$ALERT{'high'} = '?color=064,000,000&mode=1&rep...
$ALERT{'disaster'} = '?color=128,000,000&mode=1&rep...
###
### Main program
###
## Set of execution options
##
foreach my $tmp_OPT(@ARGV){
# Default value
if(($tmp_OPT eq '-d')||($tmp_OPT eq '--debug')){ $OP...
if(($tmp_OPT eq '-f')||($tmp_OPT eq '--force')){ $OP...
if(($tmp_OPT eq '-h')||($tmp_OPT eq '--help' )){ $OP...
# Alert type
if(($tmp_OPT =~ '^-l=')||($tmp_OPT =~ '^--level=')){
$OPT_LEVEL++;
$tmp_OPT =~ s/^-l\=//;
$tmp_OPT =~ s/^--level=\=//;
$TYPE = lc($tmp_OPT);
}
}
if($OPT_DEBUG){
print "VALUE::OPT_DEBUG $OPT_DEBUG\n";
print "VALUE::OPT_FORCE $OPT_FORCE\n";
print "VALUE::OPT_LEVEL $OPT_LEVEL\n";
print "VALUE::OPT_HELP $OPT_HELP\n";
print "-----\n";
}
## Print script help
##
if($OPT_HELP){
print "usage: zabbix_csp [-l=\"AlertType\"] [-d Debu...
print " [-f ForceExecute] [-h Outpu...
print "examp: zabbix_csp -l=warning\n";
print " zabbix_csp -l=warning -d\n";
print " zabbix_csp -l=warning -f\n";
exit 0;
}
## Check last log
##
# Read log
if(-f $LOCK){
open(READ, "$LOCK");
foreach(<READ>){
@LINE = split(/,/, $_);
}
close(READ);
# Get of delta
$DELTA = $DATE-$LINE[0];
if($OPT_DEBUG){
print "VALUE::TYPE $TYPE\n";
print "VALUE::LINE(OLD) $LINE[0]\n";
print "VALUE::DATE(NEW) $DATE\n";
print "VALUE::INTERVAL $INTERVAL\n";
print "VALUE::DELTA $DELTA\n";
print "-----\n";
}
if(!$OPT_FORCE&&($DELTA<$INTERVAL)){
exit 0;
}
}
# Write log
open(WRITE, "> $LOCK");
print WRITE "$DATE,$TYPE";
close(WRITE);
## Running the API
##
if(($OPT_LEVEL)&&(exists($ALERT{$TYPE}))){
$API = $PROT.$FQDN."/ctrl/".$ALERT{$TYPE};
if($OPT_DEBUG){
print "VALUE::API $API\n";
print "-----\n";
}else{
system("$BIN_CURL $OPT_CURL \"$API\"");
}
}else{
print "ERROR:: Hash key does not exist.\n";
exit 1;
}
#endregion
~
#region(&color(#ff0000){実行方法};)
・レベル4(重度の障害)でスクリプト実行
---
# zabbix_csp.pl -l=HIGH
・LED消灯(停止)の実行
---
# zabbix_csp.pl -l=CLEAR
・1分間インターバルを無視して強制実行
---
# zabbix_csp.pl -l=HIGH -f
・変数表示などのデバッグモード
---
# zabbix_csp.pl -l=HIGH -d
#endregion
~
*乱数生成器 [#f4bf86d8]
乱数を取得する際に使用する&font(b){/dev/random};は、
デバイスドライバ等から収集した乱数エントロピーが溜まらな...
Raspberry Piはハードウェアの乱数生成器を搭載しているので、
エントロピープール参照元をハードウェアに設定する事でエン...
・Raspberry Pi 2 Model B
---
# modprobe bcm2708-rng
# echo "bcm2708-rng" >> /etc/modules
# apt-get install rng-tools
# systemctl enable rng-tools
# systemctl start rng-tools
・Raspberry Pi 3 Model B
---
# modprobe bcm2835-rng
# echo "bcm2835-rng" >> /etc/modules
# apt-get install rng-tools
# systemctl enable rng-tools
# systemctl start rng-tools
・エントロピープールの確認
---
# cat /proc/sys/kernel/random/entropy_avail
終了行:
*Raspbian [#a9c0ad00]
-[[Raspbian:+https://www.raspberrypi.org/downloads/raspbi...
Raspberry Pi用としてメンテナンスされているDebian系ディス...
Debian系なのでAPT(apt-get)を利用してパッケージをインスト...
初期設定を簡素化する為にRaspbian特有のシェルスクリプトが...
Linux初心者でも楽に最低限のOS設定をする事が出来るようにな...
~
*イメージバックアップ [#b96f230c]
Raspberry PiではSDカードにOSをインストールする事を前提と...
ddコマンドによるイメージバックアップ・リストアが簡単に実...
小さい容量のSDカードへリストアすると、SDカード容量不足でd...
よって、Raspberry Pi(Raspbian)では専用のOSコピー(バックア...
こちらを利用する方が正確にコピーを取得する事が出来る。
#region(&color(#ff0000){rpi-clone};)
-&font(b){参考サイト};
[[billw2/rpi-clone:+https://github.com/billw2/rpi-clone]]
[[Raspberry PiでIoTなシステム開発:+http://www.homu.net/ra...
-&font(b){コマンド実行};
バックアップ取得前に、コピー先SDカードをRaspberry Piに接...
今回はSDカードが、&color(#ff0000){"/dev/sda"};に接続され...
# git clone https://github.com/billw2/rpi-clone
# ./rpi-clone sda -f
---
Do you want to initialize the destination disk /dev/sda?...
You may enter a label for the destination rootfs /dev/sd...
Final check, is it Ok to proceed with the clone (yes/no)...
Starting the filesystem rsync to sda
(This may take several minutes)...
---
Hit Enter when ready to unmount the /dev/sda partitions....
unmounting /mnt/clone/boot
unmounting /mnt/clone
#endregion
~
*Crystal Signal Pi [#gfee968c]
Raspberry Piでパトライト(回転灯)を実装する追加モジュール。
(株)インフィニットループが開発・販売をしており、[[amazon:...
APIも用意されている為、監視システムからパトライト代わりに...
~
&size(16){&font(b){1. インストール};};
詳細は[[オフィシャルページ:+http://crystal-signal.com/]]...
インストール先やapacheのスクリプト設定は固定となるが、イ...
インストールにはroot権限が必要なのでrootユーザか、sudoで...
スクリプト実行時はシェルをbashにする必要があるので、bash...
# curl -O https://raw.githubusercontent.com/infiniteloop...
# ./install.sh
~
&size(16){&font(b){2. アップデート};};
Crystal Signal Piのミドルウェアアップデートもスクリプトか...
OSアップデートと同時にCrystal Signal Piのミドルウェアもア...
下記のオプションを[fullupdate]に変更して実行する
# curl -O https://raw.githubusercontent.com/infiniteloop...
# ./install.sh update
~
&size(16){&font(b){3. スクリプト修正};};
apacheのListenを[0.0.0.0]からIPアドレス指定に変更している...
スクリプトからAPIを叩けなくなり、結果としてCrystal Signal...
停止ボタンを使えるようにするには、下記コマンドを実行して...
・apacheのListenを192.168.0.1にしている場合
---
# cd /var/lib/crystal-signal/scripts/
# mv Ack.sh Ack.sh-
# mv AckNewestOnly.sh AckNewestOnly.sh-
# cat Ack.sh- | sed -e 's/localhost/192.168.0....
# cat AckNewestOnly.sh- | sed -e 's/localhost/192.168.0....
# chmod 755 Ack.sh AckNewestOnly.sh
# rm Ack.sh- AckNewestOnly.sh-
~
&size(16){&font(b){4. APIスクリプト};};
Crystal Signal PiはAPIを備えているので、スクリプトを用意...
参考までに作成したスクリプトを掲載。
バーストした時にLEDへ負荷が掛からないように、一度APIを叩...
~
#region(&color(#ff0000){スクリプト [zabbix_csp.pl]};)
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
###
### Const variable
###
my $OPT_DEBUG = 0;
my $OPT_FORCE = 0;
my $OPT_LEVEL = 0;
my $OPT_HELP = 0;
my @LINE;
my $DATE = time;
my $DELTA = 0;
my $LOCK = "/tmp/zabbix_csp";
my $INTERVAL = 60;
my $BIN_CURL = "/usr/bin/curl";
my $OPT_CURL = "-o /dev/null --silent";
my $PROT = "http://";
my $FQDN = "192.168.0.1";
my $TYPE = 0;
my $API = 0;
my %ALERT;
$ALERT{'clear'} = '?ack=1&info=CLEAR';
$ALERT{'information'} = '?color=000,128,000&mode=1&rep...
$ALERT{'warning'} = '?color=064,064,000&mode=1&rep...
$ALERT{'average'} = '?color=064,032,000&mode=1&rep...
$ALERT{'high'} = '?color=064,000,000&mode=1&rep...
$ALERT{'disaster'} = '?color=128,000,000&mode=1&rep...
###
### Main program
###
## Set of execution options
##
foreach my $tmp_OPT(@ARGV){
# Default value
if(($tmp_OPT eq '-d')||($tmp_OPT eq '--debug')){ $OP...
if(($tmp_OPT eq '-f')||($tmp_OPT eq '--force')){ $OP...
if(($tmp_OPT eq '-h')||($tmp_OPT eq '--help' )){ $OP...
# Alert type
if(($tmp_OPT =~ '^-l=')||($tmp_OPT =~ '^--level=')){
$OPT_LEVEL++;
$tmp_OPT =~ s/^-l\=//;
$tmp_OPT =~ s/^--level=\=//;
$TYPE = lc($tmp_OPT);
}
}
if($OPT_DEBUG){
print "VALUE::OPT_DEBUG $OPT_DEBUG\n";
print "VALUE::OPT_FORCE $OPT_FORCE\n";
print "VALUE::OPT_LEVEL $OPT_LEVEL\n";
print "VALUE::OPT_HELP $OPT_HELP\n";
print "-----\n";
}
## Print script help
##
if($OPT_HELP){
print "usage: zabbix_csp [-l=\"AlertType\"] [-d Debu...
print " [-f ForceExecute] [-h Outpu...
print "examp: zabbix_csp -l=warning\n";
print " zabbix_csp -l=warning -d\n";
print " zabbix_csp -l=warning -f\n";
exit 0;
}
## Check last log
##
# Read log
if(-f $LOCK){
open(READ, "$LOCK");
foreach(<READ>){
@LINE = split(/,/, $_);
}
close(READ);
# Get of delta
$DELTA = $DATE-$LINE[0];
if($OPT_DEBUG){
print "VALUE::TYPE $TYPE\n";
print "VALUE::LINE(OLD) $LINE[0]\n";
print "VALUE::DATE(NEW) $DATE\n";
print "VALUE::INTERVAL $INTERVAL\n";
print "VALUE::DELTA $DELTA\n";
print "-----\n";
}
if(!$OPT_FORCE&&($DELTA<$INTERVAL)){
exit 0;
}
}
# Write log
open(WRITE, "> $LOCK");
print WRITE "$DATE,$TYPE";
close(WRITE);
## Running the API
##
if(($OPT_LEVEL)&&(exists($ALERT{$TYPE}))){
$API = $PROT.$FQDN."/ctrl/".$ALERT{$TYPE};
if($OPT_DEBUG){
print "VALUE::API $API\n";
print "-----\n";
}else{
system("$BIN_CURL $OPT_CURL \"$API\"");
}
}else{
print "ERROR:: Hash key does not exist.\n";
exit 1;
}
#endregion
~
#region(&color(#ff0000){実行方法};)
・レベル4(重度の障害)でスクリプト実行
---
# zabbix_csp.pl -l=HIGH
・LED消灯(停止)の実行
---
# zabbix_csp.pl -l=CLEAR
・1分間インターバルを無視して強制実行
---
# zabbix_csp.pl -l=HIGH -f
・変数表示などのデバッグモード
---
# zabbix_csp.pl -l=HIGH -d
#endregion
~
*乱数生成器 [#f4bf86d8]
乱数を取得する際に使用する&font(b){/dev/random};は、
デバイスドライバ等から収集した乱数エントロピーが溜まらな...
Raspberry Piはハードウェアの乱数生成器を搭載しているので、
エントロピープール参照元をハードウェアに設定する事でエン...
・Raspberry Pi 2 Model B
---
# modprobe bcm2708-rng
# echo "bcm2708-rng" >> /etc/modules
# apt-get install rng-tools
# systemctl enable rng-tools
# systemctl start rng-tools
・Raspberry Pi 3 Model B
---
# modprobe bcm2835-rng
# echo "bcm2835-rng" >> /etc/modules
# apt-get install rng-tools
# systemctl enable rng-tools
# systemctl start rng-tools
・エントロピープールの確認
---
# cat /proc/sys/kernel/random/entropy_avail
ページ名: