Nautilusでは、パスフレーズを介してリモートサーバーへのssh接続を構築できました。その後、アドレスをブックマークして、本当に速くそこに行くことができます。これは、Ubuntu 13.10を使用したNemoでも引き続き機能します。
しかし、その後、右クリックして「ターミナルで開く」オプションを使用すると、ユーザーはリモートサーバーのプロンプトを表示するターミナルを開くことができます。そのため、すぐに作業を開始できます。
Ubuntu 13.10でNautilusではなくNemoを使用すると、これはもう機能しないようです。スクリプトを使用できることがわかりました。
#!/bin/sh
gnome-terminal --execute /usr/bin/ssh [email protected]
しかし、私は古い振る舞いを取り戻したいです。それはどういうわけか可能ですか?
〜/ .local/share/nemo/actionsに2つのアクションを作成できます。
ファイル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 script 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)
これらの行を書いている間、私はNemoでさらに壊れました。 Ubuntu 14.04(Mate)の64ビットバージョンへの移行pythonスクリプトが動作を停止したことがわかりました。 (まだ機能しています)、スクリプトを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スクリプトと同じですが、やりたいことをよりよく把握できます。
Bashのみを使用して、これがLinux Mint 19および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(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