web-dev-qa-db-fra.com

Comment changer ce que xdg-open fait avec les liens ssh: // utilisateur @ ip

xdg open a ignoré mes directives. J'ai trouvé plusieurs discussions sur la façon d'ouvrir les liens ssh: // utilisateur @ ip (ceux-ci se trouvent dans notre logiciel de surveillance). J'ai lancé les commandes suivantes:

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

Pourtant, quand je tente d'utiliser xdg-open (comme le navigateur chrome), il tente de sftp à la place ...

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

Il semble être réglé correctement dans le registre

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

Oh - voici le ls -alFh et le contenu de 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"

ce qui donne?

Oh - btw - le script shell fonctionne bien s’il est lancé depuis la ligne de commande ...

4
Darren

Pour tous les autres retardataires, avec des versions plus récentes de ce numéro - Ce lien était pour moi la solution totale: https://lithostech.com/2014/04/get-ssh-protocol-links-working-in -ubuntuchromeunity /

Exécutez ce qui suit dans un shell pour créer et réaffecter le gestionnaire ssh et le type 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
3
growlf

Je voulais changer ce que xdg-open fait avec les liens ssh://, pour remplacer konsole par yakuake en tant que gestionnaire. Et voici ce que j'ai fait sur mon Kubuntu 15.10 (KDE Frameworks 5.15.0):

  1. a découvert quel est le gestionnaire:

    $ xdg-mime query default x-scheme-handler/ssh
    ktelnetservice5.desktop
    
  2. situé le gestionnaire sur le disque:

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

    dans mon cas je devais éditer /usr/share/applications/ktelnetservice5.desktop

  3. édité le gestionnaire remplaçant

    Exec=ktelnetservice5 %u
    

    avec

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

où ce script ressemble à ceci:

#!/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`"

et a reçu les privilèges d'exécution:

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

Et c'est tout!

2
Silvian Cretu

Tout d'abord, vous devez configurer un gestionnaire de protocole, comme ceci:

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

Créez ensuite un fichier d’entrée et placez-le quelque part comme /usr/share/applications (il serait peut-être préférable de le placer quelque part dans ~/.config, sans savoir où.).

ssh.desktop:

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

Ensuite, lors du prochain appel de xdg-open, il utilisera le gestionnaire ssh.desktop, qui déléguera l'appel à votre script Shell.

1
Attila O.

a écrit un script supporte ce schéma d'URL:

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

xdg-open-ssh:

utilisez gnome-terminal ou terminator ouvrez l'URL ssh,
Si pass se produit, utilisez sshpass mot de passe.
si pass err, retour au mot de passe entré par l'utilisateur.

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

0
yurenchen