mercoledì 11 febbraio 2009

Windows: spedire mail da eventtriggers

Script creato da Shane Rudy per spedire mail da eventtriggers.
(non ho avuto ancora modo di testarlo)
N.B.: utilzzare il parametro /ru

Trovate altre discussioni su questo argomento QUI

const cdoSendUsingPort = 2
const cdoAnonymous = 0
set msg = CreateObject("CDO.Message")
set config = CreateObject("CDO.Configuration")
set msg.Configuration = config
txt = ""

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'Application' and " _
& "Type = 'error'")
For Each objEvent in colLoggedEvents
txt = txt & objEvent.TimeWritten & vbCRLF & objEvent.ComputerName & vbCRLF & objEvent.Type & vbCRLF & _
objEvent.EventCode & vbCRLF & objEvent.Message & "http://eventid.net/display.asp?eventid" & _
vbCRLF & objEvent.User & vbCRLF & vbCRLF

Next

if txt <> "" then

txt = "The Following Application Errors Have Occurred on COMPUTERNAME: " & vbcrlf & vbCRLF & txt

else
Wscript.Quit(0)
end if

With msg
.to = """WhoEver""whoever@wherever.com "
.from = """WhoEver"" "
.subject = "Application Errors on ComputerName"
.textbody = txt
End with

prefix = "http://schemas.microsoft.com/cdo/configuration/"

With config.fields
.item(prefix & "sendusing") = cdoSendUsingPort
.item(prefix & "smtpserver") = "SMTPServer"
.item(prefix & "smtpauthenticate") = cdoAnonymous
.update
End With

on error resume next
msg.send
send_error = error.number
on error goto 0

if send_error <> 0 then
wscript.echo "Error Sending Your Message"
wscript.quit 0


end if

Windows: monitorare il RAID (o altri eventi di sistema)

Forse non tutti sanno che Windows (il 2003 se non altro) contiene un sistema di monitoraggio automatico degli eventi di sistema: eventtriggers

Per un help del comando digitate:
eventtriggers /?
e seguite le istruzioni.

Un banale trigger di monitoraggio del raid software di windows potrebbe essere il seguente:
eventtriggers /create /tr "RAID NOT OK" /ru "System" /L "System" /so dmboot
/tk "C:\comando.bat"

Dove comando.bat e' un file batch che sara' eseguito all'attivazione del trigger. Credo si possano usare anche file .cmd

E' poi possibile creare trigger piu' specifici utilizzando il parametro /EID che permette di specificare l'ID dell'evento. Segue una lista degli ID relativi alla gestione del RAID:

Event ID 1: "dmboot: Volume %2 (no mountpoint) started in failed redundancy mode."
Event ID 2: "dmboot: Volume %2 (%3) started in failed redundancy mode."
Event ID 3: "dmboot: Failed to start volume %2 (%3)"
Event ID 4: "dmboot: Failed to encapsulate selected disks"
Event ID 5: "dmboot: Disk group %2 failed. All volumes in the disk group are not available."
Event ID 6: "dmboot: Failed to auto-import disk group %2. All volumes in the disk group are not available."
Event ID 7: "dmboot: Failed to restore all volume mount points. All volume mount points may not be available. %2"

