Archivio della categoria 'Tips & tricks'

Risolvere errori z-index con un semplice javascript

HTML, Javascript, Open Source, Tips & tricks Nessun commento »

Vi giro un minuscolo javascript che salverà molte delle vostre vite. Si tratta di una function da caricare negli head della pagina HTML per ottenere un resettamento progressivo degli z-index e annullare i problemi di sovrapposizione degli elementi che si verifica spesso quando nella pagina convivono vari elementi dinamici mescolati fra loro – ad esempio: menù a tendina tipo PixoPoint e presentazioni jQuery. In situazioni simili, spesso si verificano spiacevoli errori di valutazione della z-index da parte del browser – specialmente da parte di IE7 – ottenendo come risultato, ad esempio, la fastidiosa scomparsa di un menù a tendina dietro una presentazione a slide di jQuery. Questo piccolo script “miracoloso” risolverà il problema. Occhio che il reset delle z-index avviene in maniera progressiva dall’alto verso il basso, tenetene conto quando posizionate i div per non ottenere l’effetto contrario a quello voluto!


<script lang="javascript">
$(function() {
var zIndexNumber = 1000;
$('div').each(function() {
$(this).css('zIndex', zIndexNumber);
zIndexNumber -= 10;
});
});
</script>

Linea di comando “tutti frutti”

Open Source, Shell, Tips & tricks Nessun commento »

Home page del sito http://ss64.comIl sito web in cui mi sono casualmente imbattuto questa mattina rappresenta uno dei grandi classici per il nerdiano doc, una sorta di bildungsroman dello spippolatore da tastiera più accanito. Si tratta di una “succintissima” raccolta di comandi per chi ancora si ostina a governare qualsiasi tipo di server semplicemente inviando comandi testuali, senza finestre, colori, consumo superfluo di CPU e di banda… Le sezioni disponibili sono: Oracle database, Windows CMD, CMD Commands XP/Win7, Bash, VBScript Commands, OS X Commands, Windows PowerShell, SQL Server database. Ovviamente l’unico link che mi sento di mettervi a disposizione è il seguente: http://ss64.com/bash/

Reboot senza reboot

Debian, Kernel, Open Source, Sistema, Tips & tricks 2 commenti »

Oggi mi è capitata una di quelle cose che è bello dire solo quando sono finite. Stavo sistemando una serie di nuovi virtual host sul webserver di un cliente quando, del tutto improvvisamente, la macchina ha smesso di rispondere a qualsiasi forma di comando. L’ambiente bash in cui stavo digitando i miei comandi sembrava integra, nel senso che mi era possibile effettuare qualsiasi normale operazione purché non avesse a che fare con il filesystem: funzionavano perfettamente comandi come top e ps, ma era impossibile effettuare il less di un file o addirittura ottenere il man di un qualsiasi comando… In tutti i casi ottenevo un brutale e inequivocabile Input/output error, sintomo tristemente evidente di un problema sul filesystem.

Non che sia una situazione in cui mi sono trovato spesso, grazie al cielo, ma trattandosi quasi sicuramente di un problema del controller RAID e non dei dischi (entrambi nuovi di zecca) ho deciso di effettuare un reboot, ma anche questo comando restituiva il medesimo errore: non essendo disponibile in memoria in forma di processo il kernel lo deve per forza prelevare dal filesystem, quindi… Input/output error.

Fatta questa romanzesca e noiosissima introduzione, vengo al sodo e registro qui il paio di comandi con cui sono riuscito a comunicare al kernel le mie cattive intenzioni:

# echo 1 > /proc/sys/kernel/sysrq
# echo b > /proc/sysrq-trigger

Con la prima istruzione ho abilitato il flag sysrq che permette di inviare comandi direttamente al kernel, mentre la seconda istruzione costituisce a tutti gli effetti il comando di reboot. Ecco alcuni link utili per conoscere meglio questa potentissima e preziosissima modalità di interazione con il kernel di Linux:

Usare fail2ban per sospendere i tentativi di accesso ssh

Open Source, Sistema, Tips & tricks Nessun commento »

