Annotation of embedaddon/smartmontools/os_win32/smartd_warning.cmd, revision 1.1
1.1 ! misho 1: @echo off
! 2: ::
! 3: :: smartd warning script
! 4: ::
! 5: :: Copyright (C) 2012 Christian Franke <smartmontools-support@lists.sourceforge.net>
! 6: ::
! 7: :: This program is free software; you can redistribute it and/or modify
! 8: :: it under the terms of the GNU General Public License as published by
! 9: :: the Free Software Foundation; either version 2, or (at your option)
! 10: :: any later version.
! 11: ::
! 12: :: You should have received a copy of the GNU General Public License
! 13: :: (for example COPYING); If not, see <http://www.gnu.org/licenses/>.
! 14: ::
! 15: :: $Id: smartd_warning.cmd 3716 2012-11-27 20:10:06Z chrfranke $
! 16: ::
! 17:
! 18: set err=
! 19:
! 20: :: Parse options
! 21: set dryrun=
! 22: if "%1" == "--dryrun" (
! 23: set dryrun=t
! 24: shift
! 25: )
! 26:
! 27: if not "%1" == "" (
! 28: echo smartd warning message script
! 29: echo.
! 30: echo Usage:
! 31: echo set SMARTD_MAILER='Path to external script, empty for "blat"'
! 32: echo set SMARTD_ADDRESS='Space separated mail adresses, empty if none'
! 33: echo set SMARTD_MESSAGE='Error Message'
! 34: echo set SMARTD_FAILTYPE='Type of failure, "EMailTest" for tests'
! 35: echo set SMARTD_TFIRST='Date of first message sent, empty if none'
! 36: echo set SMARTD_TFIRSTEPOCH='time_t format of above'
! 37: echo set SMARTD_PREVCNT='Number of previous messages, 0 if none'
! 38: echo set SMARTD_NEXTDAYS='Number of days until next message, empty if none'
! 39: echo set SMARTD_DEVICEINFO='Device identify information'
! 40: echo :: set SMARTD_DEVICE='Device name'
! 41: echo :: set SMARTD_DEVICESTRING='Annotated device name'
! 42: echo :: set SMARTD_DEVICETYPE='Device type from -d directive, "auto" if none'
! 43:
! 44: echo smartd_warning.cmd [--dryrun]
! 45: goto EOF
! 46: )
! 47:
! 48: if "%SMARTD_ADDRESS%%SMARTD_MAILER%" == "" (
! 49: echo smartd_warning.cmd: SMARTD_ADDRESS or SMARTD_MAILER must be set
! 50: goto EOF
! 51: )
! 52:
! 53: :: Format subject
! 54: set SMARTD_SUBJECT=SMART error (%SMARTD_FAILTYPE%) detected on host: %COMPUTERNAME%
! 55:
! 56: :: Temp file for message
! 57: if not "%TMP%" == "" set SMARTD_FULLMSGFILE=%TMP%\smartd_warning-%DATE%-%RANDOM%.txt
! 58: if "%TMP%" == "" set SMARTD_FULLMSGFILE=smartd_warning-%DATE%-%RANDOM%.txt
! 59:
! 60: :: Format message
! 61: (
! 62: echo This message was generated by the smartd service running on:
! 63: echo.
! 64: echo. host name: %COMPUTERNAME%
! 65: if not "%USERDNSDOMAIN%" == "" echo. DNS domain: %USERDNSDOMAIN%
! 66: if "%USERDNSDOMAIN%" == "" echo. DNS domain: [Empty]
! 67: if not "%USERDOMAIN%" == "" echo. Win domain: %USERDOMAIN%
! 68: echo.
! 69: echo The following warning/error was logged by the smartd service:
! 70: echo.
! 71: :: SMARTD_MESSAGE and SMARTD_DEVICEINFO may contain parentheses
! 72: for %%m in ("%SMARTD_MESSAGE%") do echo.%%~m
! 73: echo.
! 74: echo Device info:
! 75: for %%m in ("%SMARTD_DEVICEINFO%") do echo.%%~m
! 76: set m=
! 77: echo.
! 78: echo For details see the event log or log file of smartd.
! 79: if not "%SMARTD_FAILTYPE%" == "EmailTest" (
! 80: echo.
! 81: echo You can also use the smartctl utility for further investigation.
! 82: if not "%SMARTD_PREVCNT%" == "0" echo The original message about this issue was sent at %SMARTD_TFIRST%
! 83: if "%SMARTD_NEXTDAYS%" == "" (
! 84: echo No additional messages about this problem will be sent.
! 85: ) else ( if "%SMARTD_NEXTDAYS%" == "1" (
! 86: echo Another message will be sent in 24 hours if the problem persists.
! 87: ) else (
! 88: echo Another message will be sent in %SMARTD_NEXTDAYS% days if the problem persists.
! 89: ))
! 90: )
! 91: ) > "%SMARTD_FULLMSGFILE%"
! 92:
! 93: if not "%dryrun%" == "" (
! 94: echo %SMARTD_FULLMSGFILE%:
! 95: type "%SMARTD_FULLMSGFILE%"
! 96: echo --EOF--
! 97: )
! 98:
! 99: :: Check first address
! 100: set first=
! 101: for /F "tokens=1*" %%a in ("%SMARTD_ADDRESS%") do (set first=%%a)
! 102: set wtssend=
! 103: if "%first%" == "console" set wtssend=-c
! 104: if "%first%" == "active" set wtssend=-a
! 105: if "%first%" == "connected" set wtssend=-s
! 106: set first=
! 107:
! 108: if not "%wtssend%" == "" (
! 109: :: Show Message box(es) via WTSSendMessage()
! 110: if not "%dryrun%" == "" (
! 111: echo call wtssendmsg %wtssend% "%SMARTD_SUBJECT%" - ^< "%SMARTD_FULLMSGFILE%"
! 112: ) else (
! 113: call wtssendmsg %wtssend% "%SMARTD_SUBJECT%" - < "%SMARTD_FULLMSGFILE%"
! 114: if errorlevel 1 set err=t
! 115: )
! 116: :: Remove first address
! 117: for /F "tokens=1*" %%a in ("%SMARTD_ADDRESS%") do (set SMARTD_ADDRESS=%%b)
! 118: )
! 119: set wtssend=
! 120:
! 121: :: Make comma separated address list
! 122: set SMARTD_ADDRCSV=
! 123: if not "%SMARTD_ADDRESS%" == "" set SMARTD_ADDRCSV=%SMARTD_ADDRESS: =,%
! 124:
! 125: :: Use blat mailer by default
! 126: if not "%SMARTD_ADDRESS%" == "" if "%SMARTD_MAILER%" == "" set SMARTD_MAILER=blat
! 127:
! 128: :: Send mail or run command
! 129: if not "%SMARTD_ADDRCSV%" == "" (
! 130:
! 131: :: Send mail
! 132: if not "%dryrun%" == "" (
! 133: echo call "%SMARTD_MAILER%" - -q -subject "%SMARTD_SUBJECT%" -to "%SMARTD_ADDRCSV%" ^< "%SMARTD_FULLMSGFILE%"
! 134: ) else (
! 135: call "%SMARTD_MAILER%" - -q -subject "%SMARTD_SUBJECT%" -to "%SMARTD_ADDRCSV%" < "%SMARTD_FULLMSGFILE%"
! 136: if errorlevel 1 set err=t
! 137: )
! 138:
! 139: ) else ( if not "%SMARTD_MAILER%" == "" (
! 140:
! 141: :: Run command
! 142: if not "%dryrun%" == "" (
! 143: echo call "%SMARTD_MAILER%" ^<nul
! 144: ) else (
! 145: call "%SMARTD_MAILER%" <nul
! 146: if errorlevel 1 set err=t
! 147: )
! 148:
! 149: ))
! 150:
! 151: del "%SMARTD_FULLMSGFILE%" >nul 2>nul
! 152:
! 153: :EOF
! 154: if not "%err%" == "" goto ERROR 2>nul
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>