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

时间:2018-02-28 18:47:22

标签: javascript html 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的答案。

2 个答案:

答案 0 :(得分:5)

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

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

使用iTerm

进行

您可以在同一

中创建新的配置文件并启用SSH URL处理程序

SSH handling

在样本页面下面使用

<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 '/')

结果是

Result

当然你想运行一个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

答案 1 :(得分:0)

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

  

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

通过这种方式,您可以直接从JS代码与服务器进行通信,而不是依赖于SSH客户端。