1 | <#
|
---|
2 | Author: David Schaerer, ETH Zurich, July 2016
|
---|
3 |
|
---|
4 | example of smartd env variables:
|
---|
5 | SMARTD_ADDRESS=user@yourdomain.local
|
---|
6 | SMARTD_DEVICE=/dev/sda
|
---|
7 | SMARTD_DEVICEINFO=WDC WD5000AAKS-00V1A0, S/N:WD-WCAWF3694327, WWN:5-0014ee-157d29a56, FW:05.01D05, 500 GB
|
---|
8 | SMARTD_DEVICESTRING=/dev/sda
|
---|
9 | SMARTD_DEVICETYPE=ata
|
---|
10 | SMARTD_FAILTYPE=EmailTest
|
---|
11 | SMARTD_MESSAGE=TEST EMAIL from smartd for device: /dev/sda
|
---|
12 | SMARTD_PREVCNT=0
|
---|
13 | SMARTD_TFIRST=Thu Jul 14 09:04:10 2016 WEDT
|
---|
14 | SMARTD_TFIRSTEPOCH=1468479850
|
---|
15 | #>
|
---|
16 |
|
---|
17 |
|
---|
18 | # Configure Email settings here
|
---|
19 | $from = "SmartMonTools <root@$($env:COMPUTERNAME.ToLower()).yourdomain.local>"
|
---|
20 | $defaultToAddress = "admin@yourdomain.local"
|
---|
21 | $smtpSrv = "smtp.yourdomain.local"
|
---|
22 |
|
---|
23 |
|
---|
24 |
|
---|
25 | ############# Email from/to part #############
|
---|
26 |
|
---|
27 | # To
|
---|
28 | # SMARTD_ADDRESS will be defined by smartd.conf (comma separated string of email addresses without spaces)
|
---|
29 | if (!$env:SMARTD_ADDRESS){
|
---|
30 | # If no email recipient was defined set it to a predefined email address
|
---|
31 | $to = $defaultToAddress
|
---|
32 | } else {
|
---|
33 | # Convert recipient string from smartd.config into a valid string array for Send-MailMessage cmdlet
|
---|
34 | [string[]]$to = $env:SMARTD_ADDRESS.Split(" ")
|
---|
35 |
|
---|
36 | # If any spaces, remove them
|
---|
37 | for ($i=0;$i -lt $to.Count;$i++){
|
---|
38 | $to[$i] = $to[$i].Trim()
|
---|
39 | }
|
---|
40 | }
|
---|
41 |
|
---|
42 | ############# Subject part #############
|
---|
43 |
|
---|
44 | $subject="SMART error ($env:SMARTD_FAILTYPE) detected on host: $env:COMPUTERNAME"
|
---|
45 |
|
---|
46 | ############# Email text part #############
|
---|
47 |
|
---|
48 | if (!($env:SMARTD_FAILTYPE -eq "EmailTest")){
|
---|
49 | $furtherInvest="You can also use the smartctl utility for further investigation.`n"
|
---|
50 | }
|
---|
51 |
|
---|
52 | if (!($env:SMARTD_PREVCNT -eq 0)){
|
---|
53 | $sentTime = "The original message about this issue was sent at $env:SMARTD_TFIRST.`n"
|
---|
54 | }
|
---|
55 |
|
---|
56 | switch ($env:SMARTD_NEXTDAYS){
|
---|
57 | "" {$nextWarn="No additional messages about this problem will be sent.`n"}
|
---|
58 | 1 {$nextWarn="Another message will be sent in 24 hours if the problem persists.`n"}
|
---|
59 | default {$nextWarn="Another message will be sent in $env:SMARTD_NEXTDAYS days if the problem persists.`n"}
|
---|
60 | }
|
---|
61 |
|
---|
62 | $emailBody=("
|
---|
63 | This message was generated by the smartd service running on:
|
---|
64 |
|
---|
65 | host name: $env:COMPUTERNAME
|
---|
66 | DNS domain: $((Get-WmiObject win32_computersystem).Domain)
|
---|
67 | Win domain: $env:USERDOMAIN
|
---|
68 |
|
---|
69 | The following warning/error was logged by the smartd service:
|
---|
70 |
|
---|
71 | $env:SMARTD_MESSAGE
|
---|
72 |
|
---|
73 | Device info:
|
---|
74 | $env:SMARTD_DEVICEINFO
|
---|
75 |
|
---|
76 | For details see the event log or log file of smartd.
|
---|
77 | $($furtherInvest)$($sentTime)$($nextWarn)
|
---|
78 |
|
---|
79 | --
|
---|
80 | This message has been generated with SmartMonTools $((Get-Item .\smartd.exe).VersionInfo.FileVersion)
|
---|
81 | ")
|
---|
82 | Write-Debug $emailBody > .\smartdMsg-$env:COMPUTERNAME.txt
|
---|
83 |
|
---|
84 | ############# Email delivery part #############
|
---|
85 |
|
---|
86 | if (!$subject){
|
---|
87 | $subject = "smartd email error: missing subject"
|
---|
88 | } elseif (!$emailBody){
|
---|
89 | $emailBody = "smartd email error: missing email body."
|
---|
90 | }
|
---|
91 |
|
---|
92 | # Send the email
|
---|
93 | Send-MailMessage -SmtpServer $smtpSrv -to $to -from $from -Subject $subject -Body $emailBody
|
---|