Crontab su Raspberry appunti Rasbian linux

Raspberry Pi – CronTab e CronJob –

Il CronTab invece è un file testuale che contiene proprio la lista di comandi che verranno eseguiti da Cron. Si trova in /etc.

Ogni utente sul sistema ha un file crontab. Esiste persino una root crontab per i task che richiedono privilegi amministrativi.
Usare Cron

Per usare Cron, basta aprire il terminale e dare il comando:

crontab -e

si accederà al file che appartiene all’utente che ha dato il comando sul terminale.

Se vogliamo impostare dei task con privilegi amministrativi dovremmo accedere al crontab come utenti root:

sudo crontab -e

Aggiunto un task possiamo salvare il file. Le sezioni che compongono una entry nel crontab sono spiegate di seguito:

Sezioni Crontab

Ognuna di queste “sezioni” è separata da uno spazio, con la sezione finale con uno o più spazi all’interno. Nessuno spazio è permesso all’interno della Sezione 1-5, solo fra di essi. Le sezioni 1-5 vengono usate per indicare quando e quanto spesso si vuole che venga eseguito il comando. Questo è un esempio di cron job:

10 09 1 1 1 /usr/bin/cartella/comando

Con le sezioni rispettivamente a indicare:
MINUTI (0-59)
ORE (0-23, dove 0 sono le 24)
GIORNO (1-31)
MESE (1-12)
GIORNO DELLA SETTIMANA (0-6, dove 0 e’ la domenica)

SINTASSI
minuti (0-59), ore (0-23, 0 = mezzanotte), giorno (1-31), mese (1-12), giorno della settimana (0-6, 0 = domenica), Comando.

L’esempio mostrato sopra in particolare fa in modo che il comando venga eseguito Il 1 Gennaio, più ogni Lunedì di gennaio, alle 9:10 di mattina.
Un ulteriore simbolo (* asterisco) può essere usato in ogni istanza per indicare “ogni”. Ad esempio:

01 06 * * * /usr/bin/cartella/comando

Il comando sopra viene eseguito ogni giorno di ogni mese alle 6:01 di mattina.
Altre impostazioni più sofisticate possono essere generate utilizzando virgole e trattini.

Il comando specificato è sempre meglio includerlo con il percorso completo all’eseguibile. Per conoscere il percorso di un comando è sufficiente nel terminale, digitare prima del comando la parola which ad esempio in questo modo:

which ls

Il cronjob impostato nella crontab inizierà a girare non appena verranno salvate le modifiche alla crontab.

Un altro esempio di cronjob potrebbe essere questo:

*/30 * * * * curl http://roccomusolino.com/directory/update.php

Che fa in modo che ogni 30 minuti venga effettuata una richiesta con curl ad un certo script.
CronTab Avanzata

La crontab vista sopra è una crontab per gli utenti. Ogni crontab è associata ad un utente. Ma ci sono altri tipi di crontab, che fanno uso di stringhe speciali, “abbreviazioni” quali:

@reboot -> Esegui una volta, ad ogni avvio.
@yearly -> Esegui una volta all’anno, equivale a “0 0 1 1 *”.
@annually -> (Uguale a @yearly).
@monthly -> Esegui una volta al mese, “0 0 1 * *”.
@weekly -> Esegui una volta la settimana, “0 0 * * 0”.
@daily -> Esegui una volta al giorno, “0 0 * * *”.
@midnight -> (Uguale a @daily).
@hourly -> Esegui una volta ogni ora, “0 * * * *”.

Ad esempio:

@reboot python /home/pi/MyScript.py &

esegue lo script MyScript.py ogni volta che il sistema si avvia.

Questo vale per qualsiasi sistema Debian-based. Quindi se avete Raspbian su Raspberry Pi, potete automatizzare qualsiasi compito e task in questa maniera.

GRAZIE a https://hackerstribe.com per l’articolo

Errore installazione VMware vers. 12.x linux ubuntu

Se si prova ad installare VMware vers. 12.x sotto linux Ubuntu 16.10 si ottiene l’errore:

Gtk-WARNING **: Failed to load module “libcanberra-gtk-module.so”: libcanberra-gtk-module.so: cannot open shared object file: No such file or directory

per superare basta creare il link simbolico, naturalmente deve essere installato il seguente pacchetto:

sudo apt install libcanberra-dev

ricordatevi di dare

sudo ldconfig

e creare il link simbolico

sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so

 

ERRORE SUL TEMA

Gtk-WARNING **: Impossibile trovare il motore del tema in module_path: «murrine»

apt-cache search murrine

e procedere alla installazione

sudo apt install murrine-themes

La sicurezza non è mai troppa…. anche su Linux

Ho installato ESET NOD32 per linux Desktop su Ubuntu 64bit 16.10

