I have shell script which checks the filesystem check but does not send the mail. I might be missing something very simple.. could you please help?
#!/bin/sh
_servers="machine name"
_out="/tmp/output.$$"
_email="me@there.com"
_sub="Disk Space Report $(date)"
_mail=/usr/bin/mail
>$_out
for s in $_servers
do
df -h >>$_out
done
$_mail -s "${_sub}" $_email <$_out
Your code cannot work the way it seems you want it work, as posted.
What UNIX and shell are you on? Do you have ssh keys et up on your servers for the user account that is supposed to run the script?
sendmail -v your.address@your.domain
Subject: This is a test
Text
Text
More text
CNTL-D
This will give verbose output and should be similar to this:-
$ sendmail -v your.address@your.domain
Subject: This is a test
Text
Text
More text
your.address@your.domain... Connecting to mailgateway.your.domain. via relay...
220-SMTP Relay
220 Warning: no name found in DNS for your host address
>>> EHLO localserver.your.domain
250-your.domain
250-SIZE 0
250-ETRN
250-ENHANCEDSTATUSCODES
250-DSN
250-VRFY
250-AUTH
250 8BITMIME
>>> MAIL From:<userid@localserver.your.domain> SIZE=34
250 2.0.0 userid@localserver.your.domain OK
>>> RCPT To:<your.address@your.domain>
250 2.0.0 your.address@your.domain OK
>>> DATA
354 Ready for data
>>> .
250 2.0.0 Message received OK
your.address@your.domain... Sent (Message received OK)
Closing connection to mailgateway.your.domain.
>>> QUIT
221 2.0.0 uisl.co.uk closing
Getting something failing in this output indicates a number of things, the most common being:-
There is not a DS record defined in sendmail.cf (somewhere below /etc depending on you OS) saying where to route remote mail to.
There is a firewall or other reason you cannot connect to the mail router specified above. This is SMTP port 25. Try telnet mailgateway.your.domain 25 to test it opens.
I hope that this helps, or at least rules something out.
@Jim. The machine is a solaris sun sparc. Iam little cautious in setting up the ssh. I though the ssh was required to check for remote servers. I might be wrong here. new to shell scripting. Is there a diff way or coding to acheive this(check file system on a particular unix box?
#!/bin/bash
_servers=xxx
_out="/tmp/output.$$"
_email="am@here.com"
_sub="Disk Space Report $(date)"
##_ssh=/usr/bin/ssh
_mailx=/usr/bin/mail
>$_out
for s in $_servers
do
df -h >>$_out
done
$_mailx "${_sub}" $_email <$_out