■デフォルトSSHのままで公開鍵設定

QNAP付属のsshdはユーザーの変更ができない。よってadminユーザーしか接続ができない。

OpenSSHdをインストールすると制限を回避できるが、手間なので公開鍵設定だけをする。

SSHのポートをWeb管理ページから変更。(もちろん変更しなくてもいい)

SSHでログイン後、/etc/config/ssh/authorized_keysを作成。

公開鍵を入力。

次にSSHdの設定変更。/etc/ssh/sshd_configにて

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeyFile /etc/config/ssh/authorized_keys

RhostsRSAAuthentication no

PasswordAuthentication no

PermitEmptyPasswords no

ChallengeResponseAuthentication no

に変更し、パスワード認証の無効化をする。

(/root/.ssh/でシンボリックリンクされてるので、AuthorizedKeyFileのパスを書き換える必要はない?)

しかし、QNAPを再起動すると/etc/ssh/sshd_configがもとに戻ってしまう。

http://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup

ここを参考に設定する。

cd /share/MD0_DATA/

mkdir config

cd config

cp /etc/ssh/sshd_config /share/MD0_DATA/config/

RAID1でミラーリングされているデータ領域にconfigフォルダを作り、sshd_configをコピーしておく。

あと、適用させたい設定となるように編集もしておく。

RAID1してないよおお!とかいう場合には、/share/HDA_DATA/とかでいいんじゃないかな。

mount -t ext2 /dev/mtdblock5 /tmp/config

起動時に読み込まれる設定ファイルを入れるディレクトリをマウント。

(機種によって違うのでWikiを確認してください)

cd /tmp/config

vi autorun.sh

以下のファイルを作成し、起動毎にsshd_configを上書きコピーするようにする。

#!/bin/sh

cp /share/MD0_DATA/config/sshd_config /etc/ssh

/etc/init.d/login.sh restart

chmod +x ./autorun.sh

実行可能なようにしておく。

これで起動時にautorun.shが実行されて、設定が適用される。

 

■SSHでログインした時にMotd・Bannerが表示されない?

.profileに以下の記述がされています。

export PS1=’[\w] # ‘

reset

一旦リセットがかけられているため表示しても、すぐにクリアされています。

編集しても再起動で元通りになってしまうので、

sshd_configのようにautorun.shで.profileを変更するようにすればOKです。

これおもしろい→ http://parkersamp.com/2010/10/howto-creating-a-dynamic-motd-in-linux/ 

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=23440

 

■WakeOnLanのインストール

Web管理ページからOptwareをインストールし、ipkgコマンドを使用可能にする。

SSHやTELNETで接続し、以下のコマンドを入力する。

ipkg update

ipkg upgrade

ipkg install perl

ipkg install perl-wakeonlan

wakeonlanコマンドが使用可能になる。

 

■QUSBCamからPHPで画像を取得

QUSBCamをインストールすることによって、QNAP本体に接続したUSBカメラの画像を取得できるようになる。

しかし、Web管理ページからログインしないと見えない上に、MotionJPGのためブラウザによっては見れない場合もある。

PHPで画像を取得し、JPEGとして見れるようにするためのメモ。

 

Web管理ページを見る限り、

/share/MD0_DATA/.qpkg/QUSBCam/QUSBCam/getStream.cgi

に存在するシェルスクリプトにて画像の取得が行われている。

中を見てみると、

usr/bin/ffmpeg -f mjpeg -r 1 -s 320×240 -vframes 1 -i http://localhost:8168/video0.cgi -f mjpeg – 2>/dev/null

という表記があるので、

$img = imagecreatefromstring(shell_exec(“/usr/bin/ffmpeg -f mjpeg -r 1 -s 320×240 -vframes 1 -i http://localhost:8168/video0.cgi -f mjpeg – 2>/dev/null”));

というようなPHPを書けば画像の取得は可能。

ちなみにGDはデフォで入ってる。

めも:http://www.lavrsen.dk/foswiki/bin/view/Motion/MjpegFrameGrabPHP

 

■.profileにこんなもの書いてみた

# Server Information #

HOSTNAME=`hostname`
ADDRESS="*******"
KERNEL=`uname -r`
UPTIME=`uptime | awk {'print $3 " " substr($4,1,length($4)-1)'}`

MEMTOTAL=`cat /proc/meminfo | grep MemTotal | awk {'print $2'}`
MEMFREE=`cat /proc/meminfo | grep MemFree | awk {'print $2'}`
MEMUSED=`expr ${MEMTOTAL} - ${MEMFREE}`
MEMORY="${MEMUSED} / ${MEMTOTAL} kB (`expr ${MEMUSED} \* 100 / ${MEMTOTAL}` %) used"

SWAPTOTAL=`cat /proc/meminfo | grep SwapTotal | awk {'print $2'}`
SWAPFREE=`cat /proc/meminfo | grep SwapFree | awk {'print $2'}`
SWAPUSED=`expr ${SWAPTOTAL} - ${SWAPFREE}`
SWAPFILE="${SWAPUSED} / ${SWAPTOTAL} kB (`expr ${SWAPUSED} \* 100 / ${SWAPTOTAL}` %) used"

HD_MD0=`df -h | grep MD0_DATA | awk {'print $3 " / " $2 " (" $5 ") used | " $4 " free"'}`

HD_MD1=`df -h | grep MD1_DATA | awk {'print $3 " / " $2 " (" $5 ") used | " $4 " free"'}`

echo -e "
\033[0;35m+++++++++++++++++: \033[1;32mSystem Data\033[0;35m :+++++++++++++++++++
\033[0;35m+  \033[0;37mHostname \033[0;35m= \033[0;32m${HOSTNAME}
\033[0;35m+   \033[0;37mAddress \033[0;35m= \033[0;32m${ADDRESS}
\033[0;35m+    \033[0;37mKernel \033[0;35m= \033[0;32m${KERNEL}
\033[0;35m+    \033[0;37mUptime \033[0;35m= \033[0;32m${UPTIME}
\033[0;35m+    \033[0;37mMemory \033[0;35m= \033[0;32m${MEMORY}
\033[0;35m+      \033[0;37mSwap \033[0;35m= \033[0;32m${SWAPFILE}
\033[0;35m+++++++++++++++++: \033[1;32mStorage Data\033[0;35m :++++++++++++++++++"
echo -e "\033[0;35m+  \033[0;37mMD0_DATA \033[0;35m= \033[0;32m${HD_MD0}"

ls -l /share | grep \> | grep -v Recycle | grep MD0_DATA | awk '{
printf " \033[0;35m- \033[0;37m[" $9 "]\t\033[0;36m";
system ("du -s -h /share/"$11);
}'

echo -e "\033[0;35m+  \033[0;37mMD1_DATA \033[0;35m= \033[0;32m${HD_MD1}"

ls -l /share | grep \> | grep -v Recycle | grep MD1_DATA | awk '{
printf " \033[0;35m- \033[0;37m[" $9 "]\t\033[0;36m";
system ("du -s -h /share/"$11);
}'

echo -e "\033[0;35m+++++++++++++++++++++++++++++++++++++++++++++++++++\033[0;39m
"

こんなかんじに。