0

我想单击一个按钮并发送要在 xterm.js 终端上执行的 linux 命令,例如“ls”。有没有办法做到这一点?

用 Go 编写的 pty 伪终端远程运行,我使用 xterm.js 作为前端组件。

4

2 回答 2

1

这样的事情应该处理上面提到的情况

在 HTML 中

<button (click)="runCmd('ls')>ls</button> 

在 app.component.ts

假设有一个 websocket 服务器正在监听这里提到的端点......

public runCmd(command){
  var url = "ws://<ip>:<port>/pty"
  var terminal = new Terminal()
  terminal.open(document.getElementById("terminalDiv");
  var socket = new WebSocket(url);
  var attachAddon = new AttachAddon(socket);
  terminal.loadAddon(attachAddon);

  //socket.send() will send the data passed to it. 
  socket.send(command);
}
于 2020-08-03T22:42:06.787 回答
1

我用 Python 将命令从应用程序发送到嵌入式 xterm.js 终端做了同样的事情,我推荐的一件事是设置它,这样您就可以发送原始命令而无需特殊的转义。

我发现了这个 javscript “heredoc” 函数,它允许我将原始复杂的多行 oneliners 毫无问题地发送到 xterm.js。将其留在这里以防其他人发现它有用。

    @QtCore.pyqtSlot(QtCore.QModelIndex)
    def run_command_via_js_double_click(self, signal):
        # send a command to the server
        script = """
        var cmd = (function() {/*%s*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];
            wssh.send(cmd);
        """ % cmd_replaced
        self.currentWidget().page().runJavaScript(script)

可以在下面看到它的一个例子。

在此处输入图像描述

于 2020-09-06T03:40:07.540 回答