Archivi tag: schedulazione

Riavvio pianificato rapido

scheduleVorreste programmare un riavvio rapidamente?

Usate un batch di Windows!

Ecco come fare:

per programmare un riavvio una tantum del computer aprite il blocco note ed incollate il contenuto seguente in un file schedula.bat.

Lanciate il file, impostate l’ora ed il gioco è fatto!

Potrete poi rilanciare il batch ogni volta che avrete bisogno di un riavvio programmato.

@echo off
SETLOCAL
SET /P RestartHour=Inserire ora del riavvio (es.04 per le 4 di mattina) includendo lo zero se necessario 


SET /a TEST=%RESTARTHOUR%

IF "%TEST%"=="-1" (
schtasks /query /tn ScheduledRestart >NUL 2>&1 && schtasks /Delete /tn ScheduledRestart /F || echo "Nessuna schedulazione presente" 
exit /b
)

IF %TEST% GEQ 24 (
    echo ORARIO NON AMMESSO!
    exit /b
)
SET NOWTIME=%TIME:~0,2%%TIME:~3,2%
SET SCHTIME=%RestartHour%00
SET today=%date%

CALL:DateToJDN %today% todayNo
SET /a tomorrowNo=todayNo+1

CALL:JDNToDate %tomorrowNo% tomorrow

IF %NOWTIME% GEQ %SCHTIME% (
    echo Schedulato riavvio domani alle %SCHTIME:~0,2%:00
    set SCHDAY=%TOMORROW:~0,2%/%TOMORROW:~3,2%/%TOMORROW:~6,4%
) ELSE (
    echo Schedulato riavvio oggi alle %SCHTIME:~0,2%:00
    set SCHDAY=%DATE:~0,2%/%DATE:~3,2%/%DATE:~6,4%
)    
schtasks /create /f /tn ScheduledRestart /tr "shutdown /r /t 120 /c """Reboot from RMM""" /f" /sc minute /mo 1 /st %RestartHour%:00:00 /et %RestartHour%:02:00 /z /SD %SCHDAY%  /RL HIGHEST /RU SYSTEM >NUL
echo.
echo.
echo SCHEDULAZIONI:
schtasks | findstr ScheduledRestart
echo.
echo.
echo RICORDA:
echo Per cancellare questa schedulazione lanciare lo script inserendo come orario -1 
echo Per vedere le schedulazioni lanciare il comando: schtasks | findstr ScheduledRestart

GOTO:EOF

:::::Converte la data in numero

:DateToJDN dd.mm.yyyy jdn=
setlocal
set date=%1
set /A yy=%date:~-4%, mm=1%date:~-7,2% %% 100, dd=1%date:~-10,2% %% 100
set /A a=mm-14, jdn=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075
endlocal & set %2=%jdn%
exit /B

:::::Converte il numero in data

:JDNToDate jdn dd.mm.yyyy=
setlocal
set /A l=%1+68569,n=(4*l)/146097,l=l-(146097*n+3)/4,i=(4000*(l+1))/1461001,l=l-(1461*i)/4+31,j=(80*l)/2447,dd=l-(2447*j)/80,l=j/11,mm=j+2-(12*l),yy=100*(n-49)+i+l
if %dd% lss 10 set dd=0%dd%
if %mm% lss 10 set mm=0%mm%
endlocal & set %2=%dd%.%mm%.%yy%
exit /B

endlocal

.

.

.

.

.

.

.

.

.

.

.

Spegnimento/riavvio programmato di un server VmWare ESX

EsxShutdown Dovete fare uno spegnimento o un riavvio una tantum di un server ESXi ma non avete altri server/client da cui lanciare questa operazione?

Fatelo fare al vostro server ESXi!

Ecco come fare:

SSH

Innanzitutto bisognerà abilitare (anche temporaneamente) il server SSH: quindi aprire lo vSphere Client, selezionare il server, ed aprire il tab Configuration; cliccare su Security profiles quindi selezionare le proprietà della sezione Services; scegliere la voce SSH ed avviare il servizio (scegliere anche Start and Stop with host se si intende farlo partire sempre automaticamente). Dalla sezione Firewall assicurarsi che SSH server sia spuntato per consentire le connessioni remote.
La stessa operazione (abilitazione dell’SSH) può essere svolta dalla console fisica dell’hypervisor.

Client SSH

Se non avete un client SSH vi consiglio di scaricare l’ottimo Putty. Lo trovate a questo link (qui il link per il download dell’eseguibile)

Connessione remota e schedulazione

Una volta lanciato il client SSH ci si potrà connettere al server ESX (usando le stesse credenziali dello vSphere client). Ottenuto l’accesso ecco i comandi da lanciare:
N.B.: attenzione che l’orario è in UTC quindi bisognerà sottrarre 1 ora.
Esempio per le ore 13:15 la riga deve cominciare con 15 12 *… dove 15 è il minuto e 12 l’ora

/bin/echo "15   12   *   *   *    /sbin/shutdown.sh && /sbin/poweroff" >> /var/spool/cron/crontabs/root
PIDprima=$(cat /var/run/crond.pid)
/bin/kill $(cat /var/run/crond.pid)
/usr/lib/vmware/busybox/bin/busybox crond 
PIDdopo=$(cat /var/run/crond.pid)
echo
echo Modificato e riavviato crond: il PID passa da $PIDprima a $PIDdopo

Quindi con queste operazioni abbiamo aggiunto una riga al crontab, lo schedulatore del sistema operativo di ESXi, in modo che alle 13:15 compia l’operazione richiesta (/sbin/shutdown.sh && /sbin/poweroff).
Poi abbiamo interrotto lo schedulatore killando il relativo processo (/bin/kill $(cat /var/run/crond.pid)).
Abbiamo poi riavviato lo schedulatore con le nuove impostazioni (/usr/lib/vmware/busybox/bin/busybox crond)
Le altre righe sono puramente informative.

ATTENZIONE:
Ricordarsi di impostare lo ShutDownGuest per ogni macchina virtuale. Questo fara sì che allo spegnimento dell’hypervisor ad ogni VM sarà imposto lo spegnimento dal proprio sistema operativo.
E’ indispensabile che i VMware Tools siano installati su tutte le VM!
ShutDownGuest