【Help】リモートログイン
こんにちは。同じ質問を本家でもしましたが、返答が中々なくて困っています。
環境はCentOS5+Zabbix1.8
CentOSのGUI(GNOME)を起動し、FirefoxでZabbixにログインして監視・操作する
・やりたいのは「マップ画面のホストをクリックし、メニューから
そのホストへリモートログイン(SSHまたはtelnet)する」こと
・現状、「マップ画面のホストをクリック(001_map.png)し、任意
のLinuxコマンドを実行する」ことはできる
(Zabbixのスクリプト機能を使用)
・ここで「/usr/bin/xterm」を実行すれば、xtermの外部ウィンドウ
を開けるかと思ったが、できない
・「/usr/bin/xterm &」をスクリプト化(003_sh.png)し、そのシェ
ルを呼び出す(002_script.png)ようにしてみたが、できない
どなたか、なぜxtermを開けないか、どうしたら良いか、少しでも助言お願いします。
- 001_map.png (10.98 KB)
- 002_script.png (5.44 KB)
- 003_sh.png (1.48 KB)
fripper - 投稿数: 495
スクリプト機能は、zabbix サーバの実行アカウントの環境空間内で実行されます
たとえ同じユーザアカウントを利用していたとしても、コンソールログイン(XWindow)とは別の環境となりますので
安直には実現できないかと思います
かなり無理矢理な方法ではありますが、実現する方法があります
1.スクリプト(term.sh) 内にて、who コマンドを実行し、コンソールログインのセッション(tty)を利用している
ユーザアカウントと、そのセッションの情報を取得します
これで、XWindow への DISPLAY 変数を取得します
たいていの場合は(:0) とかになっているはずです
VNC とかで接続しているならば、異なってくるはずなので、その場合は考慮が必要です
2.DISPLAY 環境変数へ、その値をセットします
3.xterm を実行(同時に ssh で接続)
実装例 -- term.sh
SSH 接続先サーバのユーザ名は username 固定と仮定しています
===============
#!/bin/sh
DISPLAY=`/usr/bin/w -h -s | /bin/grep tty | /bin/sed -e 's/\s\+/ /g' | /bin/cut -f 3 -d ' '`
export DISPLAY
if [ ! -z "${DISPLAY}" ]; then
xterm -e "ssh username@${1}" &
fi
# end of file
===============
これと同時に、スクリプトの設定側で、現在
===
/etc/zabbix/externalscripts/term.sh
===
となっているのを、
===
/etc/zabbix/externalscripts/term.sh {HOST.CONN}
===
としてください
こうすることで、スクリプトの引数に、対象ホストの接続情報が渡されるので
Zabbixサーバからのssh接続が拒否されない限りは大丈夫かと。
外部から誰かがブラウザ経由でコマンド実行すると、
その瞬間でたまたまコンソールにログインしていたユーザさんの画面に
xtermが起動することになるので、セキュリティ的には、オススメ出来る方法ではありません
むしろ、セキュリティ的にはカナリ危険なことですが‥。
クローズドな環境でのみ、ということで。
Sue.M - 投稿数: 4
ありがとうございます。さっそく検証してみます!
Sue.M - 投稿数: 4
検証してみた結果。うまく動きませんでした。
一瞬ターミナルウィンドウが出るところまでは行ったのですが><
現状です
↓↓
シェルの中で /usr/bin/w を実行し、環境変数DISPLAYに設定する値の
元を表示させていますが、
----------
#!/bin/sh
/usr/bin/w
----------
とすると
----------
xx:xx:xx up 2:05, 0 users, load average: 0.18, 0.08, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
----------
となり何も取得できていない事がわかりました。
なので、手動でターミナルを開いて確認した「:10.0」を設定したところ、
一瞬開くようになりました(だがすぐ閉じる)
環境としては xrdp でリモートデスクトップ接続しています。
fripper - 投稿数: 495
xrdp を利用したことがないので、コレ以上はなんともコメントできません
キモは、どうやれば現在ログインしている側のユーザの環境変数値(DISPLAY)を
zabbix_server から実行しているスクリプトで判定するか、だけだと思います
セキュリティ的に危険であることだけは承知おき願います。
ホント洒落にならない手段なので。
Sue.M - 投稿数: 4
セキュリティ面はしっかり、洒落にならないレベルだと認知しながら、検証していきます。
かなり助けになるヒントになりました。
今現在、どのポイントに取り組むでべきか明確になりました。
本当に助かりました。ありがとうございました。