View Full Version : Batch per impostare ora PC in rete
elbittos7
14-10-2019, 09:45
Salve a tutti,
non so se questa è la sezione giusta, questo è il mio primo post.
Dovrei creare uno script che mi permetta di settare orari diversi, per gestire un delay del satelite, manualmente a dei pc nella stessa rete.
Esempio
PC 1 - 20.00
PC 2 -20.08
Il comando che cerchi è "net time"
https://docs.microsoft.com/it-it/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings
elbittos7
14-10-2019, 10:35
Grazie, della risposta. Gli do un'occhiata.
elbittos7
14-10-2019, 10:43
HO visto, ma non riesco a trovare la sintassi giusta.
Mi pare di aver capito che con questo comando sincronizzo il CLIENT con un server.
Io vorrei passargli manualmente l'orario in modo da calcolare e mantere costante lo scarto.
Grazie
date 14-10-2019
time 12:00:00,00
Ovviamente devi stoppare e disabilitare il servizio Windows time altrimenti ogni tot fa il recheck
bandit400
14-10-2019, 11:44
Il comando da utilizzare, eseguito come Amministratore, è time:
https://i.ibb.co/ZVwRMPt/Immagine.png
Disabilita il servizio W32Time in accordo con quanto qui riportato: https://docs.microsoft.com/it-it/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings
Come suggerito da @Kaya, nei minuti dopo la mezzanotte pari all'offset che devi realizzare, devi gestire anche la data con il comando date.
elbittos7
14-10-2019, 11:56
Io ho un SERVER 192.168.1.2 - ORAIO 12.00.00
voglio impostare da questo SERVER su un CLIENT 192.168.1.3 l'orario 12.08.00
Uso il comando NET TIME \\IP ADDRESS set\.. come gli passo manualmente orario?
Non puoi farlo cosi.
Devi usare psexec
psexec \\ip_del_computer "net time 12:00:00"
Psexec fa parte dei pstools ( https://docs.microsoft.com/en-us/sysinternals/downloads/psexec )
Ovviamente devi avere anche le porte del firewall aperte (RPC di solito) sulle macchine e utenze con password (aka: non puoi NON avere una password impostata sul pc)
elbittos7
14-10-2019, 12:23
PsExec could not start net time 12:00:00 on 192.168.1.8:
La sintassi del nome del file, della directory o del volume non è corretta.
NO FIREWALL - NO PASSWORD
elbittos7
14-10-2019, 12:34
NON Aveveo letto bene. Infatti bisogna avere perfoza password su pc
elbittos7
14-10-2019, 14:41
PsExec.exe \\192.168.1.8 -u Administrator -p *****77 "net time 16:00"
Creato utente con PASSWORD - ma continua a darmi errore
Impossibile trovare il file specificato.
bandit400
14-10-2019, 14:48
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
elbittos7
14-10-2019, 15:14
Grazie a tutti,
ho avuto modo di documentarmi bene su PsExec.
Funziona benissimo con tutti i comandi. Net time non permette l'asseganzione diretta dell'orario, fa si che si connette a un server che rilascia orario.
bandit400
14-10-2019, 18:29
@elbittos7, nel mentre ho messo giù uno scriptino PHP che legge l'ora da un server NTP e formatta la data e l'orario per passarlo ai comandi date e time.
Questo scriptino, inoltre, può creare un offset tra l'orario del server NTP e quello che deve essere impostato sul PC sul quale gira.
Se lo installi nei due PC, li avrai tutte e due sincronizzati, uno con il server NTP più l'offset pari a zero e l'altro con il server NTP più l'offset che ti occorre.
Per funzionare deve girare con privilegi di amministratore.
<?php
/* IMPOSTAZIONI */
date_default_timezone_set('Europe/Rome');
$timeserver = "time.inrim.it";
$timestamp_offset = 480; //offset espresso in secondi - 8 minuti x 60 = 480 secondi
/* IMPOSTAZIONI */
/* Query a time server */
/* (C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */
function query_time_server ($timeserver, $socket) {
$fp = fsockopen($timeserver,$socket,$err,$errstr,5);
# parameters: server, socket, error code, error text, timeout
if ($fp) {
fputs($fp,"\n");
$timevalue = fread($fp,49);
fclose($fp); # close the connection
}
else {
$timevalue = " ";
}
$ret = array();
$ret[] = $timevalue;
$ret[] = $err; # error code
$ret[] = $errstr; # error text
return($ret);
}
/* Query a time server */
/* (C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at qrq.de> */
$timercvd = query_time_server($timeserver,13);
if (!$timercvd[1]) {
$timevalue = $timercvd[0];
echo "From server: ............... ".$timevalue;
}
else {
exit();
}
$timestamp=strtotime($timevalue);
echo "Timestamp: ................. ".$timestamp."\n";
$timestamp_updated = $timestamp + $timestamp_offset;
echo "Timestamp + offset: ........ ".$timestamp_updated."\n";
$date_updated = date("d-m-Y H:i:s",$timestamp_updated);
echo "From Timestamp + offset: ... ".$date_updated."\n";
exec("date ".date("d-m-Y",$timestamp_updated));
exec("time ".date("H:i:s",$timestamp_updated));
?>
E questo è il risultato con un offset di 8 min. rispetto al server NTP...
https://i.ibb.co/RgscYXz/Immagine.png
P.S.: Per i puristi, non criticatemi! L'ho messo giù in meno di un'ora, mentre lavoravo su altro e tutto è, tranne che bello. Però funziona e lo condivido solo come spunto per una base migliore. :)
PsExec.exe \\192.168.1.8 -u Administrator -p *****77 "net time 16:00"
Creato utente con PASSWORD - ma continua a darmi errore
Impossibile trovare il file specificato.
Scusami, mio errore!
il comando è solo TIME oppure DATE, togli net (e ricorda anche i secondi)
PsExec.exe \\192.168.1.8 -u Administrator -p *****77 "time 16:00:00,00"
@bandit400: perchè usare una forbice per un lavoro da cacciavite? ;-)
bandit400
15-10-2019, 09:21
@bandit400: perchè usare una forbice per un lavoro da cacciavite? ;-)
Perché è tutto automatico, perché ti mantiene l'offset al valore voluto, perché una volta fatto non lo tocchi più. E perché sono strano io. Lo riconosco... :D
elbittos7
16-10-2019, 08:55
Grazie a tutti. Perfetto ed utili entrambi i procedimenti.
:-)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.