Come monitorare un server Node.js via telnet

Iniziamo col tranquillizzare il lettore: la parola "telnet" nel titolo non deve assolutamente spaventarci. Anche se usiamo Node.js da poche settimane e conosciamo solamente le nozioni rudimentali di JavaScript, siamo sicuramente in grado di trarre vantaggio da una connessione telnet. Questo articolo spiega come procedere passo passo e dovrebbe essere comprensibile anche dai meno esperti. Prima di entrare nei dettagli spieghiamo perche puo risultare conveniente usare una connessione telnet per monitorare un server remoto.

Il codice Node.js

Il codice Node.js

Come promesso in apertura dell’articolo, spieghiamo passo passo qual è la procedura, evitando di scendere nei dettagli tecnici a favore dei lettori meno esperti. Per lavorare con telnet ci basta saper aprire il prompt dei comandi su Windows o la finestra della shell su Linux. Questi sono strumenti dobbiamo conoscere comunque per lavorare con Node.js. Qualunque sia il nostro sistema operativo, per comodità faremo riferimento a finestre di questo tipo usando il termine generico “shell”.

Passiamo adesso al codice Node.js del server, copiandolo da qui sotto e incollandolo all’interno di un file che per comodità chiameremo “server.js”.

nella realtà la funzione status() conterrà il codice che fornisce le informazioni che ci interessano. L’implementazione della funzione status() non riguarda perciò la conoscenza del protocollo telnet: essa potrebbe essere realizzata anche scrivendo una serie di istruzioni del tipo console.log, per scrivere sullo schermo le variabili del server che vogliamo monitorare.

L’unica vera novità introdotta dal codice qui sopra dovrebbe essere l’uso del modulo “repl”. La sigla REPL può essere praticamente considerata sinonimo di “shell”, ciò indica un qualunque ambiente dove abbiamo una console dei comandi che permette di lavorare in maniera interattiva. In altre parole, anche il banale prompt dei comandi di Windows è un sistema di tipo REPL.

Quando invochiamo il metodo start sulla variabile shell apriamo, com’è logico aspettarsi, una nuova shell. Se non precisiamo alcun argomento la nuova finestra avrà il prompt di default e accetterà dati dalla tastiera, che in questo caso è il flusso (cioè lo “stream”) di default. Se invece precisiamo altri argomenti, ad esempio

stiamo definendo un prompt diverso da quello classico, che in questo caso sarà “Server:remote>”. Come secondo argomento passiamo la variabile socket, creata dal modulo “net”. Siccome non ci interessano i dettagli ci basta sapere che in questo modo stiamo dicendo alla shell che il suo input non è più la tastiera, ma una connessione via rete. In particolare la nuova shell accettarà dati in ingresso (cioè i comandi) proprio da una connessione remota. Siccome diciamo al server di restare in ascolto sulla porta 5010, il codice qui sopra crea un server telnet che permette all’utente di collegarsi su questa porta.

Con questo il codice lato server è finito. Passiamo adesso alla pratica, provando a collegarci da un client remoto.