Il logo di Fail2banSe volete rendere il vostro server inaccessibile ad un indirizzo IP da cui provengono troppi, sospetti tentativi di autenticazione, fail2ban è lo strumento che fa per voi. Si tratta di uno  script in Python che esegue automaticamente una di quelle noiosissime operazioni che spesso un sistemista UNIX/Linux deve effettuare manualmente: fail2ban cerca nei log di sistema tutti gli indirizzi IP che hanno tentato senza successo di accedere al server; se i tentativi di accesso superano un certo numero massimo consentito in un certo arco di tempo, allora quell’IP viene tagliato fuori mediante iptables per un (altrettanto) certo lasso di tempo. Leggi il resto »

Sostituire un disco rotto in RAID1 software con mdadm

Sistema, Tips & tricks Nessun commento »

Schema mirroring RAID1Un paio di giorni fa abbiamo ricevuto la notifica via email dal daemon di un server Debian GNU/Linux che ci informava senza alcun tatto di un disastro imminente. Il server in questione gestisce due dischi da 500GB/15k in RAID1 software ed uno dei due dischi ha deciso di fare testamento e mettersi in cammino per l’ultima, ineluttabile destinazione. La notifica non lasciava dubbi: la sincronizzazione con il disco /dev/sda non era più possibile a causa di ripetuti errori nella gestione della partizione /dev/sda1, urgeva quindi la sostituzione del disco.

L’intervento è andato liscio come l’olio, pertanto lo appunto qui a vantaggio di tutti, cercando di essere il più sintetico possibile. Leggi il resto »

Monitorare il load average su un server Linux/FreeBSD

Principianti, Shell, Sistema, Tips & tricks Nessun commento »

Icona raffigurante un terminale stilizzatoLa versione originale di questo script gira ormai da oltre un lustro su molti dei miei server, almeno su quelli più puri dove ancora bastano una manciata di script nudi e crudi messi in cron per gestire sia il monitoraggio che la manutenzione ordinaria dell’intero sistema. Quello che fa lo script è elementare: interroga il kernel mediante il comando uptime, dal cui output ricava i 3 valori del l0ad average; se questi superano il limite impostato nella variabile $NOTIFY, un messaggio email contenente un breve avviso e l’output del top viene inviato all’indirizzo email impostato nella variabile $EMAIL.

Il valore da assegnare alla variabile $NOTIFY varia da sistema a sistema, spesso individuare quello ottimale per un server non è una operazione del tutto immediata – richiede un minimo di esperienza e senza dubbio almeno un breve periodo di osservazione. Questo per evitare di ricevere un numero eccessivo di warning o, di contro, non ricevere notifiche per eventi che meriterebbero invece un po’ di attenzione. Leggi il resto »

Disabilitare il reverse lookup su ProFTPD

Diario di bordo, Sistema, Tips & tricks 2 commenti »

Il logo di ProFTPDLo scrivo qui a titolo di promemoria per la prossima volta che dovesse succedermi… Questa mattina ho messo a disposizione di un collega un nuovo accesso FTP ad uno dei miei server Debian, su cui gira da sempre un ProFTPD molto ben performante.

Il collega mi ha segnalato gravi problemi di lentezza e ripetuti timeout sulla connessione FTP, fenomeno che in oltre un anno di produzione quel server non aveva mai evidenziato: decine di clienti accedono regolarmente via FTP alle DocumentRoot dei proprio VirtualHost godendo della piena disponibilità di banda e spazio disco.

Dopo avere verificato che il problema riguardava solo l’accesso FTP al mio server e dopo esserci assicurati che la sua connessione non avesse problemi sulla porta 21, dalle nebbie della mia scarsa memoria è riemersa come per magia la questione del reverse lookup! Disabilitarlo in ProFTPD ha infatti risolto completamente il problema… è stato sufficiente accodare al file /etc/proftpd/proftpd.conf le due direttive che seguono:

UseReverseDNS off
IdentLookups off

Riavviato ProFTPD il problema è tornato nel nulla da cui era provenuto ;)

Abilitare l’accesso a directory extra in Drupal

Apache, Open Source, PHP, Principianti, Tips & tricks Nessun commento »

