LinuxからWindowsを再起動(シャットダウン)

WakeOnLanに続きLinuxからWindowsを再起動(シャットダウン)する方法です。

まず最初に試してみたのがsmbをインストールすると使えるrpcclientです。

rpcclient -U username%password -N -W yourWorkGroup -c ‘shutdown -r’ yourPCName

早速実行してみる。
invalid command

コマンドがダメだと怒られる・・・
色々調べてみたけど解決策は見つからず。
どうもこのコマンドではうまく行かないようです。

他に方法が無いものかと調べていたらnetコマンドで対応できるようです。

net rpc shutdown -r -t 30 -S yourPCName –workgroup=yourWorkGroup -U username%password –comment=”comment”
↑これは一行で書きます。

以下は各コマンドオプションの説明です。

shutdown -r
これは再起動の命令です。shutdownと-rを取ればシャットダウンに変更できます。
(私の環境ではシャットダウンしてもWindowsは正常に終了するものの電源が完全に落ちませんでした。)

-t 30
シャットダウンするまでの時間(秒数)です。
コマンドが正常に受理されるとWindowsにシャットダウンする事を伝えるダイアログが出現し指定した秒数のカウントダウンが始まります。

-S yourPCName
再起動するPC名を指定します。-Sで指定する場合はコマンドを実行するLinux側で名前解決できている必要があります。
もしIPでPCを指定する場合は -I オプションでIPを指定してください。

–workgroup=yourWorkGroup
再起動するPCが属しているワークグループ名です。
(これはなくても実行可能かも)

-U username%password
再起動するPCのユーザー名とパスワードを指定します。ユーザー名とパスワードの間に%を入れるのを忘れないで下さい。

–comment=”comment”
コマンドが正常に受理されるとWindowsにシャットダウンする事を伝えるダイアログが出現します。
このダイアログにコメント欄がありそこにここで指定したコメントが表示されます。
もしも誰かが再起動するマシンを操作していた場合にワームによる再起動と間違われないようにコメントは書いておきましょう。

afioでフルバックアップ

Linuxでのフルバックを取るには本来はシングルモードで起動しdumpコマンドでHDD丸ごとバックアップが最善なのでしょうが24時間運用では非常に難しいです。

動いてるLinuxを完全にバックアップするのは難しいかもしれませんが丸々無くなるよりはましなのでとりあえずフルに近い形でバックアップを取ります。
tarやzipで固めてもいいのですがafioを使えば圧縮破損ファイルが存在しても未破損のファイルは取り出せるので非常に便利です。
今回はafioを使ったバックアップを行います。

まずはafioをインストールします。
apt-get install afio

インストールはこれだけです。

詳しい使い方は afio –help で出て来るので見てみてください。

まず / ディレクトリに移動します。
cd /

そしてafioコマンドを使用してバックアップを実行します。(以下は1行です)
find . | egrep -v ‘^\./proc/|^\./バックアップ先/’ | afio -ovZ -L /バックアップ先/fullbackup.log /バックアップ先/fullbackup.afz 2>&1 | tee /バックアップ先/fullbackup.lis

これはprocと/バックアップ先 ディレクトリを除く全てのバックアップを取るコマンドになります。

ちなみにリストアコマンドは以下になります。
まず / ディレクトリに移動します。
cd /

afio -ivZ /mo/fullbackup.afz

参考サイトafio でのバックアップ
※既にリンク先のサイトはなくなっているようです

ログを監視しメールを自動送信する。

Apache2のログ監視はanalogをインストールし既に行ってました。
また、サーバーの各ステータスもMrtg+RRDTOOLで監視を行っていました。
そこで今回はsyslogなどの実際のログを監視して自動でメールを送信してくれるlogwatchをいうアプリをインストールします。
※このアプリを動かすためにはmailutils、exim4などのメール送信に必用なパッケージをインストールしmailコマンドでメール送信が出来るように設定する必要があります。

まずインストールですがこれは非常に簡単です。
apt-get install logwatch

インストールされたらlogwatchの設定を変更します。
vi /usr/share/logwatch/default.conf/logwatch.conf

変更点は以下の点になります。

変更前:MailTo = root
変更後:MailTo = your_address@your_host.com
↑送信したいメールアドレスに書き換えます。(mailコマンドで送信できるアドレスであることが前提)

変更前:#Archives = No
変更後:Archives = Yes
↑logがlotateされた場合を想定

変更前:Detail = Low
変更後:Detail = Med
↑好みのログレベルに設定してください。(文字列ではなく数値で指定も可能です)

設定が完了したらテストで実行してみましょう。
/usr/sbin/logwatch

実際に設定したアドレスにメールが送信されてくれば設定は完了です。

ちなみにcronにはインストール時に自動で登録されています。
(1日1回自動実行されてメールが送られてきます)
debianでのcronへの自動登録はdailyに登録されるのでAM6:25に実行されます。
時間などを変更したい場合はcron.dailyから削除しcrontabに自分で登録してください。

送られてくる内容で注意すべきなのは
pam_unix、SSHD、Disk Space、kernelの項目でしょうか。(kernelはエラー出ないと送られてこないようです)

pam_unixはLinuxのpam認証を表示しています。

SSHDはその名の通りsshへの接続を示しています。
許可していないユーザーでのログインがあれば不正アクセスの可能性もありますので注意が必要です。

Disk Spaceは一杯になる前にどうにかしましょう(笑)

kernel項目に関しては出力されていれば解析、調査が必要ですね。

最後に
 logwatchを導入すると毎日定期でlogの結果が送信されてきます。
誰しも最初は注意深く見るのですが平和な日々が続きますと次第に見なくなったり軽く読み飛ばしたりするようになりがちです。
しかし、それではlogwatchを導入した意味は全くありません。
mrtgの様にグラフでの傾向は示してくれませんが毎日logに目を通すことで障害を未然に防げたり
発生した障害による被害を広げないことも可能になります。
このツールの本当の真価はlogをチェックする人の対応力に尽きると思います。