通过ssh连接到 16.04服务器后,如何在新终端中运行脚本(. sh ) 文件?

分享于 

5分钟阅读

ubuntu

  繁體

问题

我尝试了很多方法

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:




答案1

Ubuntu和Ubuntu

如果已经在服务器上安装了相关软件,你可以使用ssh -X远程登录,然后运行图形应用程序,如terminatorgnome-terminal

你也可以在本地启动其他终端Windows,并在这些Windows模式下远程运行。

如果您使用Windows 10桌面并想连接到ubuntu服务器

一个简单的解决方案在Windows中安装和使用Putty,

www.putty.org

Putty是一个SSH和telnet客户端,最初是由Simon Tatham为Windows平台开发的,PuTTY是开源软件,可提供源代码,并由一群志愿者开发和支持。

你可以在这里下载Putty 。

你可以启动一个或多个Putty Windows并通过ssh运行不同的任务。

你可以使用xrdp打开远程桌面会话,从Windows到Ubuntu。


答案2

如果由于某些原因必须使用terminator或gnome-terminal,则可以用xrdp启动远程桌面会话。


答案3

以下脚本适用于Ubuntu 16.04的默认Lightdm和Unity。

1.第一个要求是你必须登录桌面会话,脚本如下:


#!/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中,以便作为shell命令访问,别忘了让它可执行。

2.其次,必须将一些环境变量(如$DISPLAY等)从桌面会话导出到SSH会话。以下脚本将执行此操作,并且将启动作为位置参数传递的命令:


#!/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



脚本将工作直到用户登录,包括一个锁定的屏幕。

3.用法:

  • 建立SSH会话;
  • 执行lightdm-auto-login

执行gui-launcher <commands or script>


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




COM  文件  Server  COMM  files  Comma  
相关文章