Mac Of Death

Ma Mac Minchia non è il sistema operativo piu’ stabile e innovativo presente oggi sul mercato ?
Ecco cosa è successo dopo aver inserito una chiavetta usb fat32… !!!

Controllo automatico updates al login

Per avere sempre sotto controllo lo stato degli aggioranmenti del mio server, ed averlo sempre sotto controllo facendomelo uscire nello script di logon come nella foto sopra, ho scritto questo semplice programma : updates

[sourcecode language=”bash”]
#!/bin/bash
#La prima condizione e’ sempre vera.

if [[ $(apt-get update 2>&1 | grep Hit) ]]; then
if [[ $(apt-get –simulate upgrade 2>&1 | grep Inst) ]]; then
apt-get –simulate upgrade | wc -l > /tmp/updates.txt
else
echo "No Updates available" > /tmp/updates.txt
fi
fi
[/sourcecode]

Se ci sono degli aggioranmenti disponibili scrivo in un file di testo il numero degli updates (wx -l ) in un file che per comodità viene posizionato in /tmp/updates.txt
Questo script non va eseguito ad ogni login per non appesantire la macchina visto che il controllo degli update fa un fetch di una serie di pagine web e svariati controlli che impegnano abbastanza il server a livello di I/O.
Meglio eseguirlo una volta sola, per questo è preferibile insierire questo script all’interno di /etc/cron.daily per lanciarlo una volta al giorno, piu’ che sufficiente.

A questo punto possiamo mettere all’interno del nostro script di loging l’otput di /tmp/updates.txt.
Io ho fatto così :

/etc/bash.bashrc :
[sourcecode language=”bash”]
if [ -f /tmp/updates.txt ];then echo -e "Updates Check :\t\t\t $(more /tmp/updates.txt)";fi
[/sourcecode]

Comprimere mysqldump al volo

Il risultato del mysqldump è un text file contentente le istruzioni sql usate per il restore di mysql.
Normalmente l’operazione di backup avviene in un secondo momento come ad esempio :

[sourcecode language=”text”]

gzip nomefile.sql

[/sourcecode]

Ecco un modo per fare la compressione al volo :

[sourcecode language=”text”]

mysqldump –opt (e tutte le vostre opzioni di backup) | gzip > nomefile.sql.gz

[/sourcecode]

Abiliatare l’audit dei file in samba

Per abilitare questa feature di Samba, molto dipendiosa dal punto di vista di I/O del disco dovrete abilitare vfs stackable modules, in particoalre il modulo extd_audit

Apriamo ed editiamo il file /etc/samba/smb.conf e modifichiamo il valore LogLevel secondo quello che abbiamo bisogno :

[sourcecode language=”text”]
Log Level Log Details – File and Directory Operations
0 Make Directory, Remove Directory, Unlink
1 Open Directory, Rename File, Change Permissions/ACLs
2 Open & Close File
10 Maximum Debug Level
[/sourcecode]

Editiamolo in questo modo :
[sourcecode language=”text”]
syslog = 0
to
syslog = 10
[/sourcecode]
ed aggiungiamo proprio sotto LogLevel :
[sourcecode language=”text”]
vfs object = extd_audit
[/sourcecode]

A questo punto samba inizierà a loggare tutte le operazioni fatte sulla nostra share samba.

Putty Connection Manager

Putty è uno di quei software fatti veramente bene (e tra l’altro esiste anche per linux, anche se io non lo uso). L’unico problema che ho riscontrato e` che dopo una mezz’ora di lavoro mi ritrovo completamente perso tra le finestre.

Una sola finestra con i tab, l connection manager messo su un tab verticale per accedere velocemente a tutte le connessioni registrate, la possibilita` di configurare la sessione di PuTTY anche dal punto di vista grafico.

Insomma se avete bisogno di accedere macchine linux da un OS Windows, PuTTY e` la soluzione, PuTTY Connection Manager e` la ciliegina sulla torta!

