在 Ubuntu 13.10 中从 Nemo 打开远程终端位置

use*_*326 5 ssh command-line nautilus nemo 13.10

在 Nautilus 中,可以通过密码建立与远程服务器的 ssh 连接。然后您可以为该地址添加书签并快速到达那里。这在运行 Ubuntu 13.10 的 Nemo 中仍然有效。

但是,通过右键单击并使用“在终端中打开”选项,用户可以打开一个显示远程服务器提示的终端。这样你就可以立即开始在那里工作。

在 Ubuntu 13.10 中不再使用 Nemo 而不是 Nautilus,这似乎不再起作用。我发现我可以使用脚本:

#!/bin/sh
gnome-terminal --execute /usr/bin/ssh user@myserver.net
Run Code Online (Sandbox Code Playgroud)

但我更愿意恢复原来的行为。这有可能吗?

小智 2

您可以在 ~/.local/share/nemo/actions 中创建两个操作。

\n\n

文件remote_terminal1.nemo_action:

\n\n
[Nemo Action]\nName=Open in remote terminal\nComment=Open current folder in remote terminal\nName[de]=Im entfernten Terminal \xc3\xb6ffnen\nComment[de]=Aktuellen Ordner im entfernten Terminal \xc3\xb6ffnen\nExec=<remote_terminal.py %F>\nIcon-Name=terminal\nSelection=none\nExtensions=dir;\nDependencies=ssh;\n
Run Code Online (Sandbox Code Playgroud)\n\n

文件remote_terminal2.nemo_action:

\n\n
[Nemo Action]\nName=Open in remote terminal\nComment=Open this folder in remote terminal\nName[de]=Im entfernten Terminal \xc3\xb6ffnen\nComment[de]=Diesen Ordner im entfernten Terminal \xc3\xb6ffnen\nExec=<remote_terminal.py %F>\nIcon-Name=terminal\nSelection=s\nExtensions=dir;\nDependencies=ssh;\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后是一个Python脚本remote_terminal.py(必须是可执行的):

\n\n
#!/usr/bin/env python2\n# -*- coding: utf-8 -*-\n\nimport sys\nimport subprocess\n\npath = sys.argv[1]\n\nif \'/sftp:\' in path:\n    sftp = path.split(\'/sftp:\', 1)[1]\n    settings = {}\n    options, sep, settings[\'path\'] = sftp.partition(\'/\')\n    for opt in options.split(\',\'):\n        name, sep, value = opt.partition(\'=\')\n        settings[name] = value\n\n    cmd = [\'gnome-terminal\', \'-e\',\n        \'ssh %(user)s@%(host)s -t "cd /%(path)s && bash --login"\' % settings]\nelse:\n    cmd = [\'gnome-terminal\', \'--working-directory\', path]\n\nsubprocess.call(cmd)\n
Run Code Online (Sandbox Code Playgroud)\n


小智 1

在写下这些文字时,我与尼莫的关系进一步破裂。迁移到 Ubuntu 14.04 (Mate) 的 64 位版本时,我发现 python 脚本停止工作。我发现 %F 不再拒绝传递参数。所以我切换到%U(仍然有效)并将脚本改编为Bash(我不是Python的粉丝,可能是个人口味):

\n\n
#! /bin/bash\n\n\n# $1 enth\xc3\xa4lt den ersten Parameter\n\n# Testweise Ausgabe aller \xc3\xbcbergebenen Parameter \n# echo $*\n# exit\n\n# der Regex schneidet "sftp://" ab und \xc3\xbcbergibt den Rest an $sftp\n# sftp://root@debbie/var/databases -> root@debbie/var/databases\nsftp=`echo $1 | sed \'s#^[sftp://]*##\'`\n# echo $sftp\n\n# Abschneiden des Domain\n# root@debbie/var/databases -> root@debbie\ndomain=`echo $sftp | sed \'s#\\/.*##\'`\n# echo $domain\n\n# Abschneiden des Pfades\n# root@debbie/var/databases -> var/databases\npath=`echo $sftp | sed \'s#[^\\/]*.##\'`\n# echo $path\n# ssh=\'ssh \'$domain\' -t "cd /\'$path\' && bash --login"\'\n# echo $ssh\n\n# Der \xc3\xbcbergebene Pfad startet vom Wurzelverzeichnis / \ngnome-terminal -e \'ssh \'$domain\' -t "cd /\'$path\' && bash --login"\'\n\nread exit \n
Run Code Online (Sandbox Code Playgroud)\n\n

该脚本的功能与 python 脚本基本相同,但让我更好地掌握我想做的事情。

\n