单击按钮并发送命令以在xterm.js终端上执行

时间:2020-07-30 16:24:06

标签: javascript terminal pty xtermjs

我想单击一个按钮并发送一个Linux命令(例如“ ls”)以在xterm.js终端上执行。有办法吗?

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

2 个答案:

答案 0 :(得分:0)

这样的事情应该解决上述情况

在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);
}

答案 1 :(得分:0)

我使用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)

可以在下面查看其操作示例。

enter image description here