使用nodejs和powershell清除telnet流的正确方法是啥?

Posted

技术标签:

【中文标题】使用nodejs和powershell清除telnet流的正确方法是啥?【英文标题】:What is the proper way to clear telnet streams with nodejs and powershell?使用nodejs和powershell清除telnet流的正确方法是什么? 【发布时间】:2018-03-26 05:46:37 【问题描述】:

我有一个简洁的 nodejs 小脚本,可以以文本模式(主要是 telnet)登录原始套接字。我注意到一些服务器会发送打印重定位,但我的程序必须忽略某种cls 等价物;因为重新定位的文本只是打印在现有文本上,留下乱七八糟的新旧输出。如何接受和处理 telnet 字符序列用于使用以下程序清除输出?

var net = require("net");
var argv = process.argv.slice(2);
var client = null;
var echo = false;
var hostName = null;
var port = null;
var charSet = "utf-8";

var init = function(print, error, quit, argv, keyboard, argParser) 
    argv.forEach(argParser);
    checkVars();
    client = new net.Socket();
    client.on("data", print);
    client.on("error", error);
    client.on("close", quit);
    client.connect(port, hostName, function()  );
    process.stdin.resume();
    process.stdin.setRawMode(true);
    process.stdin.setEncoding(charSet);
    process.stdin.on("data", keyboard);
;

var print = function(text) 
    process.stdout.write(text);
;

var keyboard = function(key) 
    if (echo) print(key);
    client.write(key);
;

var error = function(e) 
    print(e.toString() + "\n");
    quit();
;

var quit = function() 
    print("\n");
    process.exit();
;

var argParser = function(arg) 
    if (arg.startsWith("echo")) echo = true;
    else if(arg.startsWith("host:")) hostName = arg.split(":")[1];
    else if (arg.startsWith("port:")) port = parseInt(arg.split(":")[1]);
    else if (arg.startsWith("charSet:")) charSet = arg.split(":")[1];


var checkVars = function() 
    if (hostName == null ||
        port == null) 
      print("\nNEVER RUN FOREIGN CODE WITHOUT FIRST READING IT\n");
      quit();
    


init(print, error, quit, argv, keyboard, argParser);

【问题讨论】:

【参考方案1】:

如果远程主机正在移动您的光标,则可能是使用 ANSI 转义码。如果是这样,Esc[2J 就是清屏转义码。

Here are the rest of escape codes.

【讨论】:

以上是关于使用nodejs和powershell清除telnet流的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

powershell Powershell:清除Windows事件日志

powershell 清除-AppVO365DocToIdMappingSearchQueries

powershell 清除配置管理器客户端缓存。

powershell 在本地清除所有远程删除的功能分支

windows powershell 怎么清除指令?

PowerShell如何清除当前ISE窗口的自定义变量