Как изменить то, что xdg-open делает со ссылками ssh: // user @ ip

xdg open проигнорировал мои директивы. Я нашел несколько тем о том, как открывать ссылки ssh: // user @ ip (они есть в нашем программном обеспечении для мониторинга). Я выполнил следующие команды:

gconftool-2 -s /desktop/gnome/url-handlers/ssh/command '/home/dankney/bin/SSH.handler %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/ssh/enabled --type Boolean true
gconftool-2 -s /desktop/gnome/url-handlers/ssh/needs_terminal --type Boolean true

Тем не менее, когда я пытаюсь использовать xdg-open (как это делает браузер Chrome), он вместо этого пытается выполнить sftp ...

xdg-open ssh://root@1.2.3.4
gvfs-open: sftp://root@1.2.3.4/: error opening location: The specified location is not mounted

Кажется, что он правильно установлен в регистре

gconftool-2 -a /desktop/gnome/url-handlers/ssh
 command = /home/dankney/bin/SSH.handler %s
 needs_terminal = true
 enabled = true

О - вот ls -alFh и содержимое SSH.handler

ls -alFh /home/dankney/bin/SSH.handler 
-rwxrwxr-x 1 dankney dankney 133 Sep 18 21:16 /home/dankney/bin/SSH.handler*


cat /home/dankney/bin/SSH.handler*
#!/bin/bash
url=$1
protocol=${url//:*/}
machine=${url//*:\/\//}
machine=${machine%/}
/usr/bin/gnome-terminal -e "$protocol $machine"

, что дает ?

Да, кстати, скрипт оболочки действительно работает, если запускается из командной строки ...

4
задан 20 September 2012 в 16:12

4 ответа

Я хотел измениться что xdg-open делает с ssh:// ссылки, для замены консоли yakuake как обработчик. И это - то, что я сделал на своем Kubuntu 15.10 (Платформы KDE 5.15.0):

  1. узнанный, что является обработчиком:

    $ xdg-mime query default x-scheme-handler/ssh
    ktelnetservice5.desktop
    
  2. расположенный обработчик на диске:

    $ locate ktelnetservice5.desktop
    /usr/share/app-install/desktop/kio:ktelnetservice5.desktop
    /usr/share/applications/ktelnetservice5.desktop
    

    в моем случае я должен был отредактировать /usr/share/applications/ktelnetservice5.desktop

  3. отредактированный замена обработчика

    Exec=ktelnetservice5 %u
    

    с

    Exec=/path/to/some/script.sh %u
    

где тот сценарий похож на это:

#!/bin/bash
qdbus org.kde.yakuake /yakuake/window toggleWindowState; qdbus org.kde.yakuake /yakuake/sessions addSession && qdbus org.kde.yakuake /yakuake/sessions runCommand "ssh `echo $1 | cut -d'/' -f3`"

и был дан полномочия на исполнение:

chmod +x /path/to/some/script.sh

И вот именно!

2
ответ дан 20 September 2012 в 16:12

Для других опоздавших, с более свежими версиями этой проблемы - эта ссылка была для меня полным решением: https://lithostech.com/2014/04/get-ssh-protocol-links-working -in-ubuntuchromeunity /

В основном, выполните следующие действия в оболочке, чтобы создать и переназначить обработчик ssh и тип mime:

xdg-mime default ssh.desktop x-scheme-handler/ssh
cat << EOF > ~/.local/share/applications/ssh.desktop
[Desktop Entry]
Version=1.0
Name=SSH Launcher
Exec=bash -c '(URL="%U" HOST="\${URL:6}"; ssh \$HOST); bash'
Terminal=true
Type=Application
Icon=utilities-terminal
EOF
0
ответ дан 20 September 2012 в 16:12

Сначала вы должны настроить обработчик протокола, например:

xdg-mime default ssh.desktop x-scheme-handler/ssh

Затем создайте файл записи рабочего стола и поместите его где-нибудь как /usr/share/applications (возможно, было бы лучше поместить его где-нибудь в [ 113], хотя не уверен, где).

ssh.desktop :

[Desktop Entry]
Terminal=false
Type=Application
Exec=/home/dankney/bin/SSH.handler %F

Затем при следующем вызове xdg-open будет использоваться обработчик ssh.desktop, который, в свою очередь, будет делегировать вызов вашей оболочке. сценарий.

0
ответ дан 20 September 2012 в 16:12

записал, что сценарий поддерживает эту схему URL:

ssh://[user[:pass]@]host[:port]

xdg-open-ssh:

использование gnome-terminal или terminator открывает ssh URL,
, если pass происходят, используйте sshpass входной пароль.
, если pass допускают ошибку, возврат к состоянию до сбоя к паролю ввода данных пользователем.

https://github.com/yurenchen000/xdg-open-ssh

0
ответ дан 17 October 2019 в 16:41

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

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