使用带有命令行选项的href ssh:// url从html打开终端

hag*_*ope 4 html javascript url ssh terminal

我想创建一个URL链接,以启动终端(从网页或浏览器,例如chrome或safari)和ssh到一个盒子,并启动远程命令(例如ls),在终端中看起来像: ssh user@1.2.3.4 'ls'

我试过了:

<a href='ssh://user@1.2.3.4 "ls"'>SSH with ls</a>

但这无能为力。这有效(没有任何命令):

<a href='ssh://user@1.2.3.4'>SSH</a>

HTML可能吗?我还将接受使用Javascript的答案。

Tar*_*ani 5

我查看了多个来源并尝试了不同的组合,并得出以下理解

  • 没有为SSH URI定义标准来指定命令。因此,取决于输入的过程来了解如何使用它
  • 默认情况下Terminal.app处理SSH URL,并且没有任何文档支持该命令
  • 收到URL的应用程序不会将URL作为参数,它需要使用一些事件来获取它。您可以在这里参考相同
  • 您可以配置iTerm来处理SSH处理程序并按此处所述访问已传递的URL
  • 您可以创建一个处理URL并支持命令和其他所需内容的自定义应用

使用iTerm来做

您创建一个新的配置文件并在同一配置中启用SSH URL处理程序

SSH处理

因此在示例页面下使用

<html>
<body>
<a href="ssh://vagrant@vm/ls -alh">ls -alh</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的iTermSSH配置文件中的以下命令

/usr/bin/ssh $$USER$$@$$HOST$$  $(echo $$PATH$$ | tr -d '/')
Run Code Online (Sandbox Code Playgroud)

结果是

结果

当然,您想运行python脚本或其他内容,并将这些值传递给它,并让其执行其他功能。但这说明了如何实现这样的设置

关键参考

ssh的url方案:在远程主机上调用命令

https://unix.stackexchange.com/questions/75668/why-doesnt-the-ssh-command-follow-rfc-on-uri

https://groups.google.com/forum/#!topic/iterm2-discuss/r0Rk_WZaGWk

http://www.rubicode.com/Software/Bundles.html#RCDefaultApp

https://superuser.com/questions/379342/setting-iterm2-as-the-default-terminal-osx-lion

https://apple.stackexchange.com/questions/46666/how-to-access-a-clicked-url-in-a-url-handler-application-created-in-automator

https://support.shotgunsoftware.com/hc/zh-CN/community/posts/209485898-Launching-External-Applications-using-Custom-Protocols-under-OSX