要通过浏览器操作Linux命令行,就需要在浏览器上实现一个文字终端环境,大部分实现这功能的工具,都是基于 xterm.js 的。
Xterm.js是一个用TypeScript编写的前端组件,它让应用程序在浏览器中为用户带来功能齐全的终端。
保存下面代码到index.html,用浏览器打开,就可以体验一下它的效果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>xterm.js Example</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/xterm@5.3.0/css/xterm.min.css" />
<style>
body {
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #1e1e1e;
}
#terminal {
width: 80%;
height: 80%;
}
</style>
</head>
<body>
<div id="terminal"></div>
<script src="https://cdn.jsdelivr.net/npm/xterm@5.3.0/lib/xterm.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.7.0/lib/xterm-addon-fit.min.js"></script>
<script>
// 初始化 xterm.js
const term = new Terminal();
const fitAddon = new FitAddon.FitAddon();
// 加载 fit addon
term.loadAddon(fitAddon);
// 将终端挂载到 DOM 元素
term.open(document.getElementById('terminal'));
// 调整终端大小以适应容器
fitAddon.fit();
// 写入欢迎信息
term.writeln('Welcome to xterm.js!');
term.writeln('Try typing something...');
// 处理用户输入
term.onData((data) => {
term.write(data); // 将用户输入回显到终端
});
</script>
</body>
</html>
xterm.js 不支持 xmodem,不过有一个项目可以试试:
https://github.com/FGasper/zmodemjs
寻找基于xterm.js 的开源项目
基于xterm.js 有很多开源项目,实现了各种功能。xterm.js github页面中的列表中列出了很多,可以寻找自己需要的项目:
这里简单地介绍几种。
ssh虚拟终端
实现的就是类似putty等ssh客户端,用于登录Linux服务器。
比如webssh:
https://github.com/huashengdun/webssh
提供了用户名密码,私钥,OTP等验证方式。
通过HTTP协议登录Linux
这种工具是让用户使用浏览器登录远程主机的命令行,服务器搭建在远程主机上。
比如ttyd:
https://github.com/tsl0922/ttyd
支持选中即复制、zmodem(rz、sz传文件)
内网穿透,ssh代理工具
此种工具利用一台公网IP的设备做中转,代理访问私网NAT后的主机,也可以作为管理工具。
比如rtty:
可以代理内网的ssh终端和web服务:
使用自己的命令上传下载文件,复制粘贴只能用快捷键。
好了,就介绍到这里吧,你如果也知道什么好玩的软件,欢迎推荐给我!