Toon posts:

[Batch] Systeemtijd vergelijken met vaste tijden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zoek een manier om een user toegang tot een WinXP systeem te weigeren buiten een bepaalde tijd om. Eerst een zoektocht langs Computerbeheer en Lokaal Beveiligingsbeleid, maar hier kan ik users alleen compleet toegang ontzeggen...maar niet voor of na bepaalde tijden.
Bij deze zoektocht kwam ik wel de optie "aanmeldingsscript" tegen, en hier kan ik dus batch bestanden uitvoeren :).

Wat ik tot nu toe al heb:
code:
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
31
32
33
34
35
36
37
@echo off
@cls
set begin = 06:00:00,00 
set eind = 23:00:00,00
echo ###########################
echo #                         #
echo #   Aanmelden gebruiker   #
echo #                         #
echo # User: xxxxxxx           #
echo #                         #
echo # Mededelingen            #
echo # ------------            #
echo # Alleen toegang tot      #
echo # systeem op deze tijden: #
echo #                         #
echo #     06:00 - 23:00       #
echo #                         #
echo # Huidige tijd:           #
echo #  %time%            #
echo #                         #
echo # Status:                 #
IF %time% < %begin% OR %time% > %eind% (
echo # GEEN TOEGANG            #
echo # AUTO-LOGOFF STARTED     #
echo #                         #
echo ###########################
pause 10
shutdown -l -f
)ELSE(
echo # Toegang                 #
echo # Veel plezier            #
echo #                         #
echo ###########################
pause 10
exit
)
echo on


Maar dit werkt natuurlijk niet, alleen al omdat < en > geen logische kleiner en groter dan operators zijn in dos (toch?).
Alleen, zoiets wil ik dus wel hebben ;).
Op deze pagina staat helemaal onderaan wel iets met tijden vergelijken, maar dat krijg ik niet aan de praat?

Dus het enige waar ik nu nog tegenaan loop: hoe kan ik de systeemtijd vergelijken met een vaste tijd. Voor de rest heb ik alles redelijk in de hand, normale gebruikers kunnen de systeemtijd niet aanpassen en ik kan shutdown.exe best als geplande taak toevoegen op de eindtijd ;).

Een hele andere manier om dit te realiseren is natuurlijk ook goed, maar die heb ik zelf nog niet kunnen vinden.

Edit: ik merk net dat je helemaal geen dosbox ziet bij een aanmeldingsscript (.cmd), dus al die echo's zijn eigenlijk vrij overbodig :+.

[ Voor 11% gewijzigd door Verwijderd op 25-06-2006 16:18 ]


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Je zou het uren en minuten component van de tijd kunnen opsplitsen - bv. door middel van "FOR" (for /? en dan kijken naar delims) - daarna kan je met IF en de "LT" of "GT" operators wel degelijk integer comparisons uitvoeren :)

Verwijderd

Topicstarter
Dat zou inderdaad ook kunnen, daar zal ik vanavond eens naar kijken :).

(ben niet zo bekend in de commando's van batch-scripts, en over opsplitsen werd niet gesproken in de tutorials die ik heb gevonden online)

Edit:
Hier kom ik nu op uit, welke mij bij tijden zowel < als > dan 12 GEEN TOEGANG geeft?
code:
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
31
32
33
34
35
@echo off
@cls
echo.%time% > tijd.txt
set vanaf = 12
FOR /F "tokens=1,2* delims=: " %%i in (tijd.txt) do echo ***LOGON SCRIPT***
echo ###########################
echo #                         #
echo #   Aanmelden gebruiker   #
echo #                         #
echo # User: xxxxxxx           #
echo #                         #
echo # Mededelingen            #
echo # ------------            #
echo # Alleen toegang tot      #
echo # systeem vanaf deze tijd:#
echo #                         #
echo #        12:00            #
echo #                         #
echo # Huidige tijd:           #
echo #  %time%            #
echo #                         #
echo # Status:                 #
IF %%i LSS %%vanaf (
echo # GEEN TOEGANG            #
echo # AUTO-LOGOFF STARTED     #
echo #                         #
echo ###########################
echo shutdown -l -f -t 10
) ELSE (
echo # Toegang                 #
echo # Veel plezier            #
echo #                         #
echo ###########################
pause
)

[ Voor 123% gewijzigd door Verwijderd op 25-06-2006 19:54 ]


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

code:
1
if 12 LSS 13 echo LESS


Op zich geeft dit wel het goede resultaat - dus die IF moet op zich wel werken. Laat anders die "IF" eens printen (dus zet er gewoon "ECHO") voor zodat je wat meer inzicht hebt :)

Overigens - voor WindowsXP heb je gewoon "logoff.exe" en hoef je niet met "shutdown.exe" te werken.

Verwijderd

Topicstarter
Hmm, het probleem zit 'em in het opslaan van %%i (de uitkomst van de FOR lus) denk ik.

Als ik dit doe:
code:
1
2
3
4
FOR /F "tokens=1,2* delims=: " %%i in (tijd.txt) do (
SET uur = %%i
echo Aha %%i %uur%
)

Dan krijg ik "Aha 20 ", waarbij die 20 van de %%i komt...maar uur is dus leeg?

Edit: Oh, dos luistert wel erg strict...tussen de = bij set mogen blijkbaar geen spaties staan...anders werkt het niet :). Nu gaat het perfect.

Even voor het archief de gehele code:
code:
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
31
32
33
34
35
36
37
38
@echo off
@cls
SET vanaf=12
echo.%time% > tijd.txt
FOR /F "tokens=1,2* delims=: " %%i in (tijd.txt) do (
SET uur=%%i
)
echo ***LOGON SCRIPT***
echo ###########################
echo #                         #
echo #   Aanmelden gebruiker   #
echo #                         #
echo # User: xxxxxxx           #
echo #                         #
echo # Mededelingen            #
echo # ------------            #
echo # Alleen toegang tot      #
echo # systeem vanaf deze tijd:#
echo #                         #
echo #        %vanaf%:00            #
echo #                         #
echo # Huidige tijd:           #
echo #  %time%            #
echo #                         #
echo # Status:                 #
IF %uur% LSS %vanaf% (
echo # GEEN TOEGANG            #
echo # AUTO-LOGOFF STARTED     #
echo #                         #
echo ###########################
logoff
) ELSE (
echo # Toegang                 #
echo # Veel plezier            #
echo #                         #
echo ###########################
pause
)


Bedankt :).

[ Voor 84% gewijzigd door Verwijderd op 25-06-2006 20:19 ]