Consulenze tecnologiche e informatiche
Automatizzare in modo creativo

Automatizzare in modo creativo

La potenza dell’automazione del IT è composta dai giusti strumenti e dall’organizzazione, il tutto legato dagli obiettivi da raggiungere, compresi quelli che non si sa di poter raggiungere.

Quando si lavora con un sistema RMM, ad esempio Datto RMM, si dispone di molteplici procedure integrate con il sistema acquistato e distribuito, questo in realtà non basta, infatti le procedure integrate le possono distribuire tutti, le azioni particolari solo in pochi e costituiscono il valore aggiunto che fa la differenza.

Negli ultimi mesi mi sono battuto per affrontare una serie di problematiche legate ad un’applicazione che per funzionare necessità di un utente permanentemente collegato, pertanto se il server si riavvia qualcuno deve correre e collegarsi per riavviare l’applicazione.

Sfruttando gli elementi del sistema operativo e le potenzialità di Datto RMM, abbinato alle funzioni di Powershell, ho potuto innescare una catena di retroazione tale da far ripartire il server con la login automatica e di conseguenza l’applicazione, per quindi riportare in sicurezza il server togliendo la login automatica (Windows 10 e di nuovo l’avvio rapido, Il computer si riavvia e le applicazioni server non partono).

Questa soluzione presenta un problema, ovvero se l’applicazione viene fermata per la manutenzione si innesca un loop perverso che impedisce al sistemista di lavorare, anche per questo esiste una soluzione.

La creatività

Virtù creativa, capacità di creare con l’intelletto, con la fantasia. In psicologia, il termine è stato assunto a indicare un processo di dinamica intellettuale che ha come fattori caratterizzanti: particolare sensibilità ai problemi, capacità di produrre idee, originalità nell’ideare, capacità di sintesi e di analisi, capacità di definire e strutturare in modo nuovo le proprie esperienze e conoscenze.

[Cit. Treccani]

Per arrivare ad un’automazione completa e funzionale non basta saper programmare, anzi, quello è l’elemento meno importante. Bisogna saper anticipare gli eventi e immaginare in modo fantasioso cosa potrebbe servire domani per evitare una determinata situazione, oppure nel caso di situazioni impreviste saper spingere la propria immaginazione oltre i confini della routine e mettendo insieme i vari ambiti di competenza e raggiungere una spiaggia con la soluzione.

Raggiunta la spiaggia con l’idea di cosa si potrebbe fare per mettere una “pezza” ad una situazione, o semplicemente per prevenirla, non resta che valutare se siamo in grado di scrivere il codice necessario per creare un monitor o una procedura, se non siamo in grado si possono cercare delle collaborazioni, definiamolo come qualcuno che fa scripting on demand.

Avremo quello che serve per soddisfare il cliente e permettere a tutti di lavorare serenamente, situazione che giustifica il costo derivante dal aver delegato la realizzazione del codice o dal aver investito del tempo per scriverlo direttamente.

Impedire che il monitor interrompa la manutenzione

Come scrivevo nell’introduzione, ho creato un monitor per far ripartire un’applicazione particolare che richiede l’utente collegato, la soluzione, per quanto costituita da un collage di elementi (pezza), era perfetta nel suo funzionamento e garantiva che l’applicazione fosse sempre attiva, a qualsiasi ora del giorno e della notte.

La versione ottenuta aveva un tarlo, ovvero durante la manutenzione innescava ciclicamente le azioni di recupero, impedendo al team tecnico di lavorare, la situazione si risolveva con lo spegnimento temporaneo del monitor, di nuovo un intervento umano diretto.

Questa non è automazione.

A questo punto non mi resta che mettere in mare la barca e iniziare a navigare verso la spiaggia con la soluzione. Ho giocato per oltre dieci anni a Dungeons & Dragons, quindi la fantasia non mi manca.

La prima domanda è quella fondamentale e semplice, cosa succede quando un utente digita la password per sbloccare il salva schermo?

In realtà una pioggia di messaggi negli eventi di sicurezza, ma tutti inadatti per un’analisi, quelli che si presentano sempre e solo per il blocco e sbocco dello schermo sono gli identificativi 4800 e 4801, che non si vedono nei tracciamenti.

Trovato il come vedere questi eventi non resta che recepire gli ultimi visualizzati, e solo quelli, per far capire al monitor che un essere vivente sta lavorando sulla macchina, schermo sbloccato (4801) e quindi non deve intromettersi fino a quando se ne andrà, ovvero riparte il blocco schermo (4800).

Rendere visibili gli eventi di blocco e sblocco dello schermo

Abilitazione audit sessioni

Abilitazione audit sessioni

Per poter visualizzare questi eventi è necessario abilitare l’audit sui messaggi, dalla barra esegui (WIN+R) digitare il comando gpedit.msc e confermare con un invio.

La sezione di interesse per il nostro obiettivo è

Configurazione Computer -> -> Impostazioni di windows -> Impostazioni sicurezza -> Configurazione avanzata dei criteri … -> Criteri di controllo di sistema … -> Accesso/Fine Sessione

Al suo interno deve essere abilitato l’elemento controlla altri eventi di accesso fine/sessione, selezionando i valori di esito positivo e negativo.

In questo modo dopo un’azione di blocco o sblocco dello schermo negli eventi di sicurezza saranno presenti i messaggi corrispondenti.

Cercare i messaggi negli eventi di sicurezza

Per analizzare con sicurezza lo stato dello schermo del sistema ci serve sapere quale dei due eventi è l’ultimo registrato, perché se l’ultimo è il 4801 il monitor si dovrà fermare, mentre se è il 4800 dovrà riprendere il suo normale funzionamento.

Le proprietà dell’evento che permettono questo controllo sono due, la prima è l’indice di registrazione, ovvero il numero progressivo di registrazione del messaggio, oppure la data di creazione.

La prima cmdlet in cui si incappa parlando di venti di sistema è la Get-EventLog

get-eventlog -newest 100 -LogName Security | where {$_.eventID -eq 4800} | select -Last 1 | select index

La riga di codice analizza gli ultimi 100 eventi e tra questi cerca quello con Identificativo 4800, selezionando (in teoria) l’ultimo ed estraendo il valore dell’Indice.

In realtà l’argomento Last è fuorviante e Get-EventLog non permette di conseguire l’obiettivo richiesto, infatti con questa modalità si ottengono gli argomenti dell’evento più vecchio.

Per estrapolare il valore corretto è il caso di usare la cmdlet Get-WinEvent

get-winevent -FilterHashtable @{Logname=’Security’;ID=4800}  -MaxEvents 1 | select TimeCreated

Come la precedente estrae dai tracciamenti l’evento 4800 e solo l’ultimo che si è registrato, per quindi estrarre la data di creazione.

Per determinare lo stato corrente del server o del computer sarà sufficiente operare sulle date di creazione, con un codice simile al seguente.

  1. $Lock = get-winevent -FilterHashtable @{Logname=’Security’;ID=4800} -MaxEvents 1 | select TimeCreated
  2. $UnLock = get-winevent -FilterHashtable @{Logname=’Security’;ID=4801} -MaxEvents 1 | select TimeCreated
  3. If (($Lock) -and ($UnLock)) {
  4.   if (($UnLock.TimeCreated -gt $Lock.TimeCreated) -and !(Test-Path $LogonPath)) {
  5.     new-item -ItemType directory $LogonPath
  6.   }
  7.   elseif ($Lock.TimeCreated -gt $UnLock.TimeCreated -and (Test-Path $LogonPath)) {
  8.     remove-item -Path $LogonPath -recurse -force
  9.   }
  10. }
  11. elseif (($UnLock) -and !(Test-Path $LogonPath)) {
  12.  new-item -ItemType directory $LogonPath
  13. }
  14. elseif ($Lock -and (Test-Path $LogonPath)) {
  15.   remove-item -Path $LogonPath -recurse -force
  16. }
  17. if ((Test-Path $LogonPath)) {
  18.  exit 0
  19. }

Le righe 1 e 2 cercano la presenza degli eventi di blocco e sblocco dello schermo e leggono la data di creazione associandola ad una variabile.

La riga 3 determina se sono presenti entrambi i valori, situazione vera fino a quando il log di sicurezza non verrà sovrascritto.

Le righe da 4 a 9 sono eseguite se la condizione della riga 3 è vera.

La riga 4 verifica se la data dell’evento di sblocco è maggiore di quella del blocco e in tal caso crea una cartella vuota su disco (riga 5), che funge da semaforo, se la cartella semaforo è già esistente non viene ripetuta la procedura di creazione.

La riga 7 viene elaborata se la condizione della riga 4 non è soddisfatta e verifica se la data di blocco è più recente di quella di sblocco, in questo caso rimuove la cartella semaforo, se esiste.

La riga 11 viene elaborata se la condizione della riga 3 non è soddisfatta, se è presente il solo evento di sblocco e non è presente la cartella semaforo la crea alla riga 12.

La riga 14 viene elaborata se non sono soddisfatte le condizioni delle precedenti righe 4 e 11, se è presente il solo evento di blocco rimuove la cartella semaforo se esiste.

Per finire la riga 17 controlla l’esistenza della cartella semaforo e sospende l’esecuzione della procedura del monitor.

Il monitor ora svolge la sua azione in modo completamente autonomo, senza richiedere un intervento diretto da parte di un operatore.

 

Non hai mai avuto situazioni strane?

 

Se sei interessato ad approfondire questi contenuti o ad avere nella tua aziende questi strumenti o i prodotti menzionati, contattaci attraverso la pagina di contatto di questo sito, o se preferisci cercami attraverso la pagina FaceBook o il mio profilo Linkedin.

Per essere informato sui nuovi articoli e contenuti puoi anche iscriverti alle nostre newsletter.

 

Categorie
Archivi
Count per Day
  • 76Questo articolo:
  • 206185Totale letture:
  • 113Letture odierne:
  • 208Letture di ieri:
  • 21 Novembre 2016Dal: