sabato 22 giugno 2019

Controllare l'output di WinSCP

Come ho già scritto un paio di volte (almeno, ma di preciso non ricordo) uso spesso WinScp per compiere operazioni sugli access point che ho in giro. Ma una grossa pecca era il fatto di non avere un log delle azioni compiute e se sono andate a buon fine. Vediamo di rimediare!
Io per comodità invoco WinScp con un comando batch (come spiegavo qui) e la cosa più banale è fare un reindirizzamento dell'output in un file di testo.

Al posto di lanciare il file .bat "liscio" lo si lancia così:

reboot.bat > logreboot.txt

Il carattere > sta a significare che l'output generato dall'azione precedente deve essere scritto in un file di testo di nome logreboot.txt

Questa è una cosa tutto sommato banalissima.
Il bello è sapere a che ora ed in che data viene compiuta l'azione!
In questo caso, si spolvera un pochino del vecchio e bistrattato DOS con questo batch:

SET DSIST=%DATE%
SET ORA=%TIME%
SET NDATA=%DSIST:~6,4%%DSIST:~3,2%%DSIST:~0,2%_%ora:~0,2%%ora:~3,2%
reboot.bat > %NDATA%_logreboot.txt

Vediamo insieme cosa vuol dire il tutto!

SET DSIST=%DATE%
Crea una variabile di nome DSIST prendendo l'output del comando DATE.
Ad esempio 31/12/2010 (nel formato anno, mese, giorno)

SET ORA=%TIME%
Crea una variabile di nome ORA prendendo l'output del comando TIME
Ad esempio 05:20:30,50 (nel formato ora, minuti, secondi, decimi di secondo)

SET NDATA=%DSIST:~6,4%%DSIST:~3,2%%DSIST:~0,2%_%ORA:~0,2%%ORA:~3,2%
Qui ci incasiniamo, vediamolo a pezzi.

SET NDATA=
Crea una variabile di nome NDATA che contiene:

  • %DSIST:~6,4%
La variabile DSIST saltando i primi sei caratteri (in questo caso 31/12/) e prendendo solo gli ultimi 4 caratteri ovvero 2010.

  • %DSIST:~3,2%

Nuovamente la variabile a variabile DSIST saltando i primi 3 caratteri (in questo caso 31/) e prendendo solo i successivi 2 ovvero 12.


  • %DSIST:~0,2%

Nuovamente la variabile a variabile DSIST non saltando nessun primo carattere e prendendo solo i successivi 2 ovvero 31.


  • _%ORA:~0,2%

Inserisce il carattere "_" e poi prende la variabile ORA non saltando nessun primo carattere e prendendo solo i successivi 2 ovvero 05.


  • %ORA:~3,2%

Nuovamente la variabile a variabile ORA saltando i primi 3 caratteri (in questo caso 05:) e prendendo solo i successivi 2 ovvero 20

reboot.bat > %NDATA%_logreboot.txt

Lancia il batch del riavvio e l'output lo salva in un file di testo che si chiama (stando all'esempio di qui sopra) 20101231_ 520_logreboot.txt

In questo modo si ha l'output del comando salvato in un file di testo utile per future analisi.
Ad esempio, questo è il log che vi troverete ad avere:

C:\Documents and Settings\UTENTE\Desktop\winscp>c:\Programmi\WinSCP\winscp.com /script="\\192.168.XXX.XXX\log_wifi\script_winscp\18_230.txt"
Ricerca host in corso...
Connessione host in corso...
Autenticazione in corso...
Usa nome utente "user".
Autenticazione con password preimpostata
Autenticato.
Avvio sessione in corso...
Sessione avviata.
Sessione attiva: [1] user@192.168.YYY.YYY
Confrontando...
Locale '\\192.168.XXX.XXX\log_wifi\18.230' <= Remoto '/mnt/usb'
Sincronizzando...
Locale '\\192.168.XXX.XXX\log_wifi\18.230' <= Remoto '/mnt/usb'
dnslog.txt                |           8 KB |    0,0 KB/s | binary | 100%
dnslog_T8-2017-08-29-06_01.txt.tar |           5 KB |   12,6 KB/s | binary | 100%
logread_T8-2017-08-28-06_01.txt |           9 KB |   21,4 KB/s | binary | 100%
logread_T8-2017-08-29-06_01.txt |          690 B |   18,0 KB/s | binary | 100%
Sessione 'user@192.168.YYY.YYY' chiusa.
Nessuna sessione.

Ovvio, ci sono metodi migliori e più eleganti, si potrebbe eliminare tutto questo rigiro usando un server Syslog, ma c'è il fatto che si avrebbe sempre traffico di dati tra gli apparati ed il server stesso.

Questa non è LA soluzione a tutti i problemi, ma solo UNA delle tante soluzioni possibili con la quale io mi trovo bene :-)

Nessun commento:

Posta un commento

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre