web-dev-qa-db-ja.com

sshを介してUbuntu 16.04サーバーに接続した後、新しいターミナルでスクリプト(.sh)ファイルを実行する方法は?

私は次のような多くの方法を試しました

terminator -x abc.sh上記のコマンドを実行すると、次のエラーが表示されます。

You need to run terminator in an X environment. Make sure $DISPLAY is properly set

私も試しました

gnome-terminal -x ./abc.sh

上記のコマンドを実行すると、次のエラーが表示されます

Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Failed to parse arguments: Cannot open display:
3
Avery

UbuntuをUbuntuに想定

  • 関連するソフトウェアをサーバーにインストールした場合、ssh -Xを使用してリモートでログインし、terminatorgnome-terminalなどのグラフィカルアプリケーションプログラムを実行できます。このリンクをご覧ください。

    buntu 16.04“デスクトップ”からUbuntu 16.04“サーバー”にリモートGUIアクセスする最も簡単な方法は何ですか?

  • また、単に他のターミナルウィンドウをローカルで起動し、それらのウィンドウでsshを使用してリモートでログインすると、サーバーで複数のテキストモードアプリケーションプログラムを実行できます(それぞれが独自のターミナルウィンドウにあります)。

Windows 10デスクトップを使用していて、ubuntuサーバーに接続する場合

簡単な解決策は、次のリンクに従ってWindowsにPuTTYをインストールして使用することです。

www.PuTTY.org/

PuTTYはSSHおよびtelnetクライアントで、もともとはSimon TathamがWindowsプラットフォーム用に開発したものです。 PuTTYは、ソースコードで利用可能なオープンソースソフトウェアであり、ボランティアグループによって開発およびサポートされています。

PuTTY こちら をダウンロードできます。

1つ以上のPuTTYウィンドウを起動し、sshを介して異なるタスクを実行できます。


@SergiyKolodyazhnyyのコメントで説明されているように、xrdpを使用して、WindowsからUbuntuへのリモートデスクトップセッションを開くことができます。

@PerlDuckのコメントで説明されているように、WindowsにXサーバーをインストールして使用すると、sshを介してグラフィカルアプリケーションプログラムを実行できますが、元の質問によると、やり過ぎかもしれません。

3
sudodus

ここにあります:terminatorgnome-terminalはGUIアプリです。スクリプトがGUIを必要とせず、単純なシェルスクリプトである場合、ターミナルエミュレータを必要とせずにsshセッションで問題なく実行できます。もちろん、スクリプトは、スクリプトを実行しようとしているファイルシステム上に存在する必要があります。

何らかの理由でterminatorまたはgnome-terminalがどうしても必要な場合は、常に xrdp を使用してリモートデスクトップセッションを開始できます。もちろん、アクセスしようとしているUbuntuシステムにXサーバーがまったくない場合です。たとえば、サーバーコンピューターにはセキュリティリスクがあるため、GUIがないことがよくあります。

2

本当に必要な場合は、SSHセッションからデスクトップセッションにGUIを必要とするアプリケーションを実行することができます。次の方法を使用して、必要なときにVMWare仮想マシンを起動していますが、コンピューターの前面にはいません。

デフォルトでデスクトップ環境がインストールされていないUbuntuサーバーに接続していることを言及したことを強調します。この場合、tmuxまたはscreenを使用するか、スクリプトをバックグラウンドにプッシュするか、2番目のSSHセッションを使用する価値があります。デスクトップ環境がserverにインストールされている場合、次の手順を適用できます。

次のスクリプトは、Ubuntu 16.04のデフォルトであるLightdmおよびUnityで動作します。


1。最初の要件は、ユーザーがデスクトップセッションにログインする必要があることです。これを実現するために使用しているのは、次のスクリプトです( source and descriptions ):

#!/bin/bash

# NAME: lightdm-auto-login

main() {
    # If the file '/etc/lightdm/lightdm.conf' exists create a backup copy
    [[ -f /etc/lightdm/lightdm.conf ]] && mv /etc/lightdm/lightdm.conf{,.bak}

    # Create autologin configuration for the current $USER = $1
    echo -e "[Seat:*]\nautologin-user=$1" > /etc/lightdm/lightdm.conf

    # Restart 'lightdm' while autologin option is enabled
    systemctl restart lightdm.service

    # Wait for a moment to complete the login process and remove the conf file
    sleep 30 && rm /etc/lightdm/lightdm.conf

    # Restore the backup if exists
    [[ -f /etc/lightdm/lightdm.conf.bak ]] && mv /etc/lightdm/lightdm.conf{.bak,}
}

# Execute the 'main()' function with root privileges in the background 'Sudo -b'
# Pass the curent $USER as arg (https://unix.stackexchange.com/a/269080/201297)
Sudo -b bash -c "$(declare -f main); main $USER"
  • スクリプトは、通常のユーザー(sudoersグループに属する)として実行する必要があります。

  • シェルコマンドシステム全体としてアクセスできるように、スクリプトを/usr/local/binに配置することをお勧めします。実行可能にするのを忘れないでください。


2。次に、いくつかの環境変数($DISPLAYなど)をデスクトップセッションからSSHセッションにエクスポートする必要があります。次のスクリプトはそれを行い、位置パラメータとして渡されるコマンドも起動します( source and descriptions ):

#!/bin/bash -e

# NAME: gui-launcher

# Check whether the user is logged-in
while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done

# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")

# Execute the input command
Nohup "$@" >/dev/null 2>&1 &

exit 0
  • ロックされた画面を含め、ユーザーがログインするまでスクリプトは機能します。

  • シェルコマンドシステム全体としてアクセスできるように、スクリプトを/usr/local/binに配置することをお勧めします。実行可能にするのを忘れないでください。


3。使用法:

  • SSHセッションを確立します。
  • 実行lightdm-auto-login;
  • の場合、gui-launcher <commands or script>を実行します。

    gui-launcher gnome-terminal -x bash -c "<my command or script>; exec bash"
    

    最後のサブコマンドexec bashは、前のコマンドが終了した後、起動されたgnome-terminalを開いたままにします。


4。デモンストレーション:

enter image description here


5。参照およびその他の例:

1
pa4080