Abra o local do Terminal Remoto do Nemo no Ubuntu 13.10

3

No Nautilus, foi possível construir uma conexão ssh com um servidor remoto por meio da frase secreta. Então você pode marcar o endereço e ir lá muito rápido. Isso ainda funciona no Nemo com o Ubuntu 13.10.

Mas, com um clique direito e usando a opção "abrir em um terminal", o usuário poderia abrir um terminal que mostraria um prompt do servidor remoto. Então você poderia começar a trabalhar lá imediatamente.

Usando o Nemo e não o Nautilus no Ubuntu 13.10, isso parece não funcionar mais. Eu descobri que eu poderia usar um script:

#!/bin/sh
gnome-terminal --execute /usr/bin/ssh [email protected]

Mas eu preferiria recuperar o antigo comportamento. Isso é de alguma forma possível?

    
por user262326 26.03.2014 / 18:56

3 respostas

1

Você pode criar duas ações em ~ / .local / share / nemo / actions.

Arquivo 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;

Arquivo 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;

E finalmente um script Python remote_terminal.py (deve ser executável):

#!/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)
    
por Thimo Kraemer 07.06.2014 / 14:16
1

Enquanto escrevia estas linhas, sofri uma quebra adicional com o Nemo. Migrando para a versão de 64 bits do Ubuntu 14.04 (Mate), observei que os scripts python pararam de funcionar. Eu achei que% F estava negando passar Paramaters mais. Então mudei para% U (ainda trabalhando) e adaptei os scripts para Bash (não sou fã de Python, pode ser um gosto pessoal):

#! /bin/bash


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

O script é essencialmente o mesmo que o script python, mas me dá uma melhor compreensão das coisas que quero fazer.

    
por Info 02.04.2016 / 13:46
0

Usando apenas o bash, isso é o que funcionou para mim no Linux Mint 19 e no nemo 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 (não se esqueça de torná-lo executável com chmod +x remote_terminal.sh ):

#! /bin/bash

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

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

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

    # Connect
    gnome-terminal -- ssh ${user}@${domain} -t "cd "${path}" && bash --login"
fi
    
por Kalith 06.09.2018 / 16:27