sabato 9 marzo 2013

COSA SONO I CRONTAB


CRONTAB, LINUX







IN QUESTA GUIDA VEDREMO COSA SONO I CRONTAB E COME UTILIZZARLI 





Cos'è "Cron/Crontab" ???

* una risposta alle preghiere dei webmaster
* una specie di sveglia per il server
* uno strumento per la manutenzione automatica

Requisiti:

* un server che consenta di eseguire cron job
* accesso via telnet/ssh al server

Quando serve:

* offri un servizio di cartoline virtuali, ed i tuoi utenti possono
scegliere di mandare le cartoline in una data futura? Avrai il problema di
eseguire lo script almeno una volta al giorno in modo che, se ci sono degli
invii "in scadenza", le mail vengano inviate;
* hai un motore di ricerca interno ed aggiungi del materiale in
continuazione? Dover lanciare lo spider ogni volta che qualcosa viene pubblicato
per tenere aggiornato il database è un'inutile perdita di tempo. Inoltre
potresti correre il rischio di dimenticartene.
* il tuo hoster non ti offre il servizio di backup, e quindi usi uno script
che fa il salvataggio di tutti i tuoi dati, ma non riesci sempre ad eseguirlo,
per cui ti manca la copia del tuo sito prima che degli hacker turchi hanno
rasato a zero il tuo forum?

Crontab risponde alle esigenze indicate poco fa e a tutte quelle che richiedano
l'esecuzione automatica di uno script ad intervalli di tempo, senza l'intervento
da parte tua.

Premessa

Un file crontab è più o meno una cosa del genere:
codice:
0 * * * * /etc/reset.cgi
0 0 * * * /etc/resetlogs.cgi

Cosa significa quanto sopra? E' molto semplice. Nell'esempio precedente c'è un
file crontab con 2 comandi. Un file crontab può contenere un numero qualsiasi di
comandi. E' molto importante che ci sia un solo comando per linea, per cui [ 0 *
* * * * /etc/reset.cgi ] sarà il sig. COMANDO UNO e [0 0 * * *
/etc/resetlogs.cgi ] sarà il sig. COMANDO DUE. Puoi avere i sigg. COMANDO TRE,
QUATTRO e così via. Quello che conta è che ci sia un solo comando per linea.
Altrettanto importante è che dopo l'ultimo comando ci sia una linea vuota, o
Crontab non funzionerà.

Ok, diamo un'occhiata a ciascun comando. Può tornare utile pensando alla
sveglia. Ogni comando infatti è come impostare un'allarme per una determinata
azione. I primi 5 campi specificano il tempo in cui il sesto campo verrà
eseguito.

I 5 campi iniziali rappresentano

MINUTI(0-59) ORE(0-23) GIORNODELMESE(1-31) MESEDELL'ANNO(1-12)
GIORNODELLASETTIMANA(0-6) Notabene: 0 = Domenica

Nota anche che l'asterisco (*), chiamato WILDCARD, che consente di non
specificare alcun valore per il campo in oggetto.

Se non fosse abbastanza, ecco degli esempi che dovrebbero rimuovere ogni
dubbio:

12 03 * * 1,4 /percorso/assoluto/per/la/webroot/cgibin/script.cgi

12: minuti [0-59]
03: ore [0-23]
*: giorno del mese [1-31]
*: mese [1-12]
1,4: giorno della settimana [0-6, con la domenica indicata da 0]
/script.cgi: comando [lo script da eseguire]
Traduzione: alle 3:12a.m., orario del server, ogni lunedì e giovedì, lo script
script.cgi verrà eseguito. Tu ronfi, il server lavora per te. Niente male,
vero?

