Batch, Skriptování, Windows

Smazat jen jednou

set co_mazat=c:\progra~1\data
set semafor=c:\progra~1\semafor_data.000
 
if not exist %semafor% cmd /c rmdir /s /q %co_mazat%
echo 0 > %semafor%

Hardware, Networking

Wake On LAN – probuzení stroje z Internetu

Pro „probouzení“ stroje v LAN je potřeba splnit několik požadavků, ale v podstatě se pracuje na 2. vrstvě ISO/OSI. Více zde. Při probouzení stroje z WAN do hry vstupuje další vrstva a po cestě musí magick paket překonat router, který ho pošle do správného subnetu.
Pokud máte veřejnou IP adresu (pro případ WOL musí být navíc i pevná) a vlastní router, nastavení na routeru bude vypadat následovně:asus
Na obrázku je screenshot z konfigurace routeru ASUS WL500g Premium. V nastavení „NAT Setting –> Virtual Server“ je otevřen port TCP/UDP 80 a směrován do LAN na rozhraní 192.168.1.10 port TCP/UDP 3389, což je port, který defaultně používá microsoftí vzdálená plocha (Remote Desktop Protokol).
Pro „probuzení“ stroje pak stačí zadat do nějaké online WOL aplikace na internetu (např. http://wake-on-lan.samuraj-cz.com) IP adresu na WAN rozhraní routeru, MAC adresu probouzeného stroje a port, v tomto případě port č. 80. I když je udáváno, že magick paket je posílán jako UDP datagram na port 0, 7 nebo 9, spolehlivě fungují i ostatní porty stejně jako v tomto případě UDP 3389 – což je nakonec výhodné z hlediska bezpečnosti a jednoduchosti konfigurace v tom, že pro dvě služby je otevřen jeden port.

Batch, Skriptování, Windows

Výpis chyb v tiskových frontách do e-mailu 2

Vylepšená verze http://www.strachota.net/vypis-chyb-v-tiskovych-frontach-do-e-mailu/, která každou jedinečnou chybu pošle pouze jednou.
set log=c:\scripts\tiskovefronty\chyba1.log
set templog=c:\scripts\tiskovefronty\chyba2.log
set semafor=c:\scripts\tiskovefronty\semafor.dat
set mail_od=print.spooler@%userdnsdomain%
set mail_komu=admin@%userdnsdomain%
set mail_server=10.50.201.95
 
if not exist %semafor% (echo 0 > %semafor%)
 
set stavfronty=wmic printjob where "status like 'error'" get document, owner, name, hostprintqueue, status, timesubmitted, totalpages
set poslimail=postie -host:%mail_server% -to:%mail_komu% -from:%mail_od% -s:"Spooler error" -msg:"Prilozen log"
 
%stavfronty% > "%log%"
for /f %%a in (semafor.dat) do (set stavsemaforu=%%a)
if %stavsemaforu% == 1 goto jechyba
 
:nenichyba
%stavfronty% > "%log%"
type "%log%" | findstr /i "error"
if errorlevel 1 (
echo 0 > %semafor%
) else (
echo 1 > %semafor%
%poslimail% -a:"%log%"
)
goto konec
 
:jechyba
%stavfronty% > "%templog%"
fc "%templog%" "%log%"
if errorlevel 1 (
%poslimail% -a:"%templog%"
goto konec
) else (
goto :testchyby
)
 
:testchyby
type "%templog%" | findstr /i "error"
if errorlevel 1 (
echo 0 > %semafor%
) else (
echo 1 > %semafor%
)
 
:konec