【问题标题】:Open terminal from html using href ssh:// url with command line options使用带有命令行选项的 href ssh:// url 从 html 打开终端
【发布时间】:2018-08-08 17:50:34
【问题描述】:

我想创建一个 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 的答案。

【问题讨论】:

  • 您需要让用户设置浏览器指示处理 SSH 链接的程序
  • 没关系,假设他们在 Mac 操作系统上使用 Terminal.app
  • 这不是一个真正的编程问题。如果您搜索“ssh url handler”并可能添加目标浏览器和平台,您会发现各种页面讨论如何设置它。
  • @Kenster 搜索失败
  • 使用Terminal.app 是不可能的。 iTerm 仍然可以使用,如果这对您有用,而不是在 iTerm 中没有特定配置文件。所以默认情况下,如果没有一些配置,你不能让它跨系统工作

标签: javascript html url ssh terminal


【解决方案1】:

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

  • 没有为 SSH URI 定义用于指定命令的标准。因此,由接受输入的过程来了解如何使用它
  • 默认情况下Terminal.app 处理 SSH url,并且没有文档表明它支持命令
  • 接收 URL 的应用程序没有获取 URL 作为参数,它需要使用一些事件来获取它。你也可以参考here
  • 您可以将 iTerm 配置为处理 SSH 处理程序并访问按照描述传递的 URL here
  • 您可以创建一个自定义应用程序来处理 URL 并支持您想要的命令和其他内容

使用 iTerm 进行操作

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

所以在示例页面下面使用

<html>
<body>
<a href="ssh://vagrant@vm/ls -alh">ls -alh</a>
</body>
</html>

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

/usr/bin/ssh $$USER$$@$$HOST$$  $(echo $$PATH$$ | tr -d '/')

结果是

当然,您想运行一个 python 脚本或其他东西并将这些值传递给它,并让它为附加功能做这些事情。但这说明了如何实现这样的设置

主要参考文献

url scheme for ssh: Calling command on remote host

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/en-us/community/posts/209485898-Launching-External-Applications-using-Custom-Protocols-under-OSX

【讨论】:

    【解决方案2】:

    我不太确定这是否会有所帮助,但您是否考虑过使用代理/网桥通过 SSH 连接到服务器?例如:https://github.com/novnc/websockify

    Websockify 是一个到 TCP 代理/网桥的 WebSocket。这允许浏览器 连接到任何应用程序/服务器/服务。

    这种方式不用依赖 SSH 客户端,你可以直接从你的 JS 代码与服务器通信。

    【讨论】:

      【解决方案3】:

      对于使用 Big Sur 11.6 的 Mac 用户,您实际上可以使用 Apple 应用程序执行此操作。将显示一个简单的测试。

      1. 打开 Notes.app 或 TextEdit.app 并创建一些文本。
      2. 选择一个单词或句子并点击编辑 → 附加链接 (⌘K)
      3. 在对话框中将 url 创建为 ssh://user@hostssh://host

      维奥拉!

      【讨论】:

        猜你喜欢
        • 2011-11-02
        • 2016-02-14
        • 2019-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多