我想单击一个按钮并发送一个Linux命令(例如“ ls”)以在xterm.js终端上执行。有办法吗?
用Go语言编写的Pty伪终端正在远程运行,我使用xterm.js作为前端组件。
答案 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)
可以在下面查看其操作示例。