Como mudar o que o xdg-open faz com ssh: // user @ ip liniks

3

O xdg open ignorou minhas diretivas. Eu encontrei vários tópicos sobre como abrir links ssh: // user @ ip (estes estão em nosso software de monitoramento). Eu executei os seguintes comandos:

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

Ainda assim, quando tento usar o xdg-open (como faz o navegador chrome) ele tenta sftp ao invés ...

xdg-open ssh://[email protected]
gvfs-open: sftp://[email protected]/: error opening location: The specified location is not mounted

Parece que está definido corretamente na coisa de registro

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

Oh - aqui está o ls -alFh e o conteúdo do 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=
protocol=${url//:*/}
machine=${url//*:\/\//}
machine=${machine%/}
/usr/bin/gnome-terminal -e "$protocol $machine"

o que dá?

Oh - btw - o shell script realmente funciona se for executado a partir da linha de comando ...

    
por Darren 20.09.2012 / 14:12

3 respostas

3

Eu queria alterar o que o xdg-open faz com ssh:// links, para substituir o konsole pelo yakuake como manipulador. E foi isso que eu fiz no meu Kubuntu 15.10 (KDE Frameworks 5.15.0):

  1. descobriu o que é o manipulador:

    $ xdg-mime query default x-scheme-handler/ssh
    ktelnetservice5.desktop
    
  2. localizado o manipulador no disco:

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

    no meu caso eu tive que editar /usr/share/applications/ktelnetservice5.desktop

  3. editou o manipulador substituindo

    Exec=ktelnetservice5 %u
    

    com

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

onde esse script se parece com isto:

#!/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  | cut -d'/' -f3'"

e recebeu privilégios de execução:

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

E é isso!

    
por Silvian Cretu 15.02.2016 / 14:55
1

Primeiro você deve configurar um manipulador de protocolo, assim:

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

Em seguida, crie um arquivo de entrada na área de trabalho e coloque-o em algum lugar como /usr/share/applications (talvez seja melhor colocá-lo em algum lugar em ~/.config , embora não saiba onde).

ssh.desktop :

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

Da próxima vez que xdg-open for chamado, ele usará o manipulador ssh.desktop, que por sua vez delegará a chamada ao seu script de shell.

    
por Attila O. 12.02.2013 / 04:13
1

Para qualquer outro que tenha chegado atrasado, com versões mais recentes desta edição - Este link foi a solução total para mim: link

Basicamente, execute o seguinte em um shell para criar e reatribuir o manipulador ssh e o tipo 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
    
por growlf 26.05.2017 / 05:04

Tags