しかし、ログイン離れてrootユーザーとして、私は欲しい私のセレンプログラムをリモートで実行するルート表示(私のリモートディスプレイの代わりに)。はいいいえうまくいくことについて話していますssh -X
が、セレンを使用する別のnodejsアプリを作成するnodejsアプリがあります。これはすべてSSH接続なしで自動的に行われます。ただし、セレンは必要ないくつかのjpgファイルをレンダリングするために一種のディスプレイを使用する必要があります。
私は多くの研究をしてきましたが、まだこの概念に悩んでいます。私が使用した情報の主なソースは次のとおりです。
- リモートXモニターでウィンドウを開く(「モニターを開けません」理由)?(これは最も多くの情報を持っています)
- 他のユーザーのデスクトップからrootとしてグラフィカルプログラムを起動できますか?
- すべての答えは@Gillesから来ました:)
これが私の理解です:
- XプログラムはXディスプレイに接続するために2つの情報が必要です。
$DISPLAY
- 通常
:0
または:1
。 - 実際に私のラップトップに行き、ルートのディスプレイを見ると(リモートSSHの代わりに)またはに
$DISPLAY
設定されています。:0
:1
- 通常
$XAUTHORITY
- 使用するマジッククッキーは
~/.Xauthority
環境変数で定義されています$XAUTHORITY
。 - 実際には、ラップトップにアクセスすると(リモートでSSH接続ではなく)(when)または(when)
$XAUTHORITY
に設定されます。/tmp/xauth-0-_0
$DISPLAY=:0
/tmp/xauth-0-_1
$DISPLAY=:1
- 使用するマジッククッキーは
======================
努力する
私は次のことをすべて試しました:
スクリプトの設定
$DISPLAY
と転送$XAUTHORITY
Nodejs Seleniumアプリケーションを生成するスクリプトがあります。 Seleniumアプリケーションを実行する前に、まずスクリプトから次の2つの変数をエクスポートします。
if [ -e "/tmp/xauth-0-_0" ] then export DISPLAY=":0" export XAUTHORITY="/tmp/xauth-0-_0" elif [ -e "/tmp/xauth-0-_1" ] then export DISPLAY=":1" export XAUTHORITY="/tmp/xauth-0-_1" fi #Then run the nodejs selenium app node index.js
この方法を使用したときに発生するエラーは次のとおりです。
Invalid MIT-MAGIC-COOKIE-1 key[10332:10332:0713/112221.602744:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: :0.0
X11Forwarding yes
設定がありますが、この設定は次にのみ適用されるようです。/etc/ssh/sshd_config
ssh -X
Chromeを開こうとする他の試みは次のとおりです。
[root@localhost test]# xauth list localhost:0 MIT-MAGIC-COOKIE-1 .... [root@localhost test]# export XAUTHORITY=/tmp/xauth-0-_0 [root@localhost test]# export DISPLAY=localhost:0 [root@localhost test]# google-chrome [10673:10673:0713/141603.418401:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: localhost:0 [root@localhost test]# export DISPLAY=127.0.0.1:0 [root@localhost test]# google-chrome [10859:10859:0713/141617.346302:ERROR:browser_main_loop.cc(272)] Gtk: cannot open display: 127.0.0.1:0
私はFedora 23(サーバーエディション)x86_64を使用しています。
答え1
SeleniumのXディスプレイのみが必要な場合Xvfb
(「Virtual Framebuffer X Server」)を使用して、2番目のスタンドアロンXサーバーを起動することもできます。 X サーバはメモリブロックを不可視フレームバッファとして使用し、セレンが X サーバに接続されているかのように偽装することを可能にします。
man Xvfb
特に参照してください。これはい部分。認証を有効にせずに実行できるので、誰でも接続できます。
これは、全く異なるウォーム缶である3D加速(OpenGL)を許可しないことに注意してください。
root
通常、他のモニター、特にログインしているモニターを占有しようとする試みは、巨大なセキュリティリスク:このモニターに接続している人は誰でもキーストローク(およびパスワード)をキャプチャしてrootとしてコマンドを実行できます。そのため、通常これを行うことはできません。
答え2
私はこれが不可能であるという結論に達しました:(
これが機能するには、ある時点でどこかにユーザーsshが必要です。
ユーザーなしでルートの表示を制御することはできません。