Event ID: 1, "dmio: Device %2,%3: Received spurious close"
Event ID: 2, "dmio: Failed to log the detach of the DRL volume %2"
Event ID: 3, "dmio: DRL volume %2 is detached"
Event ID: 4, "dmio: %2 error on %3 %4 of volume %5 offset %6 length %7"
Event ID: 5, "dmio: %2 %3 detached from volume %4"
Event ID: 6, "dmio: Overlapping mirror %2 %3 detached from volume %4"
Event ID: 7, "dmio: Kernel log full: %2 %3 detached"
Event ID: 8, "dmio: Kernel log update failed: %2 %3 detached"
Event ID: 9, "dmio: detaching RAID-5 %2"
Event ID: 10, "dmio: object %2 detached from RAID-5 %3 at column %4 offset %5"
Event ID: 11, "dmio: RAID-5 %2 entering degraded mode operation"
Event ID: 12, "dmio: Double failure condition detected on RAID-5 %2"
Event ID: 13, "dmio: Failure in RAID-5 logging operation"
Event ID: 14, "dmio: log object %2 detached from RAID-5 %3"
Event ID: 15, "dmio: check_ilocks: stranded ilock on %2 start %3 len %4"
Event ID: 16, "dmio: check_ilocks: overlapping ilocks: %2 for %3, %4 for %5"
Event ID: 17, "dmio: Illegal vminor encountered"
Event ID: 18, "dmio: %2 %3 block %4: Uncorrectable %5 error"
Event ID: 19, "dmio: %2 %3 block %4:\r\n Uncorrectable %5 error on %6 %7 block %8"
Event ID: 20, "dmio: Cannot open disk %2: kernel error %3"
Event ID: 21, "dmio: Disk %2: Unexpected status on close: %3"
Event ID: 22, "dmio: read error on object %2 of mirror %3 in volume %4 (start %5, length %6) corrected"
Event ID: 23, "dmio: Reassigning bad block number %2 on disk %3"
Event ID: 24, "dmio: Reassign bad block(s) on disk %2 succeeded"
Event ID: 25, "dmio: Fail to reassign bad block(s) on disk %2: error 0x%3"
Event ID: 26, "dmio: Found a bad block on disk %2 at block number %3"
Event ID: 27, "dmio: Corrected a read error during RAID5 initialization on %2"
Event ID: 28, "dmio: Failed to recover a read error during RAID5 initialization on %2: error %3"
Event ID: 29, "dmio: %2 read error at block %3: status 0x%4"
Event ID: 30, "dmio: %2 write error at block %3: status 0x%4"
Event ID: 31, "dmio: %2 write error at block %3 due to disk removal"
Event ID: 32, "dmio: %2 read error at block %3 due to disk removal"
Event ID: 33, "dmio: %2 is disabled by PnP"
Event ID: 34, "dmio: %2 is re-online by PnP"
Event ID: 35, "dmio: Disk %2 block %3 (mountpoint %4): Uncorrectable read error"
Event ID: 36, "dmio: %2 %3 block %4 (mountpoint %5): Uncorrectable read error"
Event ID: 37, "dmio: Disk %2 block %3 (mountpoint %4): Uncorrectable write error"
Event ID: 38, "dmio: %2 %3 block %4 (mountpoint %5): Uncorrectable write error"

Windows: se si rompe uno dei dischi in mirror (raid 1)

Tutte le operazioni di questo post vengono fatte in My computer -> Manage -> Disk management e si riferiscono al RAID 1 Software gestito direttamente da Windows.
In caso il vostro RAID sia di tipo Hardware (gestito dal controller) dovete fare riferimento alla documentazione del vostro controller e al suo software/firmware di gestione.

Situazione iniziale:

Disco 0: Dynamic (C)
Disco 1: Dynamic (C)

Analizziamo due diversi casi:

1) se si rompe il disco 1
2) se si rompe il dico 0 (disco su cui la macchina esegue il boot)

Se si rompe il disco 1:

Click destro su disco 1
Remove mirror
Selezionare disco 1
Remove disk
(spegnere la macchina se non si hanno dischi hotswap)
Sostituire il disco 1 con un disco nuovo
(Accendere la macchina se non si hanno dischi hotswap)
Click destro su disco 1
Convert to dynamic disk
Click destro su disco 0
Add mirror
Selezionare disco 1
Attendere la ricostruzione del mirror

Se si rompe il disco 0 (disco di boot)

