Immagine
 18 - Caraffa (CZ)... di DrCrocco
 
"
I realized life was a game
The more seriously I took things
The harder the rules became

D. Mustaine
"
 
  Home| Chi Sono| Contatti| |La Ricetta
 
Di seguito tutti gli interventi pubblicati sul sito, in ordine cronologico.

Di vittorio (del 01/12/2008 @ 21:52:54, in Sistemi, linkato 341 volte)

Qualche giorno fa ho eseguito l'upgrade a FC10 su un server ldap. Più precisamente si tratta di una versione di Openldap con db Berkley.

Dopo l'aggiornamento il servizio non partiva per via di una incompatibilità con il db e lo script di avvio terminava con il seguente errore:

[root@server ~]# service ldap start
Checking configuration files for slapd:                    [FAILED]
bdb(dc=localdomain): Program version 4.6 doesn't match environment version 4.4
bdb_db_open: database "dc=tr1" cannot be opened, err -30972. Restore from backup!
backend_startup_one: bi_db_open failed! (-30972)
slap_startup failed (test would succeed using the -u switch)
stale lock files may be present in /var/lib/ldap           [WARNING]

A questo punto ho aperto un thread su fedoraforum.org

Su suggerimento dei ragazzi del forum ho fatto una ricerca su Internet alla ricerca di un modo che mi indicasse come fare la conversione del db (l'alternativa era installare una versione precedente del Berkley DB).

Dopo una decina di minuti sono approdato sul link http://www.oracle.com/technology/documentation/berkeley-db/db/ref/upgrade/process.html

Seguendo le istruzioni riportate mi sono accorto di dover semplicemente eseguire un check sul db per renderlo "compatibile" con la nuova versione.

In realtà Fedora è dotato di un comando apposito per il check del db di ldap (slapd_db_chekpoint) così ho evitato di installare il pacchetto db4-util contenente il necessario.

Di seguito riporto i comandi impartiti che mi hanno consentito di risolvere il problema:

slapd_db_checkpoint -1 -h /var/lib/ldap
chown -R ldap.ldap /var/lib/ldap/*

Alla prossima.

Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 30/11/2008 @ 00:35:01, in Sistemi, linkato 193 volte)

Ieri sera ho aggiornato alcune macchine (server) a Fedora Core 10. Poichè questi sistemi sono dotati solo di un lettore CD ho preferito utilizzare l'installazione da rete.
A tale scopo ho scaricato e masterizzato solo il file Fedora-10-i386-netinst.

Diversamente dagli altri cd, questo non ha l'opzione per una installazione testuale (text mode).

Purtroppo nel mio caso non era possibile procedere in ambiente visuale, così mi sono dato da fare per far girare anaconda in modalità testo.

Quando compare il menù d'avvio del cdrom è possibile premere il stato TAB per accedere alla stringa di avvio di linux.

E' bastato aggiungere la parola "text" (senza apici) alla fine della stringa di avvio per risolvere il problema.

Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 26/11/2008 @ 01:34:32, in Sistemi, linkato 465 volte)
Non so quanto possa essere legale, ma mentre ero alla ricerca di una serie di plug-in per BartPe mi sono imbattuto in questo link.

In pratica esiste una Patch pubblicata da sala*source con la quale è possibile ovviare al limite imposto da Windows XP Professional che consente una sola sessione utente per volta.

Per saperne di più:
http://www.kood.org/terminal-server-patch/
Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 22/11/2008 @ 22:28:06, in Blog, linkato 136 volte)

Oggi è una data particolare. E'  trascorso un anno da quando ho scritto il primo articolo su questo blog.

Da allora non ho fatto tanta strada ma non mi posso assolutamente lamentare.

In un anno ho scritto una trentina di articoli che sono stati letti più di diecimila volte (non male considerando che almeno 9 volte su 10 sul blog bazzico io).

Sono stati lasciati 24 commenti (pochi) e tante email in posta elettronica.
Alla fine, qualcuno ha anche risolto il proprio problema (wow).

Volevo dunque ringraziare tutti i navigatori che si sono imbattuti in questo blog per un motivo o per un altro e concludo salutando un navigatore anonimo che è incappato qui per mezzo della seguente ricerca inoltrata su Google:

cella diventa verde.

Grazie a tutti.

Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 13/11/2008 @ 21:27:34, in Network, linkato 279 volte)

Nei precedenti articoli di questo blog si è parlato di come sfruttare il protocollo wol ed il comando ping di windows per gestire l'accensione e lo spegnimento di un computer remoto.

Poichè si è fatto uso di script a riga di comando, ho ricevuto alcune email in cui viene richiesta una possibile soluzione "a finestre".

Purtroppo il mio tempo a disposizione non è molto ma sfruttando comunque il linguaggio di scripting (vbscript) sono riuscito a fare un piccolo applicativo in grado di mostrare lo stato (acceso/spento) di computer appartenenti alla stessa rete con la possibilità di usare il protocollo wol nel caso in cui questi risultassero spenti.

L'esempio che segue consiste in una pagina html di tipo Microsoft (R) HTML Application host (con estensione hta)

 


<HTML>
<HEAD>
<TITLE>Pannello di Controllo</TITLE>

<HTA:APPLICATION
     ID="objPannello"
     APPLICATIONNAME="Pannello di Controllo"
     SCROLL="No"
     SINGLEINSTANCE="yes"
>

<SCRIPT LANGUAGE="VBScript">
<!--
  option Explicit
  dim strTR
  dim aServer(5)

  aServer(0)="tizio.local"
  aServer(1)="caio.local"
  aServer(2)="sempronio.local"
  aServer(3)="cesare.local"
  aServer(4)="cleopatra.local"
  aServer(5)="antonio.local"
  
  strTR="<tr>" & _
    "<td>+SERVERNAME+</td>" & _
    "<td>+STATUS+</td>" & _
    "<td>+COMMAND+</td>" & _
    "</tr>"

  

  function ServerView(ServerName)

    dim objShell, objExec
    dim strPingResult
  
    Set objShell = CreateObject("WScript.Shell")
    Set objExec = objShell.Exec("ping -n 2 -w 1000 " & ServerName)

    strPingResult = UCase(objExec.StdOut.ReadAll)
    
    ServerView= ( CBool(InStr(UCase(strPingResult), " TTL=")))

  end function


  function ServerCommand(ServerName)
    dim objShell
    Set objShell = CreateObject("WScript.Shell")  
    objShell.run("wol.bat " & replace(ServerName,".local",""))

  end function

-->

</SCRIPT>
</HEAD>
<BODY >
<H3>Pannello di Controllo</H3>
<HR>
<FORM NAME="ValidForm">  

<table width="100%">
<tr>

<td width="50%"><b>Server</b></td>
<td width="20%"><b>Status</b></td>

<td width="30%"><b>Comandi</b></td>

</tr>

<SCRIPT LANGUAGE="VBScript">
<!--
  dim Ciclo
  dim strOutPut, strServerStatus

  dim blserverStatus

  Self.ResizeTo 575,475

  for Ciclo=lbound(aServer) to ubound(aServer)
    blServerStatus=ServerView(aServer(Ciclo))
    if blServerStatus then
      strServerStatus="ON"
      strCommand="Attivo"
    else
      strServerStatus="OFF"
      strCommand="<INPUT onclick='ServerCommand(""" & aServer(Ciclo) & """)' NAME='" & aServer(Ciclo) & "' TYPE='BUTTON' VALUE='Attiva'>"
      'msgbox "<INPUT onclick='ServerCommand(""" & aServer(Ciclo) & """)' NAME='" & aServer(Ciclo) & "' TYPE='BUTTON' VALUE='Attiva'>"
    end if
    strOutput= replace(strTR,"+SERVERNAME+",aServer(Ciclo))
    strOutput= replace(strOutput,"+STATUS+",strServerStatus)
    strOutput= replace(strOutput,"+COMMAND+",strCommand)  

    document.write strOutput
  next

-->
</script>


</table>
<hr>
<INPUT NAME="Submit" TYPE="BUTTON" VALUE="Aggiorna" onclick="Location.Reload(True)">
</FORM>
</BODY>
</HTML>


Potete nominare questo file come volete, purchè mantenga l'estensione hta, altrimenti windows non ne consentirà l'esecuzione.

Prima di concludere volevo ricordare che per maggiori informazioni sul wol, potete dare una occhiata questo articolo.

Alla prossima.

Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 13/11/2008 @ 01:09:09, in Network, linkato 916 volte)

Tempo fa ho pubblicato un articolo nel quale si fa uso del comando ping per capire se un computer è acceso oppure no.

Purtroppo il comando ping di windows, almeno nella versione in mio possesso, non ha una gestione degli ERRORLEVEL in uscita; in pratica alla fine della esecuzione, restituisce sempre il medesimo valore, sia che il ping abbia successo o meno, rendendo vane le possibilità di impiegarlo all'interno di uno script.

Di seguito presento un breve listato scritto in vbscript che esegue il comando ping e restituisce un codice di errore in modo da poterlo sfruttare all'interno di un file batch dos.

'######################################
'ServerPing.vbs ver 1.0
'di Benintende Vittorio

'Questo software viene rilasciato sotto
'licenza GPL e senza garanzia alcuna.
'######################################


'Il seguente codice esegue un Ping e tiene
'traccia dell'output generato per capire
'l'esito del comando.

'Poichè quando il comando va a buon fine
'contiene sempre il TTL del pacchetto
'inviato, se l'output contiene "TTL=" nella
'sequenza di caratteri allora si presume che
'il ping abbia raggiunto la destinazione.

'Di seguito due esempi esplicativi:

'Esempio 1:
'Esecuzione di Ping 192.168.0.1 con 32 byte di dati:


'Risposta da 192.168.1.20: Host di destinazione irraggiungibile.
'Risposta da 192.168.1.20: Host di destinazione irraggiungibile.
'Risposta da 192.168.1.20: Host di destinazione irraggiungibile.
'Richiesta scaduta.

'Statistiche Ping per 192.168.0.1:
'    Pacchetti: Trasmessi = 4, Ricevuti = 3, Persi = 1 (25% persi),
'Tempo approssimativo percorsi andata/ritorno in millisecondi:
'    Minimo = 0ms, Massimo =  0ms, Medio =  0ms


'Esempio 2:
'Esecuzione di Ping 192.168.0.1 con 32 byte di dati:


'Risposta da 192.168.0.1: byte=32 durata=73ms TTL=64
'Risposta da 192.168.0.1: byte=32 durata=87ms TTL=64
'Risposta da 192.168.0.1: byte=32 durata=103ms TTL=64
'Risposta da 192.168.0.1: byte=32 durata=68ms TTL=64


'Statistiche Ping per 192.168.0.1:
'    Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi),
'Tempo approssimativo percorsi andata/ritorno in millisecondi:
'    Minimo = 68ms, Massimo =  103ms, Medio =  82ms

option explicit

dim strMyComputer
Dim objExec, objArgs, objShell
Dim strPingResults
dim lngPos


'command line
Set objArgs = WScript.Arguments

For lngPos = 0 to objArgs.Count - 1    
   Select Case UCase(objArgs(lngPos))
      Case Else
         if cbool(len(trim(objArgs(lngPos)))) then strMyComputer=objArgs(lngPos)
   End Select

Next

If not cbool(len(Trim(strMyComputer))) then wscript.quit(100)

Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping -n 2 -w 1000 " & strMyComputer)

strPingResults = UCase(objExec.StdOut.ReadAll)

wscript.quit(Not CBool(InStr(UCase(strPingResults), " TTL=")))

 

Per pingare l'indirizzo IP 192.168.0.1 da console ad esempio è sufficiente impartire la seguente istruzione:

cscript ServerPing.vbs 192.168.0.1

Ad esempio è possibile utilizzare il precedente script per accedere a condivisioni di rete solo quando queste sono raggiungibili:

::
:: abilita gli shares se i server sono attivi
::


@ECHO OFF
SET LOGFILE="%APPDATA%\_share.log"
SET DOMAIN=miodominio
SET SERVER1=tizio
SET SERVER2=caio
SET SERVER3=sempronio

ECHO ---------- >> %LOGFILE%
DATE /T >> %LOGFILE%
TIME /T >> %LOGFILE%
ECHO Looking for shares at %SERVER1% >> %LOGFILE%

cscript ServerPing.Vbs %SERVER1%.%DOMAIN% >NUL 2>&1

IF ERRORLEVEL 0 GOTO SETSERVER1
GOTO SERVER2

:SETSERVER1
ECHO Try to mount M: Drive (share1 on %SERVER1%) >> %LOGFILE%
NET USE M: \\%SERVER1%.%DOMAIN%\share1 >NUL 2>&1
ECHO Exit with error %ERRORLEVEL% >> %LOGFILE%

ECHO Try to mount L: Drive (share_nascosto$ on %SERVER1%) >> %LOGFILE%
NET USE L: \\%SERVER1%.%DOMAIN%\share_nascosto$ >NUL 2>&1
ECHO Exit with error %ERRORLEVEL% >> %LOGFILE%

ECHO Try to mount N: Drive (foto on %SERVER1%) >> %LOGFILE%
NET USE N: \\%SERVER1%.%DOMAIN%\foto >NUL 2>&1
ECHO Exit with error %ERRORLEVEL% >> %LOGFILE%


:SERVER2
ECHO Looking for shares at %SERVER2% >> %LOGFILE%

cscript ServerPing.Vbs %SERVER2%.%DOMAIN% >NUL 2>&1

IF ERRORLEVEL 0 GOTO SETSERVER2
GOTO SERVER3

:SETSERVER2
ECHO Try to mount O: Drive (share1 on %SERVER2%) >> %LOGFILE%
NET USE O: \\%SERVER2%.%DOMAIN%\share1 >NUL 2>&1
ECHO Exit with error %ERRORLEVEL% >> %LOGFILE%

:SERVER3

IF %COMPUTERNAME%==%SERVER3% GOTO GOEXIT

ECHO Looking for shares at %SERVER3% >> %LOGFILE%

cscript ServerPing.Vbs %SERVER3%.%DOMAIN% >NUL 2>&1

IF ERRORLEVEL 0 GOTO SETSERVER3
GOTO GOEXIT

:SETSERVER3
ECHO Try to mount P: Drive (Share1 on %SERVER3%) >> %LOGFILE%
NET USE P: \\%SERVER3%.%DOMAIN%\share1 >NUL 2>&1
ECHO Exit with error %ERRORLEVEL% >> %LOGFILE%

:GOEXIT

SET LOGFILE=
SET DOMAIN=
SET SERVER1=
SET SERVER2=
SET SERVER3=

Con questo ho finito.
Alla prossima. 

Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 30/10/2008 @ 00:12:54, in Network, linkato 618 volte)
Se vuoi sapere qual'è il tuo indirizzo IP sulla rete in questo momento, te lo dico io:



Di seguito il codice asp utilizzato per raccogliere questa informazione:

<html>
<body>
<%
Dim myIP

myIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If myIP="" Then myIP = Request.ServerVariables("REMOTE_ADDR")
response.write "Il tuo è: " & myIP & "."
%>
</body>
</html>
Articolo (p)Link Commenti Commenti (1)  Storico Storico  Stampa Stampa
 
Di vittorio (del 23/10/2008 @ 00:01:10, in Network, linkato 987 volte)

Fare qualcosa per l'ambiente e per i portafoglio è possibile. Ci sono diverse aziende di piccole e medie dimensioni, come anche liberi professionisti e piccoli uffici, in cui la tecnologia non ha una presenza molto invasiva.
A volte ad esempio, i servizi di stampa, condivisione file, accesso ad Internet non sono necessari 24 ore su 24. Alcune periferiche vanno in stand-by dopo qualche minuto ma altre restano attive fino al loro spegnimento.

Mi è capitato di vedere spesso negli uffici, computer che restano accesi molte ore perchè "qualcuno potrebbe avere bisogno di prelevare un file". Forse questo articolo può essere utile a chi vuole sfruttare la moderna tecnologia per risparmiare sui consumi energetici salvaguardando l'ambiente.

Da diversi anni ormai, molte periferiche connesse alle rete locale, come ad esempio: stampanti di rete, computer, modem adsl,... supportano il Wake On Lan (WOL); uno standard ethernet in grado di attivare le periferiche on demand (a richiesta) mediante l'invio di un pacchetto di dati detto "Magic Packet".
Mediante questo standard è possibile ad esempio avviare un computer in remoto, senza doversi recare fisicamente sul posto. WOL funziona anche attraverso Internet, quindi è possibile accendere in computer da qualunque parte del mondo, purchè il computer "dormiente" sia connesso alla rete mediante una periferica compatibile con lo standard.

Nell'esempio che seguirà, ipotizziamo di avere tre server ed uno o più client interconnessi alla medesima rete locale. Per comodità supponiamo che la rete abbia il seguente range di indirizzi IP:

192.168.0.1/24

Per chi non avesse dimestichezza con quanto indicato sopra, in questo esempio supponiamo che gli indirizzi della rete locale varino da 192.168.0.1 a 192.168.0.254.

Cosa fondamentale per utilizzare WOL è la conoscenza degli "indirizzi fisici" assegnati alle periferiche di rete. Questi indirizzi si chiamano MAC Address (Media Access Control Address) e servono ad identificare univocamente l'hardware connesso alla rete.
In effetti, un indirizzo IP viene assegnato al computer dal sistema operativo in uso, ma la consegna effettiva a livello hardware (chiamato strato fisico) avviene tramite il MAC address. Ad esmpio, ogni volta che un computer invia un pacchetto all'indirizzo 192.168.0.1, lo switch (o altra periferica dedicata alla consegna del pacchetto) controlla in una apposita tabella a quale indirizzo fisico corrisponde l'indirizzo 192.168.0.1.

Identificare il MAC address di un computer è cosa molto semplice. Per gli utilizzatori di Windows è sufficiente impartire il seguente comamdo dal prompt dos:

ipconfig /all

Dovreste ottenere un output simile a questo:

Configurazione IP di Windows
        Nome host . . . . . . . . . . . . . . : WORKSTATION_1
        Suffisso DNS primario  . . . . . . .  : retelocale.loc
        Tipo nodo . . . . . . . . . . . . . .  : Ibrido
        Routing IP abilitato. . . . . . . . . : No
        Proxy WINS abilitato . . . . . . . .  : No
        Elenco di ricerca suffissi DNS. . . . : retelocale.loc

Scheda Ethernet Connessione alla rete locale (LAN):
        Suffisso DNS specifico per connessione: retelocale.loc
        Descrizione . . . . . . . . . . . . . : Broadcom NetLink (TM) Gigabit Ethernet
        Indirizzo fisico. . . . . . . . . . . : 00-17-18-4C-22-D0
        DHCP abilitato. . . . . . . . . . . . : Sì
        Configurazione automatica abilitata   : Sì
        Indirizzo IP. . . . . . . . . . . . . : 191.168.0.2
        Subnet mask . . . . . . . . . . . . . : 255.255.255.0
        Gateway predefinito . . . . . . . . . : 191.168.0.1
        Server DHCP . . . . . . . . . . . . . : 191.168.0.1
        Server DNS . . . . . . . . . . . . .  : 191.168.0.1
        Lease ottenuto. . . . . . . . . . . . : mercoledì 10 ottobre 2009 9.27.34
        Scadenza lease . . . . . . . . . . .  : giovedì 23 ottobre 2009 9.27.34

Scheda Ethernet Connessione rete senza fili:
        Stato supporto . . . . . . . . . . . : Supporto disconnesso
        Descrizione . . . . . . . . . . . . . : Intel(R) PRO/Wireless 3945ABG Network Connection
        Indirizzo fisico. . . . . . . . . . . : 00-20-D3-66-D9-E5

 

Per gli utenti di Linux esiste un comando simile:

ifconfig

Con un output del tutto simile a questo:

eth0      Link encap:Ethernet  HWaddr 00:20:C5:2E:F2:33
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2238 errors:0 dropped:0 overruns:0 frame:0
          TX packets:740 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:208462 (203.5 KB)  TX bytes:233284 (227.8 KB)
          Interrupt:7 Base address:0xf00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:58 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5663 (5.5 KB)  TX bytes:5663 (5.5 KB)
 

Abilitare WOL
Tutte le moderne schede madri (mainboard) offrono il supporto a WOL, specie se la scheda di rete è integrata. Che io ricordi anche alcuni Pentium II sono dotati di questo supporto.

Il fatto che il computer supporti lo standard non vuol dire però che questo sia attivo. Per verificare/attivare questa opzione è necessario accedere al BIOS (fare riferimento al manuale della scheda madre oppure lasciare un post su questo articolo). Una volta abilitato il WOL è necessario verificare che il sistema operativo gestisca correttamente lo spegnimento delle periferiche durante lo shutdown. Se il sistema operativo dovesse spegnere completamente il computer, questi non risponderebbe al magic packet anche se nel bios l'opzione WOL fosse attiva. E' come staccare la presa di alimentazione lasciando il PC senza corrente.

Gli utenti di Windows non devono preoccuparsi perchè, che io sappia, tutte le moderne versioni del sistema operativo di Microsoft consentono alla scheda madre di tenere "accese" le schede di rete qual tanto che basta per ricevere il magic packet.

Per gli utenti Linux bisogna fare un po' di attenzione. Il kernel di solito è compatibile con il WOL ma le impostazioni necessarie per istruire il kernel di "alimentare la scheda di rete anche dopo lo shutdown" si perdono ad ogni riavvio.
Per questo motivo è necessario istruire il kernel prima di spegnere la macchina. Il parametro che attiva il WOL su linux è il seguente:

/sbin/ethtool -s eth0 wol g

Il parametro "g" serve proprio ad istruire il kernel.
Per fare in modo che questa opzione resti attiva dopo ogni riavvio, io consiglio di inserire il comando precedente dentro il file "/etc/rc.local" così ogni volta che linux fa il boot il kernel viene istruito.

Sfruttare WOL
Al fondo di questo articolo ho inserito i link a due programmi liberamente utilizzabili (uno per Windows e l'altro per Linux) con i quali è possibile sfruttare il WOL.
Gli utenti Windows posso usare il programma mc-wol.exe

mc-wol 11:11:11:11:11:11

Mentre gli amanti del pinguino possono fare uso di ether-wake:

./ether-wake 11:11:11:11:11:11

In entrambi i casi "11:11:11:11:11:11" è il MAC address della macchina che si intente "svegliare".

Automatizzare WOL
I comandi elencati in precedenza sono utili per accendere un Pc ma se i PC sono diversi allora può diventare un problema ricordare a memoria tutti gli indirizzi fisici.
Di seguito riporto uno script utile per accendere diverse macchine in base loro nome piuttosto che il MAC address.

Per i client Windows:

@echo off
if (%1) == (tizio)      mc-wol 11:11:11:11:11:11 > nul & goto fine
if (%1) == (caio)       mc-wol 22:22:22:22:22:22 > nul & goto fine
if (%1) == (sempronio)  mc-wol 33:33:33:33:33:33 > nul & goto fine
if (z%1) == (z) echo Usage: %0 servername & exit /B 0

echo Server not found.
echo Usage: %0 servername
exit /B 2

:fine
echo done.
exit /B 0

Per i client Linux:

#!/bin/sh

# do it
case "$1" in
  tizio)
        /sbin/ether-wake 11:11:11:11:11:11
        ;;

  caio)
        /sbin/ether-wake 22:22:22:22:22:22
        ;;

  sempronio)
        /sbin/ether-wake 33:33:33:33:33:33
        ;;

  --help)
        echo "Usage: $0 servername"
        exit 0
        ;;

  *)
        echo "Server not found."
        echo "Usage: $0 servername" >&2
        exit 2
esac
        echo "done."
exit 0

Spegnere le periferiche
Abbiamo visto come sia facile accendere un componente di rete con WOL ma senza un processo in grado di spegnere le risorse quando non servono più l'idea di risparmiare viene meno. Penso che nessuno abbia voglia di spegnere manualmente le periferiche prima di uscire dall'ufficio, specie se come me non gode di una memoria di ferro.
L'idea in questo caso è quella di fare in modo che tutte le risorse "on demand" vadano giù se nessun client è attivo sulla rete.

Ci serve uno script che possa essere eseguito ad intervalli regolari su un server per garantire i servizi solo quando necessitano:

#!/bin/sh
#script staying_alive.sh  

myfiledeny="/root/astutami.dont"

if [ -e $myfiledeny ]; then
        exit 0
fi


for myPing in 4 5 9 10 11 12 13 20 21
do
        ping -c 30 192.168.0.$myPing && exit 0
done

exit 1

In questo esempio, il server "pinga" alcuni indirizzi della classe 192.168.0.1/24 per capire se ci sono client attivi. In caso di esito negativo esce con un codice di errore 1. Questo valore può essere impiegato in un altro script per spegnere la macchina:

#!/bin/sh
#script alive.sh 

/sbin/staying_alive.sh
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /sbin/dormi.sh
fi
exit 0

Il codice è utile ad esempio se inserito all'interno di cron (ad esempio nel crontab oppure nella cartella cron.hourly), il servizio di Linux che avvia operazioni pianificate. In questo caso ogni ora il server eseguirebbe un test per capire se ci sono client sulla rete prima di andare a "dormire".

Gli utenti windows non useranno il cron ma AT (altrimenti conosciuto come "operazioni pianificate").

Può capitare che per qualche motivo, il server debba restare acceso nonostante la mancanza di client, come ad esempio in caso di manutenzione o aggiornamento. Nell'ultimo script (quello che si preoccupa di spegnere effettivamente il server) possiamo prevedere una "deroga" allo spegnimento in base ad alcune regole.
Nel nostro caso, l'esistenza di un apposito file all'intnerno della directory root, evita lo spegnimento programmato del server:

#!/bin/sh
#script dormi.sh

myfile="/root/astutami"
myfiledeny="/root/astutami.dont"

if [ -e $myfiledeny ]; then
        echo "Don't astutami for now."
   else
        touch $myfile

        wall << "EOF"

ALERT! System is going down after 5 minutes by now!
To avoid shutdown delete the file:

        /root/astutami

EOF

        echo "waiting..."
        sleep 5m
        if [ -e $myfile ]; then
                rm $myfile
                /sbin/astutami.sh
                exit 0
        fi
fi

Altra cosa interessante è che lo script appena riportato invia un messaggio broadcast (cioè a tutti gli utenti con una console attiva sul server) che indica l'imminente spegnimento ma attende 5 minuti prima di eseguire il comando. In questo periodo è ancora possibile evitare lo shutdown semplicemente eliminando il file /root/astutami.

Infine, l'ultimo script che presento si occupa semplicemente di spegnere la macchina.

#!/bin/sh
#script astutami.sh

shutdown -h now

Per concludere
Basta usare un po' di fantasia per poter sfruttare ancora meglio le possibilità offerte da WOL.
Si potrebbe utilizzare AT e cron anche per accendere i server; io lo faccio ad esempio per schedulare un backup notturno.

Spero di non avere annoiato nessuno. Grazie per l'attenzione. Alla prossima

Per saperne di più
WOL Wikipedia (EN)
ether-wake
mc-wol

Articolo (p)Link Commenti Commenti (1)  Storico Storico  Stampa Stampa
 
Di vittorio (del 20/10/2008 @ 03:45:30, in Sistemi, linkato 1859 volte)
Tutte le installazioni di Windows (anche quelle meno recenti) hanno una serie di condivisioni amministrative che garantiscono agli amministratori un accesso remoto ai dati.
In particolare esiste una condivisione nascosta per ogni partizione attiva sulla macchina contrassegnata dalla lettera della partizione stessa.

Ad esempio: avendo un PC chiamato miopc con tre partizioni attive "C,D,E", vi saranno anche tre condivisioni nascoste rispettivamente:
\\miopc\C$;
\\miopc\D$;
\\miopc\E$.

Il dollaro sta a significare che la condivisione è nascosta e non appare nell'elenco delle condivisioni disponibili quando si sfoglia la rete cliccando su "risorse di rete".

Se è vero che solo gli amministratori posso accedere a queste condivisioni, è anche vero che non tutti sanno della loro esistenza.

Esiste un modo relativamente semplice per disabilitarle che consiste nel mettere mani al file di registro.

Probabilmente la cosa più semplice per modificare il file di registro è quella di creare un file di testo con estensione ".reg" contenente le righe da aggiornare. Per rendere effettive le modifiche basta semplicemente cliccare due volte il file avendo cura di essere autenticati in Windows come amministratori.

Di seguito riporto le righe necessarie a disabilitare le condivisioni:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"AutoShareServer"=dword:00000000
"AutoShareWks"=dword:00000000

Nel caso sia necessario ripristinarle basta modificare le stesse voci con i seguenti valori:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"AutoShareServer"=dword:00000001
"AutoShareWks"=dword:00000001

Se si desidera abilitare/disabilitare queste credenziali a piacimento, è possibile creare un collegamento del file .reg su desktop. In questo modo sarà più semplice apportare le modifiche.

Per concludere:
Le condivisioni indicate in precedenza non sono le uniche. Esistono altre condivisioni (come ad esempio IPC$), sempre amministrative e sempre nascoste che consentono l'accesso ad altre componenti del PC da remoto. Queste condivisioni danno ad esempio la possibilità di accedere al registro degli eventi oppure all'elenco dei servizi attivi sulla macchina.

In questo articolo ho preso in considerazione "solo" le condivisioni che garantiscono l'accesso ai files.

Per maggiori informazioni lasciate pure un post su questo articolo, di sicuro approfondiremo l'argomento.

Alla prossima.
Articolo (p)Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di vittorio (del 17/10/2008 @ 16:10:20, in Retrocomputing, linkato 224 volte)
Qualche giorno fa, facendo un po' di ordine tra le mie cose vecchie e polverose è saltata fuori una cassetta audio. Incuriosito l'ho inserita in un mangianastri (anche quello vecchio e polveroso) per capire cosa ci fosse inciso sopra.
Con immensa sorpresa ho scoperto che non si trattava di musica. Infatti appena ho premuto play ho sentito l'inconfondibile "piiiiiiiiiiiiiiiiiiiii(schic) piiiiiiiiiiiiiiiiiiiiiiiiiiiiii(scccccccccccccc)" tipico del mio caro, vecchio ZX Spectrum 48k.
A questo punto ho scaricato un emulatore per PC. Non vedevo l'ora di capire quali dati contenesse il nastro.
Dopo aver passato diversi minuti a capire come fare una conversione dell'audio su file sono finalmente riuscito a caricare i dati nell'emulatore.
Non potete capire l'emozione. Si trattava del gioco della scopa; un programma scritto in BASIC tantissimi anni fa del quale mi ero totalmente dimenticato.
Dopo aver giocato un po' ho dato un breve sguardo al sorgente. Certamente scrivere un gioco che doveva girare in 32k di memoria RAM non era facile ma io all'epoca programmavo veramente con i piedi.
Mi è bastato dare un'occhiata veloce al modo in cui vengono mischiate le carte.
Comunque mi rendo conto che non era una cosa banale. Il programma è dotato di schermata iniziale. Per farla sono ricorso ad un escamotage. Ricordo ora di aver fatto un disegno usando diversi fogli di un quadernone a quadretti e di aver raggruppato i quadretti in blocchi di 8x8. Successivamente ho definito i mitici UDG (User Defined Graphic) e con diversi MERGE$ sono riuscito a disegnare uno splendido "asso di bastoni" napoletano degno del più agguerrito camionista meridionale.




Per chi volesse farsi quattro risate, potete scaricare il nastro da qui.
Articolo (p)Link Commenti Commenti (2)  Storico Storico  Stampa Stampa
 
Pagine: 1 2 3 4 5 6
Ci sono 4 persone collegate


Cerca per parola chiave





< settembre 2010 >
L
M
M
G
V
S
D
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
             


Titolo
Calabria (29)
Italia (1)
Sistemi (2)

Le fotografie più cliccate

Titolo
Quale tra questi termini associ alla "Sicurezza Informatica"?

 Firewall
 AntiVirus
 Antispam
 Password

Titolo

Human Calendar

Fedora Project:

Questo sito è segnalato da:
BlogItalia.it - La directory italiana dei blog

Add to Technorati Favorites

Internet Map

Play chess online

Play chess online



09/09/2010 @ 9.51.31
script eseguito in 281 ms