Alcune variazioni sul tema
* tutte le mattine, più o meno alle 3?> 12 03 * * *
* tutti i 15 del mese, alla stessa ora?> 12 03 15 * *
* 7 volte l'anno, alla stessa ora?> 12 03 31 * * [solo 7 mesi hanno 31 giorni]
* ogni domenica, a mezzogiorno?> 0 12 * * 0
* ogni gorno, più o meno a mezzanotte?> 2 0 * * *
* ogni lunedì e venerdì, alle 3 del mattino circa?> 02 03 * * 1,5


Caricare ed eseguire i/l Crontab

Non importa come chiamerai il file crontab. Il consiglio è di chiamarlo in modo
che ti venga subito in mente di cosa si tratta (ad esempio: cronstats or
croncgi) ma non fa alcuna differenza.
Carica il file in modalità ASCII sul server.
Finito il l'upload, collegati al server via telnet/ssh e portati nella directory
in cui hai messo il file (anche in questo caso, non fa alcuna differenza dove
hai messo il file). Ti suggerisco di metterlo in una directory protetta o
all'interno della cgi-bin, in modo che nessuno possa vederlo. Sempre via
telnet/ssh, digita i seguenti comandi:
codice:
cd /percorso/per/la/directory/con/crontab
crontab nomedelfilecronotab


Se tutto è andato per il meglio, non dovresti accorgerti di nulla, a parte il
fatto che le cartoline vengono inviate, il database del motore aggiornato ed il
backup quotidiano non vede l'ora di essere scaricato.

Opzioni del crontab.

Comandi da digitare via ssh/telnet e spiegazione:

crontab -l verranno visualizzati i crontab in funzione (utile per
vedere se un comando è stato registrato correttamente);

crontab -r rimuove tutti i crontab registrati;

crontab -d da non fare mai, nemmeno per sbaglio: con questo comando
cancellate i job programmati anche del sistema;*

crontab -e scrivere o modificare un crontab direttamente via
telnet/ssh. L'editing risulterà un pochino "ostico" (per lo meno, io non ci sono
riuscito), per cui è consigliabile cambiare editor prima di far partire
crontab:
export VISUAL=nome_editor
ad esempio io uso pico per comodità e quindi:
export VISUAL=pico
crontab -e


Alcuni consigli:

* Procurati un foglio A4 bianco e ruotalo di 90°. Prendi una penna e scrivi
i giorni della settimana sul lato lungo, cominciando da domenica. Torna
all'inizio, e assegna ad ogni giorno un numero progressivo, cominciando da 0
(zero). Così facendo dovresti evitare di fare confusione quando imposterai
l'esecuzione dei comandi
* Se, come me, sei in hosting e non hai un server tutto tuo, usa una buona
dose di buon senso. Il modo migliore per sovraccaricare il server è quello di
impostare comandi in modo eccessivo, come ogni ora, mezz'ora o, peggio, ogni
quarto d'ora. Prova magari ad usare dei minuti "insoliti", tipo 02, 03, 17, 28,
etc. Se dovessi mostrare poca considerazione per il server, è molto probabile
che ti venga tolto il privilegio di usare crontab.
* Se hai uno script che impiega 5 minuti a fare il suo dovere, per sicurezza
pensa che ne impieghi 25.
* Sempre, assolutamente, in ogni caso, senza ombra di dubbio (è chiaro il
concetto???), usa il PERCORSO ASSOLUTO dello script. Così sei sicuro che tutto
verrà fatto nel migliore dei modi, e non incorrerai in errori di sorta.
* Suggerimento basato sull'esperienza: SEMPRE indicare i minuti. In modo più
chiaro, MAI usare wildcard (*) nel primo campo. Altrimenti lo script verrà
eseguito ogni minuto. Se, come nel mio caso, lo script prevede l'invio di mail,
non è bello svegliarsi la mattina e dover scaricare centinaia di mail tutte
uguali.


THE END!!!
mi raccomando cliccate sulla mia pubblicità  :) 

Schedulare backup automatici MYSQL / Linux


MYSQL, LINUX, CRONTAB,7Z 



Ringrazio Davide Pettenò per il fondamentale contributo a questa guida







