Расположение удаленного терминала от Nemo в Ubuntu 13.10

В Nautilus было возможно создать ssh-соединение с удаленным сервером через фразу-пароль. Тогда вы можете добавить адрес в закладки и быстро туда добраться. Это все еще работает в Немо с Ubuntu 13.10.

Но затем, щелкнув правой кнопкой мыши и используя опцию «открыть в терминале», пользователь может открыть терминал, который будет отображать подсказку удаленного сервера. Таким образом, вы можете начать работать там прямо сейчас.

Использование Nemo, а не Nautilus больше в Ubuntu 13.10, похоже, больше не работает. Я узнал, что могу использовать скрипт:

#!/bin/sh
gnome-terminal --execute /usr/bin/ssh user@myserver.net

Но я бы предпочел вернуться к старому поведению. Это как-то возможно?

3
задан 26 March 2014 в 21:56

3 ответа

Вы могли создать два действия в ~/.local/share/nemo/actions.

Файл remote_terminal1.nemo_action:

[Nemo Action]
Name=Open in remote terminal
Comment=Open current folder in remote terminal
Name[de]=Im entfernten Terminal öffnen
Comment[de]=Aktuellen Ordner im entfernten Terminal öffnen
Exec=<remote_terminal.py %F>
Icon-Name=terminal
Selection=none
Extensions=dir;
Dependencies=ssh;

Файл remote_terminal2.nemo_action:

[Nemo Action]
Name=Open in remote terminal
Comment=Open this folder in remote terminal
Name[de]=Im entfernten Terminal öffnen
Comment[de]=Diesen Ordner im entfernten Terminal öffnen
Exec=<remote_terminal.py %F>
Icon-Name=terminal
Selection=s
Extensions=dir;
Dependencies=ssh;

И наконец сценарий Python remote_terminal.py (должен быть исполняемый файл):

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import sys
import subprocess

path = sys.argv[1]

if '/sftp:' in path:
    sftp = path.split('/sftp:', 1)[1]
    settings = {}
    options, sep, settings['path'] = sftp.partition('/')
    for opt in options.split(','):
        name, sep, value = opt.partition('=')
        settings[name] = value

    cmd = ['gnome-terminal', '-e',
        'ssh %(user)s@%(host)s -t "cd /%(path)s && bash --login"' % settings]
else:
    cmd = ['gnome-terminal', '--working-directory', path]

subprocess.call(cmd)
1
ответ дан 26 March 2014 в 21:56

При записи этих строк я пострадал, дальнейшее ломаются с Немо. Миграция на 64-разрядную Версию Ubuntu 14.04 (Помощник), я заметил, что сценарии Python прекратили работать. Я нашел, что %F отклонял для передачи Параматерей больше. Таким образом, я переключился на %U (все еще работающий), и адаптируйте сценарии к Bash (я не поклонник Python, может быть персональный вкус):

#! /bin/bash


# $1 enthält den ersten Parameter

# Testweise Ausgabe aller übergebenen Parameter 
# echo $*
# exit

# der Regex schneidet "sftp://" ab und übergibt den Rest an $sftp
# sftp://root@debbie/var/databases -> root@debbie/var/databases
sftp=`echo $1 | sed 's#^[sftp://]*##'`
# echo $sftp

# Abschneiden des Domain
# root@debbie/var/databases -> root@debbie
domain=`echo $sftp | sed 's#\/.*##'`
# echo $domain

# Abschneiden des Pfades
# root@debbie/var/databases -> var/databases
path=`echo $sftp | sed 's#[^\/]*.##'`
# echo $path
# ssh='ssh '$domain' -t "cd /'$path' && bash --login"'
# echo $ssh

# Der übergebene Pfad startet vom Wurzelverzeichnis / 
gnome-terminal -e 'ssh '$domain' -t "cd /'$path' && bash --login"'

read exit 

сценарий делает по существу то же как сценарий Python, но дает мне лучшую власть на вещах, которые я хочу сделать.

1
ответ дан 26 March 2014 в 21:56
  • 1
    Да - они должны быть тем же пользователем. Я даже выключил аутентификацию по паролю в ssh файле конфигурации PasswordAuthentication no, и это заставило его сразу перестать работать (не прося у меня пароль), таким образом, я думаю, что может быть проблема с использованием ssh ключи от устройства развертывания амулета. Я смог работать вокруг проблемы, просто делая клон мерзавца и затем высказывая yaml мнение файла к локальному repo. Я все еще хотел бы видеть описание форматирования yaml файла и всех возможных вариантов. – Alex Iannicelli 16 September 2015 в 08:15

Только Используя удар, это - то, что работало на меня в Linux Mint 19 и Немо 3.8.5:

remote_terminal1.action:

[Nemo Action]
Name=Open in remote terminal
Comment=Open current folder in remote terminal
Exec=<remote_terminal.sh %U>
Icon-Name=terminal
Selection=none
Extensions=dir;
Dependencies=ssh;

remote_terminal2.action:

[Nemo Action]
Name=Open in remote terminal
Comment=Open this folder in remote terminal
Exec=<remote_terminal.sh %U>
Icon-Name=terminal
Selection=s
Extensions=dir;
Dependencies=ssh;

remote_terminal.sh (не забывают делать это исполняемым файлом с chmod +x remote_terminal.sh):

#! /bin/bash

# Get host name
domain=`echo $1 | grep -Po "(?<=host=)[^,]*"`

if [ ${#domain} -eq 0 ]; then
    # Not an SSH directory, just open regular terminal
    gnome-terminal --working-directory="$1"
else
    # Get user name
    user=`echo $1 | grep -Po "(?<=user=)[^/]*"`

    # Get path
    path=`echo $1 | grep -Po "(?<=user="${user}").*"`
    if [ ${#path} -eq 0 ]; then
        path=/
    fi

    # Connect
    gnome-terminal -- ssh ${user}@${domain} -t "cd "${path}" && bash --login"
fi
0
ответ дан 1 December 2019 в 17:07

Другие вопросы по тегам:

Похожие вопросы: