lunedì 28 marzo 2016

Se ci sei, batti un colpo


Salve,
rieccomi ancora qui, dopo una lunga pausa, a scrivere ancora qualche riga e un po' di codice nella speranza che possano essere di aiuto a qualcuno come è  stato per me.
Come al solito parto da una mia esigenza, un piccolo problema che, non conoscendo una soluzione altrettanto semplice e veloce di questa, ho risolto con uno script in python.

Quando si hanno dei pc connessi alla rete, specialmente quando questi offrono dei servizi e quindi fanno da server, può essere utile avere un quadro della situazione e conoscerne in modo automatico la raggiungibilità sulla rete.

Il codice che ho scritto parte dal presupposto che i pc/server da tenere sotto controllo rispondano al ping, così come  avviene normalmente se non si interviene manualmente per disattivare i pacchetti ICMP.

Per farla breve posto subito il codice e poi un breve commento.



#!/usr/bin/env python

import os
import time

# elenco di host da processare in formato nome (host : indirizzo ip)
myservers = {
'Server A' : '192.168.1.10',
'Server B' : '192.168.1.20',
'Server C' : '192.168.1.30',

}

count=0 # contatore dei check

while True:
 print('------------------')
 print('--- Up or Down ---')
 print('------------------')
 count+=1 # conta i check
 print 'Check:',count
 print 'Orario: ',time.strftime("%H:%M:%S")
 print('')
 for nomehost, indirizzoip in myservers.items(): 
     # esegue il ping per ogni host e memorizza in test il risultato dell' operazione
  test = os.system("ping -c 1 " + indirizzoip+" >> /dev/null") 
  if test == 0:
   # se il ping ritorna il valore 0 allora l' host e' raggiungibile
   result = nomehost+' - '+indirizzoip+' --  ONLINE' 
  else:
   # ogni valore diverso da 0 vul dire che l' host e' irraggiungibile 
   result = nomehost+' - '+indirizzoip+' ---------  OFFLINE' 
  print(result)
 
 time.sleep(600) # un po di riposo
 os.system('clear') # pulisce lo schermo del terminale e ricomincia



Iniziamo col definire l' elenco dei servers da controllare, nel dizionario che ho chiamato myserver sono presenti le coppie (nome host : indirizzo ip) che dovrete modificare inserendo i dati dei vostri pc.

Fatto questo il resto non è da modificare, e funziona così:

viene inizializzata una variabile count che servirà per contare i check e quindi stamparli a video così da controllare come procede il ciclo while, un ciclo infinito che controlla costantemente tutti i servers mediante un ciclo for.
Per ogni item presente del dizionario definito in precedenza viene effettuato un ping sull'indirizzo ip, se il risultato è uguale a 0 vuol dire che il ping è riuscito ad arrivare al server che ha risposto correttamente, viceversa se il valore è diverso da 0 vorrà dire che il server non ha risposto e quindi non sarà raggiungibile sulla rete.
Da notare che ho inserito di proposito nella stringa dei servers non raggiungibili dei trattini in più, proprio per metterli in evidenza qualora qualcosa non andasse a buon fine nel ping.

Questo è tutto,

Alla prossima!

domenica 27 marzo 2016

Catturare lo schermo con import



Import è un tool di imagemagick preposto a catturare lo schermo o parte di esso e salvare l'immagine in un file. Su Lubit trovate già installato il programma istantanea per realizzare le screenshot, tuttavia il tool import è assai interessante, soprattutto se si pensa che può essere inserito in uno script. Comunque, per farla breve, per catturare l'intero schermo, apriamo un terminale e spostiamoci in una cartella. Nel mio caso,

$ cd Prova

 Ora, per catturare l'intero schermo, digitiamo
$ sleep 5; import -window root screenshot.png

Ho aggiunto un ritardo di cinque secondi in modo da poter minimizzare o chiudere qualche finestra.

Nel caso volessimo catturare solo una porzione dello schermo,
$ import screenshot.png

A questo punto non resta da fare altro che indicare con il mouse l'area dello schermo da immortalare.

 Ovviamente si presume che abbiate già installato imagemagick. In caso contrario

$ sudo apt-get install imagemagick

Alla prossima.


sabato 26 marzo 2016

Una filigrana per ogni pagina di un pdf


Talvolta diventa necessario aggiungere una filigrana, un watemark, per ogni pagina di un file pdf.

Il procedimento è abbastanza semplice.

Anzitutto dovete creare la filigrana. In genere uso Gimp, Inkscape, Imagemagick oppure è possibile crearla online, ci sono svariati siti preposti allo scopo.


Avevo una filigrana in un file png. Per prima cosa l'ho converto in pdf

$ convert filigrana.png filigrana.pdf

Poi ho scaricato il tool pdftk

$ sudo apt-get install pdftk

Infine ho messo nella stessa cartella sia il pdf_da_modificare  che il file filigrana.pdf.

Mi sposto con il terminale nella cartella contenenti i due file, nel mio caso

$ cd Prova

Non resta che lanciare il seguente comando

$ pdftk pdf_da_modificare background filigrana.pdf output pdf_con_filigrana.pdf

Ecco il risultato:

Alla prossima e Buona Pasqua.

giovedì 24 marzo 2016

Lubit, la pasqua e le fasi lunari


La Pasqua è una festa mobile e dipende dalla luna.

Un anno arriva alta, un anno arriva bassa. Di sicuro cade di domenica tra la fine di marzo e il 25 aprile.

Il calcolo della Pasqua è sempre stato, nel corso della storia, una fonte di discussione.

Solo nel 325, con il concilio di Nicea, fu stabilito un modo per calcolare la data della Pasqua che valesse per tutto il mondo cristiano.

Ancora oggi valgono quelle disposizioni.

La Pasqua cade la prima domenica successiva al plenilunio che segue l'equinozio di primavera.

Quindi
  • prima l'equinozio di primavera (+/- il 21 marzo)
  • poi il plenilunio
  • la domenica successiva al plenilunio è Pasqua

Calcolare la data della Pasqua su Lubit è estremamente semplice;

basta digitare nel terminale

$ ncal -e (anno)

ad es., per conoscere la data della Pasqua del 2016, basta digitare:

$ ncal -e 2016

Per conoscere la data della Pasqua del 2017,

$ ncal -e 2017


Per conoscere, invece, le fasi lunari dobbiamo installare il pacchetto bsdgames

$ sudo apt-get install bsdgames

Ora, per sapere la fase lunare di una determinata data, ad es., del 24-03-2016, basta aprire il terminale e digitare:

$ pom 16032410

pom sta per phase of moon, 16 è l'anno, 03 è il mese, 24 è il giorno e 10 sono le ore.

Ecco il risultato:

Thu 2016 Mar 24 10:00:00 (CET):  The Moon was Waning Gibbous (99% of Full)

Quindi la Pasqua non può essere che domenica 27, prima domenica dopo il plenilunio, successivo all'equinozio di primavera ;)

Intanto...