環境構築

RaspberryPi3 その2 motionのインストール・設定

RaspberryPi3を監視カメラに仕立てるためにmotionをインストールした。
http://192.168.xx.xxのネットワークカメラに接続して、動態検知し、検知した際にのみ
動画を保存する仕様にした。

インストール

apt-get install motion

設定

デフォルトのコンフィグファイルが長すぎ。必要と思われる分のみ抜粋した

vi /etc/motion/motion.conf

############################################################
# Daemon
############################################################
daemon off
process_id_file /var/run/motion/motion.pid

############################################################
# Basic Setup Mode
############################################################
setup_mode off
logfile /var/log/motion/motion.log
log_level 4
log_type all

############################################################
# Capture device options
############################################################
norm 1
framerate 100

############################################################
# Motion Detection Settings:
############################################################
threshold 9000

############################################################
# Image File Output
############################################################
output_pictures off
quality 80

############################################################
# FFMPEG related options
############################################################
ffmpeg_output_movies on
ffmpeg_bps 500000
ffmpeg_video_codec mpeg4

############################################################
# Snapshots (Traditional Periodic Webcam File Output)
############################################################
snapshot_interval 0

############################################################
# Text Display
############################################################
locate_motion_mode off
locate_motion_style box
text_right %Y-%m-%d\n%T-%q
text_left CAMERA %t
text_event %Y%m%d%H%M%S
text_double on

############################################################
# Target Directories and filenames For Images And Films
############################################################
snapshot_filename %Y%m%d/%Y%m%d_%H%M%S-snapshot
picture_filename %Y%m%d/%Y%m%d_%H%M%S
movie_filename %Y%m%d/%Y%m%d_%H%M%S
timelapse_filename %Y%m%d/%Y%m%d_%H%M%S-timelapse

############################################################
# Live Stream Server
############################################################
stream_localhost off
stream_auth_method 2
stream_authentication xxxx:xxxx

############################################################
# HTTP Based Control
############################################################
webcontrol_port 8080
webcontrol_localhost off
webcontrol_html_output on
webcontrol_authentication xxxx:xxxx

##############################################################
# Camera config directory - One for each camera.
##############################################################
camera_dir /etc/motion/conf.d

ファイルの保存先は「/mnt/nas/SecureCameras/camera1」とした。

mkdir -p /mnt/nas/SecureCameras/camera1
mkdir /etc/motion/conf.d
vi /etc/motion/conf.d/camera1.conf

camera_id = 1
netcam_url http://192.168.xx.xx:8088
target_dir /mnt/nas/SecureCameras/camera1
stream_port 8081
width 640
height 480

自動起動

vi /etc/default/motion

start_motion_daemon=no
↓
start_motion_daemon=yes
vi /etc/init.d/motion

if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion; then
↓
if start-stop-daemon --start --oknodo --exec $DAEMON -b ; then
systemctl enable motion
systemctl start motion

logローテーション設定

vi /etc/logrotate.d/motion

logfile /var/log/motion/motion.log {
        rotate 31
        daily
        dateext
        missingok
        notifempty
        nocompress
        copytruncate
}

OracleLinux7 に Oracle Database 12c をインストール

以下の環境に対してOracleDatabase12cをインストールした。

環境

■OS



Oracle Linux 7.1 64bit



※Oracle Vritual Boxを用いて仮想環境で実行



 



■Oracle



Oracle Database 12c Release 1 (12.1.0.1.0) for Linux x86-64



 

インストール手順

1.ユーザー作成

<br />
	groupadd -g 54321 oinstall<br />
	groupadd -g 54322 dba<br />
	groupadd -g 54323 oper<br />
	groupadd -g 54324 backupdba<br />
	groupadd -g 54325 dgdba<br />
	groupadd -g 54326 kmdba<br />
	groupadd -g 54327 asmdba<br />
	groupadd -g 54328 asmoper<br />
	groupadd -g 54329 asmadmin<br />
	

<br />
	useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba oracle<br />
	passwd oracle<br />
	

※パスワードは好きな文字列で設定

2.リソース制限の変更



<code>/etc/security/limits.confに以下を追加</code>



 oracle soft nproc <span class="synConstant">2047</span> oracle hard nproc <span class="synConstant">16384</span> oracle soft nofile <span class="synConstant">1024</span> oracle hard nofile <span class="synConstant">65536</span> oracle soft stack<span class="synConstant"> </span>10240 oracle hard stack<span class="synConstant"> </span>32768</pre> 

Windows7のMTU設定変更

Windows7だとMTUの自動調整機能とやらが動作し、パケットの断片化、エラーが大きることがあるらしい。

MTUを固定して指定する手順をメモしておく。

コマンドプロンプトで以下のコマンドを発行。

 

NICの確認

netsh interface ipv4 show interface