Linux (32-bit): http://download.eset.com/download/unix/eav/eset_nod32av_32bit_en.linux
Linux (64-bit): http://download.eset.com/download/unix/eav/eset_nod32av_64bit_en.linux

per i rootkit c’è

Rootkit Hunter consente di analizzare il filesystem, sottoponendo alla scansione tutti i file presenti in esso alla ricerca di applicazioni malevole.

sudo apt install rkunter

per aggiornare le firme

sudo rkhunter --update

Installare WMware Horizon Client su Ubuntu 16.10 64bit

Si scarica il client ed eseguire con

sudo ./VMware-Horizon-Client-4.3.0-4710754.x64.bundle

ovvero

sudo sh VMware-Horizon-Client-4.3.0-4710754.x64.bundle

naturalmente si deve scegliere il file relativo alla propria distro e architettura nel mio caso AMD64

se vengono visualizzati errori del tipo

/usr/lib/vmware/view/bin/vmware-view: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

dovete creare il link simbolico con le librerie, da shell il comando

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

si lancia con il comando

sudo vmware-view
 

Domoticz, impostare un rilevatore PIR

Mi diverto con domoticz e gli script lua. Con questo semplicissimo script LUA ho gestito il PIR 433 mhz per gestire un presa radio comandata sempre 433 mhz.

nome script script_device_sensore1on.lua mentre la dir dove inserire lo script è ~/domoticz/scripts/lua

local motion_switch = ‘sensore1on’
local status_switch = ‘TelevisStanzaLetto’
commandArray = {}
if (devicechanged[motion_switch] == ‘On’ and otherdevices[status_switch]) == ‘Off’ then –motion detected, so there is someone home
commandArray[status_switch]=’On’
end
return commandArray

Quello che voglio far notare è come si scrive il nome di una script in domoticz es.: script_trigger_name.lua

il Trigger può essere come valore ‘time’, ‘device’, ‘variable’ or ‘security’, Name può essere qualsiasi nome del sensore che vuoi gestire, script_device_MyOtherDeviceNameOnWhenMyDeviceNameOn.lua per essere istanziato.

importare esportare in Excel in VBA

ho scritto questo codice….

Public Sub ImportaTxtFile(FName As String, Sep As String)

Dim RowNdx As Long
Dim ColNdx As Integer
Dim TempVal As Variant
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Integer
Dim SaveColNdx As Integer
Dim n As Integer

Application.ScreenUpdating = False
'On Error GoTo EndMacro:

SaveColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row

Open FName For Input Access Read As #1

While Not EOF(1)
Line Input #1, WholeLine
If Sheets("Tracciato").Cells(2, 6).Value > 0 Then
If Right(WholeLine, 1) <> Sep Then
WholeLine = WholeLine & Sep
End If
End If
ColNdx = SaveColNdx
Pos = 1
n = 1
'    NextPos = InStr(Pos, WholeLine, Sep)
NextPos = Sheets("Tracciato").Cells(1, 1).Value

While NextPos >= 1
If n = 1 Then
TempVal = Mid(WholeLine, 1, NextPos)
Cells(RowNdx, ColNdx).Value = TempVal
n = n + 1
Pos = NextPos
ColNdx = ColNdx + 1
'NextPos = InStr(Pos, WholeLine, Sep)
NextPos = Sheets("Tracciato").Cells(n, 1).Value
Else
TempVal = Mid(WholeLine, Pos + Len(Sep) + 1, NextPos - Pos - Len(Sep))
Cells(RowNdx, ColNdx).Value = TempVal
n = n + 1
Pos = NextPos
ColNdx = ColNdx + 1
'NextPos = InStr(Pos, WholeLine, Sep)
NextPos = Sheets("Tracciato").Cells(n, 1).Value
End If
Wend
RowNdx = RowNdx + 1
Wend

EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
Close #1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Fine Importazione Txt File
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Scegli file Txt e carattere di separazione
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub finestraImportazione()
Dim FileName As Variant
Dim Sep As String
FileName = Application.GetOpenFilename(FileFilter:="Text File (*.txt),*.txt")
If FileName = False Then
'lascia perdere
Exit Sub
End If
Sep = Application.InputBox("Inserisci il carattere di separazione, se presente:", Type:=2)
If Sep = vbNullString Then
End If
' controllo se esiste un carattere di separazione e valorizza il foglio 2 cella f2
If CInt(Len(Sep)) = 0 Then
Cells(2, 6).Value = 0
Else
Cells(2, 6).Value = Len(Sep)
End If
Debug.Print "FileName: " & FileName, "Separatore: " & Sep
ImportaTxtFile FName:=CStr(FileName), Sep:=CStr(Sep)
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Fine finestra scelta file e specificazione separatore
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''