【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を開けないか、どうしたら良いか、少しでも助言お願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー fripper の写真

スクリプト機能は、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 の写真

ありがとうございます。さっそく検証してみます!

ユーザー Sue.M の写真

検証してみた結果。うまく動きませんでした。
一瞬ターミナルウィンドウが出るところまでは行ったのですが><

現状です
↓↓

シェルの中で /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 の写真

xrdp を利用したことがないので、コレ以上はなんともコメントできません

キモは、どうやれば現在ログインしている側のユーザの環境変数値(DISPLAY)を
zabbix_server から実行しているスクリプトで判定するか、だけだと思います

セキュリティ的に危険であることだけは承知おき願います。
ホント洒落にならない手段なので。

ユーザー Sue.M の写真

セキュリティ面はしっかり、洒落にならないレベルだと認知しながら、検証していきます。

かなり助けになるヒントになりました。
今現在、どのポイントに取り組むでべきか明確になりました。

本当に助かりました。ありがとうございました。