web-dev-qa-db-ja.com

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

それでも、(chromeブラウザが行うように)xdg-openを使用しようとすると、代わりにsftpを試行します...

xdg-open ssh://[email protected]
gvfs-open: sftp://[email protected]/: 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
Darren

この問題のより新しいバージョンで、他のすべての遅い来訪者のために-このリンクは私にとって完全な解決策でした: 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
3
growlf

xdg-openssh://リンクで行うことを変更し、ハンドラーとしてkonsoleをyakuakeに置き換えたいと思いました。そして、これは私がKubuntu 15.10(KDE Frameworks 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
Silvian Cretu

まず、次のようなプロトコルハンドラーを設定する必要があります。

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

次に、デスクトップエントリファイルを作成し、/usr/share/applicationsのような場所に配置します(おそらくどこにあるかはわかりませんが、~/.configのどこかに配置した方が良いでしょう)。

ssh.desktop

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

次にxdg-openが呼び出されると、ssh.desktopハンドラーが使用され、これにより、呼び出しがシェルスクリプトに委任されます。

1
Attila O.

このURLスキームをサポートするスクリプトを書きました:

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

xdg-open-ssh:

gnome-terminalまたはterminatorを使用してssh URLを開き、
passが発生した場合、sshpass入力パスワードを使用します。
if pass err、ユーザー入力パスワードへのフェールバック。

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

0
yurenchen