事象の水平線

横を無理やり伸ばしたので、デザインがおかしいけど、気にしない。完璧に時代に取り残されたHTMLをいまさらいじるのがめんどくさい。個人的ブックマーク代わりなメモ書きブログ。

UbuntuからもCentOSサーバーにSSH接続出来るようにします。
クライアントソフトは『PuTTY SSH クライアント』というのがソフトウェアセンターの検索で見つかりました。
HPで色々探し回った時は見つからなかったなぁ~~~。

で、ただインストールしただけではおもしろくない。
というか、せっかく簡単にシェルスクリプトが書けるので(windowsだって.bat書けますが・・)PuTTYを立ち上げたら、WOLのマジックパケットも送ってCentOSサーバーの起動が確認できたらPuTTYを立ち上げるようにしようと思います。

まず、WOLのマジックパケットを送るのにether-wakeというコマンドが使えるらしいです。
早速実験です。
linux@Ubuntu-DT:~$ ether-wake **:**:**:**:**:** ←マシンのマックアドレス入れてください
No command 'ether-wake' found, did you mean:
Command 'etherwake' from package 'etherwake' (universe)
ether-wake: command not found


おこられました・・etherwakeらしいです・・・

linux@Ubuntu-DT:~$ etherwake **:**:**:**:**:**
プログラム 'etherwake' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt-get install etherwake


入ってなかったみたいです・・・・

linux@Ubuntu-DT:~$ sudo apt-get install etherwake
[sudo] password for linux:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
wakeonlan
以下のパッケージが新たにインストールされます:
etherwake wakeonlan
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
20.7 kB 中 9,234 B のアーカイブを取得する必要があります。
この操作後に追加で 135 kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ natty/universe etherwake i386 1.09-3 [9,234 B]
9,234 B を 0秒 で取得しました (18.7 kB/s)
未選択パッケージ etherwake を選択しています。
(データベースを読み込んでいます ... 現在 184467 個のファイルとディレクトリがインストールされています。)
(.../etherwake_1.09-3_i386.deb から) etherwake を展開しています...
未選択パッケージ wakeonlan を選択しています。
(.../wakeonlan_0.41-10_all.deb から) wakeonlan を展開しています...
man-db のトリガを処理しています ...
etherwake (1.09-3) を設定しています ...
wakeonlan (0.41-10) を設定しています ...

試します。
linux@Ubuntu-DT:~$ etherwake **:**:**:**:**:**
etherwake: This program must be run as root.

また怒られました・・

linux@Ubuntu-DT:~$ sudo etherwake **:**:**:**:**:**


お。立ち上がりました。でもsudoか・・・
しかたないので、etherwakeだけパスワードなしでsudoできるようにします。

linux@Ubuntu-DT:~$ sudo visudo
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL
linux ALL=(ALL)NOPASSWD:/usr/sbin/etherwake

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d
linux@Ubuntu-DT:~$


これで、やってみるがうまく行きません。
で調べてみると、一つ後の行の%admin ALL=(ALL) ALLが設定を上書きしてるらしいです。
ヒットしたHPが
『おいぬま日報(不定期)』さんの『[linux] sudoする時にNOPASSWDを設定してもなぜかパスワードを聞かれる

で、

linux@Ubuntu-DT:~$ sudo visudo
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

linux ALL=(ALL) NOPASSWD:/usr/sbin/etherwake
linux@Ubuntu-DT:~$


これでうまくいきました。

それと、色々調べていたら、notify-sendといういいものを見つけました。
画面上にアラートを出してくれるみたいです。
サーバーの起動が確認できない時は、これを使ってアラートを出すようにします。

libnotify-binの中に入ってるらしいです。
linux@Ubuntu-DT:~$ sudo apt-get install libnotify-bin
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
libnotify-bin
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
6,568 B のアーカイブを取得する必要があります。
この操作後に追加で 73.7 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ natty/universe libnotify-bin i386 0.7.2-0ubuntu2 [6,568 B]
6,568 B を 0秒 で取得しました (13.1 kB/s)
未選択パッケージ libnotify-bin を選択しています。
(データベースを読み込んでいます ... 現在 188948 個のファイルとディレクトリがインストールされています。)
(.../libnotify-bin_0.7.2-0ubuntu2_i386.deb から) libnotify-bin を展開しています...
libnotify-bin (0.7.2-0ubuntu2) を設定しています ...
linux@Ubuntu-DT:~$


さて、では、マジックパケットを送って、起動を確認したらPuTTYを起動させるスクリプトを書きます。

linux@Ubuntu-DT:~$ sudo vi /usr/local/bin/wol_and_putty.sh ←新規作成
#!/bin/bash

#サーバーのip
sshserver_ip="192.168.0.101"
#サーバーのMacアドレス
macaddress="**:**:**:**:**:**"
#ノーティファイアイコン
notify_icon="/usr/share/icons/Humanity/apps/48/gksu-root-terminal.svg"

##########################################
########## 設定するのはここまで ##########
##########################################

sudo etherwake $macaddress

count=1

while [ 0 ];
do
ping_res=$(ping -c1 $sshserver_ip)
if echo $ping_res | grep -sq ", 0% packet loss"
then
putty
exit
else
if [ $count -ge 30 ]
then
notify-send -i $notify_icon "I can't find the server." &&
aplay '/usr/share/sounds/Media/Uh oh.wav' >/dev/null 2>&1
exit
fi
let ++count
fi
done


一応ファイルもアップしときます。
エンコードはUTF-8
→ wol_and_putty.txt
 (.sh拡張子がアップできないので.txtになってます)

動作は、pingを一発打って帰ってきたらputtyを立ち上げるという感じです。
また、30回pingを打っても起動が確認できない時はノーティファイアイコンの表示とアラートサウンドをならしています。
/usr/share/sounds/Media/Uh oh.wavは本来あるはずがない(自分で作ったファイルをwinマシンからコピったから)ので、適宜変更してください。

後は、作ったスクリプトに実行権限をあげて(chmod)、ランチャーに登録すればばっちりです。
PuTTYの設定等は、『CentOS6.0 OpenSSH インストール』のOpenSSHクライアントPuTTY編を見てください。

参考にしたHP
『vallog』さんの『notify-sendでラーメンタイマーというかリマインダ(ubuntuおまけでcygwin+growl for windows)
『試験運用中なLinux備忘録』さんの『notify-sendで通知ポップアップを表示する(トラブル対処の覚え書きを含む)
スポンサーサイト



PageTop

コメント

 ※
 ※
管理者にだけ表示を許可する
  ※ 必須項目です