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

时间:2017-10-14 04:42:11

标签: node.js powershell output telnet

我有一个简洁的小nodejs脚本以文本模式登录原始套接字(主要是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); 等价物;因为重新定位的文本只是打印在现有文本上,留下一堆乱七八糟的新旧输出。如何使用以下程序接受和处理telnet字符序列以清除输出?

df = pandas.DataFrame([[2,1],[2,2],[2,3],[2,4],[4,1],[4,2]],columns=
["source_column","desired_output"])#, index = ["1","2","3","4","5","5"])
df

  source_column desired_output
0   2            1
1   2            2
2   2            3
3   2            4
4   4            1
5   4            2

1 个答案:

答案 0 :(得分:1)

如果远程主机正在移动光标,则可能使用ANSI转义码进行操作。如果是这样,Esc[2J是透明屏幕转义码。

Here are the rest of escape codes