Quelli che hanno la cattiva abitudine di installare le applicazioni web nella document root si trovano  spesso a dover affrontare un fastidioso problema: l’impossibilità di gestire directory e sub-directory estranee all’applicazione a causa delle restrizioni di accesso imposte dal file .htaccess.

L’esempio più tipico è quello del CMS Drupal. Supponiamo di averlo installato e reso completamente accessibile all’URL:

http://www.miodominio.xx/

Il file .htaccess di Drupal controllerà tutto quello che può o non può essere accessibile al di sotto della propria document root, che in questo caso coincide esattamente con la document root del virtual host. Infatti il file .htaccess si trova nella radice del filesystem dedicato a questa applicazione:

http://www.miodominio.xx/.htaccess

In questo modo, se decidiamo di creare una qualsiasi nuova directory, questa subirà le medesime restrizioni scritte nel file .htaccess durante l’installazione di Drupal, come ad esempio l’impossibilità di navigare liberamente tra i suoi file e le subdirectory che essa contiene:

http://www.miodominio.xx/test/

Questa directory non è accessibile in questo modo, ma solo richiamando il nome del file in essa contenuto a cui vogliamo accedere, ad esempio:

http://www.miodominio.xx/test/pippo.html
http://www.miodominio.xx/test/imago.jpg

Se non viene indicato alcun file, viene cercato e mostrato il solo file index.php:

http://www.miodominio.xx/test/index.php

Se il file index.php non esiste, non viene mostrato il contenuto della directory – come molti si aspetterebbero – ma al contrario viene generato un bell’errore 404  (File Not Found).

Per ovviare a questo problema è sufficiente agire sul file .htacces, aggiungendo le istruzioni che rendono la directory /test/ immune da queste regole, immediatamente dopo l’inizializzazione del RewriteEngine:

<IfModule mod_rewrite.c>
RewriteEngine on
#
# ECCO LE DUE RIGHE DI ISTRUZIONI:
RewriteCond %{REQUEST_URI} "/test/"
RewriteRule (.*) $1 [L]
#

Provare per credere.

Impedire il timeout delle connessioni SSH

Open Source, Principianti, Shell, Sistema, Tips & tricks Nessun commento »

Un dritta veloce per chi mi ha chiesto un modo per ovviare al timeout delle connessioni SSH. Premetto che si tratta di una situazione sempre più diffusa, dovuta alla configurazione di default dei nuovi di router distribuiti da Telecom per Alice ADSL. Il problema può essere ovviato passando al comando ssh il parametro:

-o ServerAliveInterval=10

Il parametro manda un messaggio di noop al server ogni n secondi (in questo caso: 10) notificando al router che la connessione è di fatto operativa, anche in mancanza di alcun tipo di attività. Dato che non è comodissimo digitarlo ogni volta, è possibile aggiornare il proprio file .bashrc con un alias che incorpori l’opzione nel comando base:

alias ssh="ssh -o ServerAliveInterval=10"

Questo è quanto :)

Sincronizzare con ftpsync.pl

Backup, Open Source, Shell, Sistema, Tips & tricks Nessun commento »

Il logo di SourceForge.netAnche se esistono metodi certamente più ortodossi, ricorrere al vecchio e deprecabile protocollo FTP per mantenere la sincronizzazione tra directory collocate su due server a volte è semplicemente l’unica soluzione. Mi riferisco a situazioni in cui il cliente chiede il backup giornaliero di una vecchia applicazione che risiede su di un server a cui è possibile accedere – per motivi insondabili – solo ed esclusivamente mediante FTP.

Detto tra noi: il cliente non ha quasi mai ragione, e lo dico per esperienza: lui guarda le cose da una prospettiva quasi sempre conservativa, anche e soprattutto quando le cose non vanno per niente bene. La filosofia del cliente tipo è molto spesso la seguente:  ha sempre funzionato, quindi funzionerà per sempre. O, peggio: ha sempre funzionato male, ma ha sempre funzionato, quindi funzionerà male ma funzionerà per sempre. Un sillogismo agghiacciante… Leggi il resto »