Idx     Met         MTU          状態                 名前
---  ----------  ----------  ------------  ---------------------------
  1          50  4294967295  connected     Loopback Pseudo-Interface 1
 13          10        1300  connected     ローカル エリア接続
 19          30        1500  disconnected  ローカル エリア接続 2

 

使用してるNICのIdxとMTUを指定

netsh interface ipv4 set interface 13 mtu=1300

 

設定完了。1300は小さすぎるかもしれないがとりあえず設定できた。

OpenVPN使用時にファイルアップロードでエラー

QNAPのOpenVPNサーバーに接続してファイルをアップロード使用とした際に

エラーになることがあったので、対応策をメモしておく。

 

障害内容

 数MBの大きいファイルをアップロードしたら切断エラーが発生。

 小さいファイルはアップロードできる。

 また、たまに成功もする。

 

想定される原因

  パケットサイズが大きすぎる。

  デフォルトだと1450になっている模様。

  Bフレッツだとたぶんパケットサイズは1454にしているので、VPNを通すとサイズが超えるためか。

 

対応策

  OpenVPNクライアントの設定ファイル「openvpn.ovpn」に以下の構文を追加。

 

     mssfix 1300を追加。

 

  これはUDPパケットのパケットサイズを指定する設定。

QNAP NASでのバックアップ用シェルを用意し、cronで動かす

QNAPのNASのファームウェアを4.0.3にアップデートしたら cronが動かなくなった。
対応方法を調査したのでそのときのメモ。
NASはTS-669 Pro

やりたいこと

rsyncを夜間に実行し、外付HDDにバックアップを取得したい。
QNAPの基本機能で外付けHDDにバックアップはできるが、ファイルの更新内容を
メールで送信したいためシェルを組み込む

対応方法

1.シェル用意
以下の2ファイルをどこかのディレクトリに作成。
私の場合は過去ログも共有フォルダで参照したいため、共有フォルダ内にシェル、ログを配置した。

#!/bin/sh

export LANG=en_US.UTF-8

sdate=`date +%Y%m%d%H%M`
cd /share/共有フォルダ/外付けHDDへバックアップ
sh copyExtHDDlib.sh > Log/$sdate.log 2>&1
RTN=$?
if [ ${RTN} -ne 0 ]
then
    # エラー
    fromAddr=”xxx@hiroroom.net”
    toAddr=”xxx@hiroroom.net”
    subjString=”copyExtHDD NG[NAS]”
    bodyString1=”外付けHDDへのバックアップが失敗しました。\n\n以下、実行ログです。\n\n”
    bodyString2=`cat Log/$sdate.log`
    bodyString=$bodyString1$bodyString2
    echo -e "From: <${fromAddr}>\nTo: <${toAddr}>\nSubject:${subjString}\n\n${bodyString}" | /usr/sbin/sendmail ${toAddr}
else
    # 正常終了
    fromAddr=”xxx@hiroroom.net”
    toAddr=”xxx@hiroroom.net”
    subjString=”copyExtHDD OK[NAS]”
    bodyString1=”外付けHDDへのバックアップが成功しました。\n\n以下、実行ログです。\n\n”
    bodyString2=`cat Log/$sdate.log`
    bodyString=$bodyString1$bodyString2
    echo -e "From: <${fromAddr}>\nTo: <${toAddr}>\nSubject:${subjString}\n\n${bodyString}" | /usr/sbin/sendmail ${toAddr}
fi
#!/bin/sh

#バックアップの実施
echo ""
echo "****************************** 共有フォルダ ***************************************"
echo `date`
rsync -av –delete /share/共有フォルダ/ /share/USBDisk1/共有フォルダ/ | grep -v "/$"
RTN=$?
if [ ${RTN} -ne 0 ]
then
    echo "**** エラー発生。処理を中断します。 ****"
    exit ${RTN}
fi

#ディスクの情報を出力
echo ""
echo "****************************** ディスクの情報を出力 ***************************************"
df -h

※rsyncの詳細出力から常に出力されるディレクトの情報は除いてています。
 grep -v “/$” でパスの最後が/で終わっているもの以外を出力。
 
 

2.ログフォルダ作成、権限割り当て
※ログフォルダも作っておく

mkdir Log
chmod u+x copyExtHDD.sh
chmod u+x copyExtHDDlib.sh

 
 

3.cron設定
/etc/config/crontabにcronの設定を追加。
1で作成したシェルを毎日朝3時に実行させる。

00 3 * * * /share/共有フォルダ/copyExtHDD.sh<br /><br />

※使っているssh接続ツールであるPoderosaだと日本語のパスが文字化けしたため、WinSCPでファイルをアップロードした

cron読み込み、その後サービス再起動

crontab /etc/config/crontab
/etc/init.d/crond.sh restart

cronが反映されているか確認

crontab -l