Per scaricarlo basta cliccare qui. Siccome PuTTY deve essere installato, il link per il download e` questo.

Controllare grandezza di una directory sotto Linux

Semplicemente

[sourcecode language=”bash”]
du -h
[/sourcecode]

Lo switch -h sta per “Human Readeble” e server per vedere la dimensione in Mega bytesinvece che in kilobytes.

Preferisco usare il comando in modo da vedere solo il peso della cartella madre senza andare a vedere il singolo peso di ogni sottocartella :
[sourcecode language=”bash”]
du -h –max-depth=1
[/sourcecode]

Static Route Ubuntu in if-up.d e Ottetti IP

Mi gasava molto l’idea che andando su Google e cercando “static route ubuntu” il primo risultato era un post che avevo scritto un mese fa.

Ho deciso quindi di raffinare la cosa “grezza” fatta un mese fa e con un po’ di tempo a disposizione ho scritto uno script in bash da inserire in /etc/network/if-up.d/ .

In questa particolare cartella ci son tutti gli script che partono quando un interfaccia è “salita”.

La particolarità di questo script è che parte solamente in presenza di una particolare rete, altrimenti evita di inserire la static route, questo perchè come nel caso del mio portatile ho bisogno di static diverse per reti diverse :

1. Create un file staticroute in /etc/network/if-up.d ( sudo touch etc/network/if-up.d/staticroute )
2. Dategli i permessi giusti : ( sudo chmod 777 staticroute )
3. Inserite lo script qui sotto tenendo customizzandovi i parametri che sono IPTOMATCH e OTTETTI ed ovvimante i gateway…

[sourcecode language=”bash”]
#!/bin/sh

#Luigi Molinaro
#Setto l ottetto da matchare ed il numero di ottetti
#ESEMPI :
#10.0.0.0
#IPTOMATCH=’10′
#OTTETTI=’1′
#
#192.168.1.0
#IPTOMATCH=’192.168.1′
#OTTETTI=’3′

IPTOMATCH=’10′
OTTETTI=’1′

#Prendo dal stdOut di ifconfig solo il primo ottetto dell IP da ogni interfaccia

IPOWL=$(/sbin/ifconfig eth0 | grep “inet addr:” | sed “s/^.*inet addr:\([0-9.]*\).*$/\1/” | cut -d . -f $OTTETTI)
IPOWL2=$(/sbin/ifconfig eth1 | grep “inet addr:” | sed “s/^.*inet addr:\([0-9.]*\).*$/\1/” | cut -d . -f $OTTETTI)

if [ "$IPOWL" = "$IPTOMATCH" ] || [ "$IPOWL2" = "$IPTOMATCH" ]; then
echo Adding Route 10.10.0.0 …
/sbin/route add -net 10.10.0.0 netmask 255.255.0.0 gw 10.1.1.50
echo Adding Route 10.11.0.0 …
/sbin/route add -net 10.10.0.0 netmask 255.255.0.0 gw 10.1.1.50
else
echo No Static Route to insert
fi

[/sourcecode]

se volete invece inserire una route statica non in base alla rete basta semplicemente inserire in staticroute :

[sourcecode language=”bash”]
/sbin/route add -net 10.10.0.0 netmask 255.255.0.0 gw 10.1.1.50
[/sourcecode]

Find & Replace sotto Linux

Siccome ogni volta che mi serve devo andarlo a cercare su internet, e siccome quasi tutti gli articoli sono veramente tosti e partono con le regular expression faccio un post molto molto semplice :

Come fare Find and Replace sotto Linux :

Esempio testo :

Ciao sono Luigi

sostitutiamo Luigi con Siffredi (Valeria ringrazia 🙂 )

[sourcecode language=”bash”]
sudo sed -i ‘s/Luigi/Siffredi/’ filedamodificare.txt
[/sourcecode]

Lo switch -i indica la modifica “in place”, ovvero sul file, senza avremmo la sostituzione in standard output per una redirezione (>) in un nuovo file ad esempio.

Aggiungere un nuovo disco sotto Linux

Vi potrebbe capitare di dover aggiungere un nuovo disco alla vostro fiammante server targato Linux.
Capita sempre piu’ spesso, soprattutto adesso che moltio sistemi operativi sono virtualizzati ed aggiungere un nuovo disco virtuale risulta essere molto piu’ semplice.

Andiamo subito al sodo :
Cerchiamo di individuare il tipo di disco appena creato :

[sourcecode language=”bash”]
sudo lshw -C disk
[/sourcecode]

Per vedere sopratuttto nell’output il valore del logical name :

[sourcecode language=”text”]
*-disk
description: SCSI Disk
product: Virtual disk
vendor: VMware
physical id: 0.0.0
bus info: [email protected]:0.0.0
logical name: /dev/sdb
version: 1.0
size: 60GiB (64GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=2 signature=0007ce28
[/sourcecode]

E come potete notare il logical name del nuovo disco è sdb.

Un ulteriore verifica sul nuovo disco da fare è quello di vedere le partizioni esistenti :

[sourcecode language=”bash”]
sudo fdisk -l
[/sourcecode]

Dovrebbe produrre un’output come questo ad esempio :

[sourcecode language=”text”]
Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0007ce28

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 7507 60299946 83 Linux
/dev/sdb2 7508 7832 2610562+ 5 Extended
/dev/sdb5 7508 7832 2610531 82 Linux swap / Solaris
[/sourcecode]

Nel mio caso ho 3 partizioni.

Posso procedere ora con una formattazione o montarlo direttamente.
Decidiamo di formattarlo e di creare partizione ext3.

Prima di tutto cancello tutte partizioni esistenti

[sourcecode language=”bash”]
sudo fdisk /dev/sdb
[/sourcecode]

Le opzioni che ci vengono restituite :

[sourcecode language=”text”]
Command (m for help): m <enter>
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help):
[/sourcecode]

Cancello le partizioni digitando d:
Cancello le partizioni :

[sourcecode language=”text”]
Partition number (1-4):
[/sourcecode]

Selezioni quali partizioni cancellare.

A questo punto creo quelle che ho bisogno digitando n:

[sourcecode language=”text”]
Command action
e extended
p primary partition (1-4)
[/sourcecode]

E scrivo le operazioni sul disco digitando w

[sourcecode language=”text”]
The partition table has been altered!
[/sourcecode]

Se non avete fatto stronzate siamo a buon punto… ve ne accorgete perchè potete ancora digitare sulla shell… se non riuscite a digitare sulla shell mi preoccuperei 🙂

Posso a questo punto creare la mia partizione in ext3 :
sudo mkfs -t ext3 /dev/sdb1

Creare un mount point : (es /disco2)

[sourcecode language=”bash”]
sudo mkdir /disco2
[/sourcecode]

E modificare il file /etsìc/fstab aggiungendo questa riga per far montare automaticamente il disco all’avvio :

[sourcecode language=”text”]
/dev/sdb1 /media/mynewdrive ext3 defaults 0 2
[/sourcecode]

Potete testare il corrento mount tramite il comando :

[sourcecode language=”bash”]
sudo mount -a
[/sourcecode]