Firefoxを実行しています。コマンドラインから、次のように入力するだけで新しいタブを開くことができます。
firefox http://stackoverflow.com
私が達成しようとしていることは似ていますが、リモートです。 FirefoxをマシンBで実行しています。マシンAから(必要なsshトンネリングなどを設定した後)次のようなものを実行できるようにします。
firefox http://stackoverflow.com
ただし、タブはマシンAではなくマシンBで開く必要があります。X11転送は必要ありません。リモートマシンのFirefoxに特定のURLを開くように指示できるようにしたいだけです。
何か案は?
Firefoxが実行および表示されるマシン(マシンA)では、次のことを行う必要があります。
たとえば、Xセッションの端末では次のようにします。
$ echo $XAUTHORITY
/var/run/gdm/auth-for-ambro-j3bu8Q/database
次に、SSHターミナルから、Xセッションと同じユーザーとして実行します(それ以外の場合はsuを使用します)。
DISPLAY=:0.0 XAUTHORITY=/var/run/gdm/auth-for-ambro-j3bu8Q/database firefox http://stackoverflow.com
ログイン時に$ XAUTHORITYの値をどこかに自動的に書き込むことができます。たとえば、次のスクリプト〜/ write-xauthを作成します(chmod + xを忘れないでください)。
#!/bin/bash
touch "$HOME"/.saved-xauthority
chmod u=rw,g=,o= "$HOME"/.saved-xauthority
echo "$XAUTHORITY" > "$HOME"/.saved-xauthority
次に、上記のスクリプトを実行する自動起動ファイル〜/ .config/autostart/save-xauthority.desktopを作成します:
[Desktop Entry]
Type=Application
Name=Save XAUTHORITY to .saved-xauthority
Exec=/home/<type_user>/write-xauth
Terminal=false
X-KDE-StartupNotify=false
StartupNotify=false
マシンB(Firefoxが表示されないマシン)にシェルができたら、マシンA(Firefoxが実行されて表示されるマシン)にSSHで接続し、私が投稿したfirefoxコマンドを実行するだけです。これをマシンBのスクリプトに自動化することができます。マシンAへのSSH認証には(パスワードではなく)キーを使用する必要があります。たとえば、 https://wiki.archlinux.org/index)を参照してください。 .php/SSH_Keys 。これにより、パスワードを入力せずに非対話的にsshを実行できます。これで、次のように入力して、マシンBからマシンAでコマンドを実行できます。
ssh machineA command argument ...
あなたの場合、Firefoxウィンドウを開くためのスクリプトをmachineAで作成することをお勧めします。
ssh machineA ./open_local_firefox http://whatever
そして、このスクリプトは次のようになります。
#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=$(cat "$HOME"/.saved-xauthority)
firefox "$1" &>/dev/null 2>&1 &
この設定により、マシンBは、SSHを使用しているユーザーとしてマシンA上で何でも実行できるようになることに注意してください。これを制限することは可能ですが、それは簡単ではありません。 SSHでこれを実行したい場合は、sshdのForceCommandオプションがおそらく役立つでしょう。
もちろん、これを行う方法は他にもありますが、結局のところ、適切なユーザーとして適切な環境変数(上記のように)を使用してマシンAで「firefox」コマンドを実行することになります。たとえば、特定のPOSTリクエストがそのFirefoxウィンドウを開くように、マシンAにHTTPサーバーとスクリプトを設定できます。これはSSHアプローチよりもおそらく安全です。
あなたの質問はあまり明確ではありません。つまり、ローカルマシンLの前に座っているそしてリモートマシンRでXセッションを実行でfirefox
を実行したい場合、次のことができます。
マシンから[〜#〜] l [〜#〜]リモートマシンにログイン[〜#〜] r [〜#〜] ssh:
ssh [email protected]
リモートマシンで実行中のXディスプレイを検索します(ディスプレイは/tmp/.X11-unixのソケットに対応します)。
ls -l /tmp/.X11-unix/
私の場合の結果は次のとおりです。
srwxrwxrwx. 1 erik erik 0 13. Jun 14:44 X0
srwxrwxrwx. 1 concubine concubine 0 13. Jun 11:40 X1
srwxr-xr-x. 1 gdm gdm 0 13. Jun 11:13 X1024
srwxrwxrwx. 1 gdm gdm 0 13. Jun 16:17 X2
srwxrwxrwx. 1 wife wife 0 13. Jun 16:25 X3
私は妻に何かを彼女のディスプレイに見せたいので、私はそうします:
export DISPLAY=:3
これはソケットに対応しますX3
。
その後、私はただ走ります:
firefox 'http://superuser.com/a/1088747/180675'
彼女にこの興味深い答えを示すために。