Oggi vedremo come schedulare dei backup automatici per mysql .
Questo automatismo si realizzerà senza neanche una linea di codice, contrariamente a quanto pensavo
io prima di iniziare :)



PASSI OPERATIVI:

1) creare uno script contente i comandi e le impostazioni per effettuare il backup
2) creare un'operazione pianificata in linux











PASSO NUMERO 1
di seguito lo script da salvare nel file esegui_backup.sh


#!/bin/sh


NOW=$(date +"%Y-%m-%d")
PERCORSO=/home/mysql_dump/$NOW
USER=root
PASSWORD=rootpassword
DUMPLOG=/home/mysql_dump/dump.log

echo "#" >> $DUMPLOG
echo "------------ INIZIO BACKUP $NOW ---------------" >> $DUMPLOG
echo "#" >> $DUMPLOG

mkdir $PERCORSO

echo "Creato cartella $NOW" >> $DUMPLOG


/***inizio***/
mysqldump --user=$USER --password=$PASSWORD NOMEDATABASE> $PERCORSO/NOMEFILE.sql
echo "Dump NOMEDATABASE ok" >> $DUMPLOG
7z a $PERCORSO/NOMEFILE.7z $PERCORSO/NOMEFILE.sql

/****fine****/
...
...
ripetere le linee tra inizio e fine per ogni database da 'backuppare'
...
...