Click destro su disco 0
Remove mirror
Selezionare disco 0
Remove disk
(spegnere la macchina se non si hanno dischi hotswap)
Sostituire il disco 0 con il disco 1 (oppure cambiare l'ordine di boot sul setup del BIOS)
Installare un nuovo disco
(Accendere la macchina se non si hanno dischi hotswap)
Click destro su disco 1
Convert to dynamic disk
Click destro su disco 0
Add mirror
Selezionare disco 1
Attendere la ricostruzione del mirror

martedì 10 febbraio 2009

Windows: attivare il raid software


- Aggiorno i dischi da base a dinamici (cliccare col dx sul riquadro sx)
- Cliccare con il dx sul disco di origine e scegli aggiungi mirror

Pulire la cache dei path della shell

Problema: eseguendo un comando da shell ricevete un misterioso errore.

$ foo
-bash: /usr/local/bin/foo: No such file or directory
$

E voi lo sapete bene che il comando foo non si trova in /usr/local/bin: come
convincere anche il vostro sistema di cio'?

E' sufficiente lanciare il comando:
hash -r

Questo se utilizzate la shell bash. Un metodo piu' generale, valido anche per
le altre shell, e' il comando seguente:

PATH=$PATH

In entrambi i casi viene ripulita la cache che consente alla shell di velocizzare la ricerca dei comandi piu' usati all'interno del PATH di sistema.

Se l'ignoranza di Firefox continua

Se dopo la reinstallazione del post precedente riuscite a far partire Firefox solo lanciandolo come firefox-3.0 e cliccando su un qualsiasi URL (ad esempio contenuto in una mail) non riuscite ad aprirlo con Firefox forse e' il caso di aggiustare i link relativi a Firefox sul vostro sistema.

Eseguite i comandi seguenti:
sudo rm /usr/bin/firefox
sudo dpkg-divert --rename --remove /usr/bin/firefox
sudo apt-get install --reinstall firefox

lunedì 9 febbraio 2009

Firefox dice che il plugin Flash non e' installato: NON CREDETEGLI

In effetti voi lo avete gia' installato, forse piu' volte di seguito.
Poi forse lo avete disinstallato e reinstallato.
Poi forse lo avete disinstallato, rimosso o rinominato la cartella ~/.mozilla, e reinstallato.

Niente da fare....firefox continua a lamentarsi e a dirvi di installare il plugin.

Anche andando sulla pagina "about:plugins" probabilmente non vedrete nulla di interessante.

2 soluzioni possibili (vedete un po' voi se almeno una risolve il vostro problema):

Caso 1

Problema: mancano alcuni link simbolici
Soluzione: digitare i seguenti comandi a linea di comando:
cd /usr/lib
sudo ln -s libsmime3.so.1d libsmime3.so
sudo ln -s libssl3.so.1d libssl3.so
sudo ln -s libnss3.so.1d libnss3.so

Caso 2

Forse avete fatto troppi esperimenti con troppe versioni diverse di firefox.
Eseguire il seguente comando:
sudo apt-get remove firefox*

Cancellate tutti i file relativi a firefox che trovate sparsi sul vostro hard disk
Eseguire il seguente comando:
sudo apt-get install firefox-3.0

domenica 8 febbraio 2009

Connettersi a un volume iSCSI da Debian e Ubuntu


Questo post e' basato sulla traduzione e integrazione di un articolo scritto da Vivek Gite e da un articolo scritto da Vide.


Q. Come si formatta e ci si connette a un volume iSCSI sotto Debian / Ubuntu Linux?

A. Dovete installare il pacchetto open-iscsi package per una implementazione iSCSI sotto Debian / Ubuntu Linux. Questo pacchetto e' anche conosciuto come Linux Open-iSCSI Initiator. E' necessario utilizzare un sistema Linux con versione di kernel2.6.16, o superiore. Seguira' un post con le istruzioni specifiche per REHL 5 / CentOS 5 / Fedora Linux.

Installare Open-iSCSI Initiator

Digitate il comando seguente a terminale:
$ sudo apt-get install open-iscsi
Rimuovere gli init script che, almeno in etch, non sono configurati proprio al meglio e causano kernel panic in fase di shutdown e conseguente emicrania al sistemista :)
update-rc.d -f open-iscsi remove


Configurazione di Open-iSCSI

E' necessario creare due link simbolici con i seguenti comandi:
ln -s /etc/iscsid.conf /etc/iscsi/
ln -s /etc/initiatorname.iscsi /etc/iscsi/


I file di configurazione potrebbero essere /etc/iscsi/iscsid.conf o ~/.iscsid.conf.
Aprite il file /etc/iscsi/iscsid.conf:
# vi /etc/iscsi/iscsid.conf


Settare node.session.auth.username, node.session.auth.password and altri parametri come segue:
node.startup = automatic
node.session.auth.username = MY-ISCSI-USER
node.session.auth.password = MY-ISCSI-PASSWORD
discovery.sendtargets.auth.username = MY-ISCSI-USER
discovery.sendtargets.auth.password = MY-ISCSI-PASSWORD
node.session.timeo.replacement_timeout = 120
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval = 10
node.conn[0].timeo.noop_out_timeout = 15
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536


Salvare e chiudere il file. Eseguire un restart del servizioopen-iscsi:
# /etc/init.d/open-iscsi restart


Eseguite un discovery diretto all'host target iscsi:
# iscsiadm -m discovery -t sendtargets -p ISCSI-SERVER-IP-ADDRESS


Se l'indirizzo IP del server iSCSI fosse 192.168.1.60, digitate:
# iscsiadm -m discovery -t sendtargets -p 192.168.1.60


Segnatevi l'identificativo (qualcosa come iqn.2001-05.com.doe:test) trovato dal discovery precedente. Vi servira' per eseguire il login e connettervi all'host iSCSI:
# iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.60:3260 --login


Eseguire un nuovo restart del servizioopen-iscsi:
# /etc/init.d/open-iscsi restart


Formattare il volume iSCSI

Ora dovreste vedere un nuovo drive sul sistema, ad esempio /dev/sdc. Potete cercare il nome del nuovo device sul file /var/log/messages.

# tail -f /var/log/messages

Se il nome del device appena creato e' /dev/sdc, digitate il seguente comando per creare una o piu' partizioni:
# fdisk /dev/sdc

Formattate la partizione creata:
# mkfs.ext3 /dev/sdc1

Montate il filesystem:
# mkdir /mnt/iscsi
# mount /dev/sdc1 /mnt/iscsi

Se e' tutto a posto, potete istruire il vostro sistema per attivare al boot l'initiator iSCSI e montare in automatico i volumi iSCSI. Aggiungete al file /etc/fstab una riga come la seguente:
/dev/sdc1 /mnt/iscsi ext3 defaults,auto,_netdev 0 0
Risolvere i problemi di boot / shutdown sotto etch Debian Linux

Aprite il file /etc/network/nterfaces e aggiungete le righe seguenti alla definizione dell'interfaccia di rete che utilizzate per montare i volumi iSCSI:
post-up echo “Waiting for network to come up before starting iSCSI…” && sleep 5
post-up /etc/init.d/open-iscsi start
pre-down umount -a -O _netdev
pre-down /etc/init.d/open-iscsi stop

Questo per ovviare alla cancellazione degli init script eseguita all'inizio del post.
Aprite il file /etc/default/rcS e verificate che contenga la riga seguente:
ASYNCMOUNTNFS=no

Questa disabilita il mount asincrono, che teoricamente dovrebbe funzionare meglio, ma in pratica non funziona poi cosi' bene su Debian Etch quando si ha a che fare con iSCSI.
Per evitare che il sistema killi la connessione iSCSI prima che i volumi siano smontati, occorre modificare l'ordine di esecuzione di alcuni script relativi agli init level 0 e 6 (halt e reboot):
mv /etc/rc6.d/S20sendsigs /etc/rc6.d/S39sendsigs
mv /etc/rc0.d/S20sendsigs /etc/rc0.d/S39sendsigs

Commenti finali:
Ho testato il workaround presentato per risolvere i problemi di iSCSI con Debian Etch. Funziona bene in fase di reboot/halt. Per quanto riguarda la fase di boot, ancora non sono riuscito ad eseguire il mount in automatico, mentre non ci sono problemi per la connessione dell'initiator al target iSCSI. In pratica eseguendo un semplice:
mount -a

al termine della fase di boot, i volumi iSCSi vengono montati senza problemi. Vedremo nei prossimi giorni come ovviare a questo problema.


iSCSI: breve memorandum comandi principali


Ricerca di target iSCSI
iscsiadm -m discovery -t sendtargets -p IP_ADDRESS_TARGET_HOST

Connessione a due target iSCSI trovati con la funzione discovery
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.443265eb3772 --portal IP_ADDRESS_TARGET_HOST:3260 --login
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.ad5d57e433f3 --portal IP_ADDRESS_TARGET_HOST:3260 --login

Attivazione connessioni a target
/etc/init.d/open-iscsi restart
N.B.: ad attivazione avvenuta verificare su /var/log/messages i device associati

Disconnessione da target connesso erroneamente
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.ad5d57e433f3 --portal IP_ADDRESS_TARGET_HOST:3260 --op=delete

N.B.: La disconnessione (come la connessione) deve essere seguita da un restart.

Openfiler: utente amministratore di default

L'utente amministratore di default del sistema Openfiler e'
openfiler

Per modificare la sua password occorre loggarsi sul server Openfiler e utilizzare il comando:
passwd openfiler

dns bind9: modifica zona con dynamic update

Se state aggiornando dinamicamente il vostro DNS tramite dynamic update (ad esempio, ogni volta che una macchina ottiene un indirizzo IP dal server DHCP della vostra rete), dovete fare attenzione nel caso vogliate modificare manualmente il file di definizione di una zona (ad esempio per inserire i riferimenti a un nuovo server).

I dynamic update infatti utilizzano un file .jnl (journal) in cui tengono traccia delle loro modifiche alla zona. Prima di modificare la zona manualmente dovete disabilitare il file di journal con il comando:
rndc freeze NOME_ZONA

Dopo aver completato le modifiche dovete riattivare il file di journal con il comando:
rndc unfreeze NOME_ZONA

dovecot non parte al boot?

Dovecot e' un server di posta che gestisce caselle di tipo mbox e Maildir.

Se lanciando
/etc/init.d/dovecot start

il server non va in esecuzione, ma parte correttamente se vi limitate a digitare il comando
dovecot

dovete fare una piccola modifica al file di configurazione /etc/dovecot/dovecot.conf:

La linea che comincia con #protocols deve essere decommentata rimuovendo il carattere '#'

Spiegazione

Secondo le istruzioni, le righe commentate sul file di configurazione mostrano i valori di default, quindi non e' necessario decommentarle se vogliamo mantenere quei valori.

Purtroppo il file /etc/init.d/dovecot, che si occupa di eseguire il server dovecot al boot, cerca la linea protocols non prceduta dal carattere '#', se non la trova, la procedura di esecuzione viene interrotta.

Horde imp: login failed

Verificare che il server IMAP sia partito, ad esempio con il comando seguente:
telnet IP_IMAP_SERVER 143

sabato 7 febbraio 2009

Horde imp: configurazione

Questo file contiene le configurazioni del sistema di webmail Horde IMP:
/var/www/horde-webmail/config/conf.php

Ad esempio, utente e password per accedere al database SQL che gestisce il tutto.

Il punto finale nei nomi di dominio

Per la serie "i grandi dilemmi dell'umanita'" puo' capitare di dimenticare le situazioni in cui il nome di dominio (stiamo parlando di DNS) deve essere seguito da un punto (.).

Un piccolo promemoria:

  • Usate il punto finale nei nomi di dominio nei file:

    hosts
    hosts.rev
    named.ca
    named.local

    In questi file un nome valido di dominio potrebbe essere:
    marketing.dominio.com.

  • Non usate il punto finale nei nomi di dominio nei file

    named.boot
    resolv.conf

    In questi file il nome corretto sarebbe:
    marketing.dominio.com

VMware server remote console: problemi con tastiera


Uno scomodo problema se usate la console remota di VMware server 2.0. Si tratta di un plugin per firefox che vi permette di accedere alle console delle virtual machine.

In pratica alcuni tasti, e soprattutto le frecce, non funzionano su certe combinazioni di firefox/sistema operativo.

Nel mio caso Firefox 3 / Ubuntu 8.10. Me n'ero accorto installando una VM con debian, non mi era possibile muovere con le frecce il cursore per selezionare tastiera, localizzazione, timezone, ecc ecc.

Ho installato Ubuntu 8.04 in un'altra partizione del mio portatile e il problema non si presentava, aggiornando il sistema alla 8.10 si tornava nel delirio precedente :(

Per fortuna una soluzione c'e', bisogna inserire questa riga nel file ~/.vmware/config (/etc/vmware/config se volete correggere il problema per tutti gli utenti del sistema):
xkeymap.nokeycodeMap = true

venerdì 6 febbraio 2009

Numero versione modulo: modinfo eth0 e ethtool -i eth0 non sono d'accordo


Ho appena aggiornato il modulo della scheda ethernet Intel Gigabit 82566 pero' lanciando i seguenti comandi (entrambi dovrebbero rivelarmi la versione del modulo utilizzato) ottenevo risultati diversi:

Per vedere che modulo sta usando l'interfaccia eth0:

ethtool -i eth0


driver: e1000
version: 7.1.9
firmware-version: 1.1-0
bus-info: 0000:00:19.0

Verifichiamo la versione del modulo installata sul sistema:

modinfo e1000 | grep ^version

version: 8.0.9-NAPI

Le versioni di modulo mostrate sono differenti. E non solo, in fase di configurazione (vedere prossimamente sul post non ancora pubblicato), si e' detto al sistema di caricare il nuovo modulo e1000e al posto del modulo e1000 (il primo e' per schede su bus PCI-E, il secondo per PCI) ma di lui non c'e' traccia (dovrebbe essere mostrato da ethtool)

Per sistemare le cose e' necessario aggiornare l'initramfs con il seguente comando:
update-initramfs -u

Dopo il reboot verifichiamo la consistenza dei dati riportati dai comandi eseguiti all'inizio del post:

ethtool -i eth0

driver: e1000e
version: 0.5.11.2-NAPI
firmware-version: 1.1-0
bus-info: 0000:00:19.0

modinfo e1000e | grep ^version


version: 0.5.11.2-NAPI

Finalmente :)