2017-10-14 5 views
0

J'ai un petit script nodejs pour me connecter aux socket raw en mode texte (telnet, surtout). J'ai remarqué que certains serveurs enverraient des relocalisations d'impression, mais mon programme doit être en train d'ignorer une sorte d'équivalent cls; parce que le texte déplacé imprime simplement sur le texte existant, laissant un désordre brouillé de sortie nouvelle et ancienne. Comment puis-je accepter et traiter quelle que soit la séquence de caractères telnet pour effacer la sortie avec le programme suivant?Quelle est la bonne façon d'effacer les flux Telnet avec nodejs et powershell?

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); 

Répondre

1

Si l'hôte distant déplace votre curseur, il le fait probablement avec des codes d'échappement ANSI. Si c'est le cas, Esc[2J est le code d'échappement en clair.

Here are the rest of escape codes.