echo " " >> $DUMPLOG
echo "Abbiamo quasi finito..." >> $DUMPLOG
rm $PERCORSO/*.sql
echo "Tutti gli sql non compressi sono stati rimossi" >> $DUMPLOG
echo "#" >> $DUMPLOG
echo "----------------------- FINE BACKUP $NOW -----------------------" >> $DUMPLOG




PASSO NUMERO 2
aggiungere la seguente riga al crontab

00 01 * * 6 sh /home/mysql_dump/esegui_backup.sh

questo schedulerà il backup ogni sabato alle ore 01:00




THE END!!!
mi raccomando cliccate sulla mia pubblicità  :) 

venerdì 8 marzo 2013

ABILITARE SQL AUTHENTICATION in SQL SERVER

Salute,

oggi risolveremo il tedioso problema dell'abilitazione dell'autenticazione SQL per SQLSERVER XXXX.



Nativamente l'istanza di SQLEXPRESS installata da Visual Studio piuttosto che da Microsoft Office, viene installata impostando l'autenticazione di WINDOWS, bene a questo punto nasce il problema, infatti anche abilitando l'utente sa, o creandone uno nuovo, ogni tentativo di accesso darà esisto negativo..
vediamo come risolvere il problema


SOLUZIONE 1

Attraverso il tool MICROSOFT SQL SERVER STUDIO MANAGEMENT

Si clicca su:


1) root del server --> proprietà --> protezione --> Autenticazione Sql Server
2) riavvio istanza
3) LOGIN ABILITATO





SOLUZIONE 2

quando siete sfigati come me, non avete il MICROSOFT SQL SERVER STUDIO MANAGEMENT ma un toad freeware per SqlServer, basterà:

1) lanciare la stored su database master:

EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE'
,   N'Software\Microsoft\MSSQLServer\MSSQLServer'
,   N'LoginMode'
,   REG_DWORD
,   2


2) Si riavvia istanza
3) LOGIN COMPLETATO


SOLUZIONE 3

quando invece siamo sfigati del tutto, non abbiamo ne Il management nel il toad, abilitiamo attraverso shell :)

(questo di seguito è un tesoro, fatene buon uso )
sqlcmd.exe -S MyServer -d master -Q "EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2"

giovedì 7 marzo 2013

Schedulare backup automatici SQL SEVER 2005 EXPRESS


SQL SERVER 2005, WINDOWS SERVER 2003, OPERAZIONI PIANIFICATE , WINRAR









Oggi vedremo come schedulare dei backup automatici per sqlserver2005 versione express.
Questo automatismo si realizzerà senza neanche una linea di codice, contrariamente a quanto pensavo
io prima di iniziare :)

PASSI OPERATIVI:

1) abilitare sql server ad effettuare le chiamate di sistema
2) creare una lista di database da ' backuppare '
3) creare Stored Procedure che effettua tutto lo sporco lavoro
4) creare un'operazione pianificata che lanci la Stored descritta al punto precedente.










PASSO NUMERO 1
di seguito lo script da lanciare nella console di sqlserver 2005 ManagementStudio.

-- Questo comando abilita le opzioni avanzate, senza questo non funzionerà il 
-- comando successivo.
EXEC sp_configure 'show advanced options', 1
GO
--Per effettuare un refresh del sistema .
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO



PASSO NUMERO 2
questo il contenuto del file di testo in cui si inseriscono i nomi database da backappare
nome file : scheduledbackup.sql
sp_BackupDatabase 'prjNOMEDB1', 'F'
GO
sp_BackupDatabase 'prjNOMEDB2', 'F'
GO
--sp_BackupDatabase 'prjNOMEDB3', 'F'
--GO
QUIT



PASSO NUMERO 3

definizione della stored procedure che effettua il backup, nella cartella 
c:\scheduledbackup\DATA\NOMEDATABASE.bak
In verità ho scritto questo script affinchè si possano effettuare il backup completo ( parametro F) 
il backup differenziale ('D') e quello del log ('L') quindi in funzione del parametro la parte finale del nome sarà
leggermente differente.


USE [master] 
GO 
/****** Object:  StoredProcedure [dbo].[sp_BackupDatabase]    Script Date: 07/03/2013 11:40:47 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 


-- ============================================= 
-- Author: Aldo Panetta   
-- Create date: 2013-03-07 
-- Description: Backup Database 
-- Parameter1: databaseName 
-- Parameter2: backupType F=full, D=differential, L=log
-- ============================================= 
CREATE/ALTER PROCEDURE [dbo].[sp_BackupDatabase]  
       @databaseName sysname,
       @backupType CHAR(1) 
AS 
BEGIN 
       SET NOCOUNT ON; 

       DECLARE @sqlCommand NVARCHAR(1000) 
       DECLARE @dateTime NVARCHAR(20) 
       DECLARE @comandoZip  NVARCHAR(1000)
       SELECT @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),111),'/','_')
         DECLARE @path NVARCHAR(1000) 
         SELECT @path  = 'C:\ScheduledBackup\'+@dateTime+'\' 
         EXEC master.dbo.xp_create_subdir @path
        
       IF @backupType = 'F' 
             BEGIN 
                SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName + 
                    ' TO DISK = ''C:\ScheduledBackup\'+@dateTime+'\' +      @databaseName + '_Full_'   + '.BAK''' 
                SET @comandoZip=  @databaseName + '_Full_'   + '.BAK'
             END
        
       IF @backupType = 'D' 
               BEGIN
                  SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName + 
                  ' TO DISK = ''C:\ScheduledBackup\' +@dateTime+'\'+ @databaseName + '_Diff_'  + '.BAK'' WITH DIFFERENTIAL'
                            
                  SET @comandoZip=  @databaseName + '_Diff_'  + '.BAK'
               END
        
       IF @backupType = 'L' 
               BEGIN
                  SET @sqlCommand = 'BACKUP LOG ' + @databaseName + 
                  ' TO DISK = ''C:\ScheduledBackup\'+@dateTime+'\' + @databaseName + '_Log_'   + '.TRN''' 
                  SET @comandoZip=   @databaseName + '_Log_'   + '.TRN'
                     END   
       EXECUTE sp_executesql @sqlCommand 
       DECLARE @comm NVARCHAR(1000) 
       SET @comm= 'c:\programmi\winrar\rar.exe a -t -df'+ ' '+ 'C:\ScheduledBackup\'+@dateTime+'\'   +@comandoZip+'.rfile ' + 'C:\ScheduledBackup\'+@dateTime+'\' +@comandoZip

         EXEC master.dbo.xp_cmdshell  @comm
END

NOTA: questo script dopo aver effettuato il backup invocherà rar.exe per comprimere il file e, attraverso i parametri -t -df effettuerà prima la verifica poi la cancellazione del file .bak,
il file zippato risultante avrà estensione .rfile, estensione fittizia aggiunta perchè altrimenti avrei dovuto modificare la variabile @comandoZip, e non ne avevo voglia, ( se volete farlo voi dovreste eliminare l'estensione .bak dalla prima occorrenza della variabile @comandoZip e non nella seconda)



PASSO 4, OPERAZIONE SCHEDULATA
Foto gallery che vi illustra i passaggi da seguire per la creazione dell'operazione schedulata


Dopo aver creato l'operazione pianificatam si apre in modifica e si aggiunge al file sqlcmd.exe nella finestrella esegui i seguenti parametri:



.....\sqlcmd -S serverName -E -i C:\scheduledbackup\scheduledbackup.sql
dove 
  • sqlcmd ( sql command :) )
  • -S (specifica nomemacchina\nomeistanza )
  • serverName (nome macchina .... :))
  • -E (consente di effettuare le trusted connection, ovvero con le credenziali di sistema operativo e non con accesso sql)
  • -i (specifica che si passa come input un file)
  • C:\scheduledbackup\scheduledbackup.sql (questo è il file che contiene i nomi di database, visto al punto 1 o 2 non ricordo)




THE END!!!
mi raccomando cliccate sulla mia pubblicità  :) 

domenica 3 marzo 2013

INSTALLAZIONE GRUB CUSTOMIZER


PASSI DA SEGUIRE PER L'INSTALLAZIONE DI GRUB CUSTOMIZER UBUNTU


Software utile per configurare il boot del vostro pc quando si sono più sistemi operativi installati.......

In Ubuntu è possibile installare scaricando i pacchetti apt-get.... 

Tipo Installazione 1)

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer
    

putroppo a me in questo modo non mi si è installato per cui

sono passato al piano b



Tipo Installazione 2)



ho scaricato i sorgenti, li ho compilati ed ho avviato il grub customizer,

non vi preoccupate, le istruzioni per far cio le troverete di seguito:



2.1) 
sorgenti di grub customizer scaricati che ho compilato sorgenti

2.2) si segue la guida per la compilazione dei sorgenti guida

( NOTA prima di compilare si dovranno installare delle lib, il comando per le lib è 
sudo apt-get install "nomelibreriasenzavirgolette:)"   )

mi raccomando cliccate sulla mia pubblicità  :) 

sabato 2 marzo 2013

WINDOWS7 UBUNTU ANDROID ACER D270


INSTALLARE WINDOWS7 UBUNTU ED ANDROID SU UN ACER ASPIRE ONE D270



Sebbene mi sia costato un intero sabato, a conti fatti ho trasformato l'Aspire One D270 in uno strumento perfetto!!!

Dapprima faremo un elenco dei software utilizzati, ovvero:


Software Necessario



1) unebootin  scaricabile a questo indirizzo sito web    oppure linuxliveusb sito web 

2) android ics iso  scaricabile a questo indirizzo android-x86-4.0-RC2-asus_laptop

              guida usata (http://forum.xda-developers.com/showthread.php?t=1831454)

3) Versione Originale di windows7 formato ISO

4) windows 7 usb/dvd download tool, scaricabile dal sito microsoft gratuitamente a questo indirizzo windows 7 usb tool



5) iso di XBUNTU 13.04 ( ancora non è stata rilasciata ufficialmente ma per il tutorial va benissimo e poi funziona sull'acer , se volete una versione più stabile consiglio xubuntu 12.04 ) 

scaricabile a questo indirizzo Xubuntu 13.04 i386

6) Live di Gparted per creare le partizioni scaricabile a questo indirizzo live GParted



A questo punto sarebbe l'ideale utilizzare 4 chiavette usb, ma una andrà bene ugualmente :)




FASI INSTALLAZIONE:

L'installazione di questa marea di roba inizia da:

1) Creazione Live GPARTED, 
si apre unetbootin si seleziona l'iso appena scaricato, si seleziona la chiavetta e si clicca su OK, al termine dell'installazione si clicca su esci.

2) Si inserisce Gpared nell'Acer D270 (hd da 320gb) e si creano 4 partizioni
2.1) Prima partizioilCiano
ne di SWap (3 gb vanno bene)
2.2) Seconda partizione NTFS( per windows 7) (150 gb vanno bene)
2.3) Terza partizione ext4 con journaling ( UBUNTU) (150 gb vanno bene)
2.4) Quarta partizione ext3 ( Android) 
(16gb vanno bene)

create queste partizioni si termina GParted e si passa all'installazione di Windows 7.

3) Si inserisce la chiavetta nel pc di origine,
3.1) si installa windows7 usb/dvd download tool 
3.2) si apre quest'ultimo
3.3) si seleziona l'iso di windows 7 originale ( con licenza) 
3.4) si seleziona la chiavetta
3.5) si da la conferma e si crea l'usb di installazione
3.6) si inserisce nell'acer D270 e si installa nella partizione ntsf, 
        per far cio in fase di installazione si seleziona la modalità esperto, 
        una volta selezionata la partizione corretta si da conferma e si attende 
        il termine dell'installazione.

4) Si inserisce la chiaverra nel pc di origine
4.1) si apre unebootin si carica l'iso di android, si seleziona la chiavetta e si da conferma,
       terminata l'operazione di preme esci
4.2) si inserisce la chiavetta nell'acer d270 e si avvia il pc
4.3) a questo punto si seleziona la partizione ( quella con ext3) e si installa, quindi
       come da guida installazione android, nel menu testuale si seleziona boot e poi write e poi 
       quit, poi ancora yes all'installazione del boot loader e poi ancora no al read/write...
4.4) infine si sceglie reboot

5) si inserisce la chiavetta nel pc di origine, si installa con lili ubuntu sulla chiavetta e si  
    inserisce nell'acer D270.
5.1) si esegue l'installazione di ubuntu e si attende il termine.


Ad installazione terminata, ubuntu avrà sovrascritto i bootloader che nel frattempo sono 
stati creati, andando a configurare correttamente il link a win7 e ad ubuntu, manca nel menu la voce android, per far questo, basterà installare in ubuntu 
grub customizer, per installarlo seguire la guida installazione grub customizer che troverete a questo link -->>> Guida Installazione Grub Customizer

una volta avviato il grub customizer operare così, 

cliccare sulla voce che imposta il link a windows7, selezionare col tasto destro e cliccare modifica, 
e prestare attenzione a come è configurato... fatto cio chiudere questa finestrella e 
cliccare sul tasto + per crearne uno nuovo e fare copia ed incolla di questo testo :


menuentry "android"{
insmod ext2
set root='hd0,msdos5'   <<<- sostituire a 5 il numero della vostra partizione 
                                                <<<- la mia era appunto la /dev/sda5



linux /android-4.0-RC2/kernel quiet root=/dev/ram0 androidboot.hardware=asus_laptop acpi_sleep=s3_bios,s3_mode SRC=/android-4.0-RC2
initrd  /android-4.0-RC2/initrd.img
}

delle ultime due righe controllare i percorsi, 
per quanto riguarda insmod, non ho studiato più di tanto ma impostandolo ad ext2 ha funzionato, per cui suggerisco di fare ugualmente. 


salvate i cambiamenti ed a questo punto dovreste aver finito :)



THE END!!!!!



mi raccomando cliccate sulla mia pubblicità  :)