xterm终端写入欢迎信息

登录终端总是会提示一段欢迎语,那么想改变这段欢迎语该如何做呢。最近在做WebShell时考虑如何解决该需求

https://static.1991421.cn/2024/2024-03-29-125309.jpeg

服务器设置

最直接的方式即服务器配置,比如bashrc中增加echo 'hello world'。那么在登录WebShell后则会有该信息的打印。

但服务器端设置缺陷是

  1. 简单的增加欢迎语言,会使得任何终端登录都有该信息,影响面广。
  2. 需要修改服务器配置,成本高一些,比如WebShell想实现该设置,则需要执行指定命令修改bashrc等文件。

xterm.js-终端客户端设置

除了服务端设置,通过直接客户端修改也是可行的。WebShell的话即通过xterm.js实现。比如在终端连接成功后执行如下命令

1
2
3
4
5
6
7
8
term.write("\x1B[34;43mmy github is https://github.com/alanhg my github is https://github.com/alanhg my github is https://github.com/alanhg my github is https://github.com/alanhg\x1B[0m"

+ '\r\n', () => {
webshell.sendData('resize', {
rows: term.rows,
cols: term.cols,
});
});

这里解释下代码

  1. term.write后信息是直接写入终端模拟器,并非发送到服务端终端后进行的回显。
  2. 因为非服务器发送回来的信息,因此终端的尺寸服务器端并不知道,因此需要发送下rows/cols信息,避免在之后的终端操作中,服务端的回显出现错位情况。