编写Shell脚本监测服务器状态

利用Shell脚本来监控Linux系统的负载、CPU、内存、硬盘、用户登录数。

  这几天在学习研究shell脚本,写的一些系统负载、CPU、内存、硬盘、用户数监控脚本程序。在没有nagios监控的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统资源的使用情况。

一、编写linux系统告警邮件脚本

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># vim</span> <span class="sh_symbol">/</span>scripts<span class="sh_symbol">/</span>sys<span class="sh_symbol">-</span>warning<span class="sh_symbol">.</span>sh
<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span><span class="sh_symbol">!/</span>bin<span class="sh_symbol">/</span>bash
<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>监控系统负载与CPU、内存、硬盘、登录用户数,超出警戒值则发邮件告警。

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>提取本服务器的IP地址信息
IP<span class="sh_symbol">=</span>`<span class="sh_usertype">ifconfig</span><span class="sh_normal"> </span>eth0 <span class="sh_symbol">|</span> grep <span class="sh_string" style="color: rgb(255, 0, 255);">"inet addr"</span> <span class="sh_symbol">|</span> cut <span class="sh_symbol">-</span>f <span class="sh_number" style="color: rgb(255, 0, 255);">2</span> <span class="sh_symbol">-</span>d <span class="sh_string" style="color: rgb(255, 0, 255);">":"</span> <span class="sh_symbol">|</span> cut <span class="sh_symbol">-</span>f <span class="sh_number" style="color: rgb(255, 0, 255);">1</span> <span class="sh_symbol">-</span>d <span class="sh_string" style="color: rgb(255, 0, 255);">" "</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># 1</span>、监控系统负载的变化情况,超出时发邮件告警:

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>抓取cpu的总核数
cpu_num<span class="sh_symbol">=</span>`grep <span class="sh_symbol">-</span>c <span class="sh_string" style="color: rgb(255, 0, 255);">'model name'</span> <span class="sh_symbol">/</span>proc<span class="sh_symbol">/</span>cpuinfo`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>抓取当前系统<span class="sh_number" style="color: rgb(255, 0, 255);">15</span>分钟的平均负载值
load_15<span class="sh_symbol">=</span>`uptime <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $12}'</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>计算当前系统单个核心<span class="sh_number" style="color: rgb(255, 0, 255);">15</span>分钟的平均负载值,结果小于<span class="sh_number" style="color: rgb(255, 0, 255);">1.0</span>时前面个位数补<span class="sh_number" style="color: rgb(255, 0, 255);">0</span>。
average_load<span class="sh_symbol">=</span>`echo <span class="sh_string" style="color: rgb(255, 0, 255);">"scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a"</span> <span class="sh_symbol">|</span> bc`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>取上面平均负载值的个位整数
average_int<span class="sh_symbol">=</span>`echo $average_load <span class="sh_symbol">|</span> cut <span class="sh_symbol">-</span>f <span class="sh_number" style="color: rgb(255, 0, 255);">1</span> <span class="sh_symbol">-</span>d <span class="sh_string" style="color: rgb(255, 0, 255);">"."</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>设置系统单个核心<span class="sh_number" style="color: rgb(255, 0, 255);">15</span>分钟的平均负载的告警值为<span class="sh_number" style="color: rgb(255, 0, 255);">0.70</span><span class="sh_symbol">(</span>即使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">70</span><span class="sh_symbol">%</span>的时候告警<span class="sh_symbol">)</span>。
load_warn<span class="sh_symbol">=</span><span class="sh_number" style="color: rgb(255, 0, 255);">0.70</span>

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>当单个核心<span class="sh_number" style="color: rgb(255, 0, 255);">15</span>分钟的平均负载值大于等于<span class="sh_number" style="color: rgb(255, 0, 255);">1.0</span>(即个位整数大于<span class="sh_number" style="color: rgb(255, 0, 255);">0</span>) ,直接发邮件告警;如果小于<span class="sh_number" style="color: rgb(255, 0, 255);">1.0</span>则进行二次比较
<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$average_int <span class="sh_symbol">></span> <span class="sh_number" style="color: rgb(255, 0, 255);">0</span><span class="sh_symbol">));</span> then
echo <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!"</span> <span class="sh_symbol">|</span> mutt <span class="sh_symbol">-</span>s <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器系统负载严重告警!!!"</span> test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
<span class="sh_keyword" style="color: rgb(165, 42, 42);">else</span>

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>当前系统<span class="sh_number" style="color: rgb(255, 0, 255);">15</span>分钟平均负载值与告警值进行比较(当大于告警值<span class="sh_number" style="color: rgb(255, 0, 255);">0.70</span>时会返回<span class="sh_number" style="color: rgb(255, 0, 255);">1</span>,小于时会返回<span class="sh_number" style="color: rgb(255, 0, 255);">0</span> )
load_now<span class="sh_symbol">=</span>`expr $average_load <span class="sh_symbol">\></span> $load_warn`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>如果系统单个核心<span class="sh_number" style="color: rgb(255, 0, 255);">15</span>分钟的平均负载值大于告警值<span class="sh_number" style="color: rgb(255, 0, 255);">0.70</span>(返回值为<span class="sh_number" style="color: rgb(255, 0, 255);">1</span>),则发邮件给管理员
<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$load_now <span class="sh_symbol">==</span> <span class="sh_number" style="color: rgb(255, 0, 255);">1</span><span class="sh_symbol">));</span> then
echo <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。"</span> <span class="sh_symbol">|</span> mutt <span class="sh_symbol">-</span>s <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器系统负载告警"</span> test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
fi

fi

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># 2</span>、监控系统cpu的情况,当使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>的时候发告警邮件:

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>取当前空闲cpu百份比值(只取整数部分)
cpu_idle<span class="sh_symbol">=</span>`top <span class="sh_symbol">-</span>b <span class="sh_symbol">-</span>n <span class="sh_number" style="color: rgb(255, 0, 255);">1</span> <span class="sh_symbol">|</span> <span class="sh_usertype">grep</span><span class="sh_normal"> </span>Cpu <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $5}'</span> <span class="sh_symbol">|</span> cut <span class="sh_symbol">-</span>f <span class="sh_number" style="color: rgb(255, 0, 255);">1</span> <span class="sh_symbol">-</span>d <span class="sh_string" style="color: rgb(255, 0, 255);">"."</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>设置空闲cpu的告警值为<span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">%</span>,如果当前cpu使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>(即剩余小于<span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">%</span>),立即发邮件告警
<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$cpu_idle <span class="sh_symbol"><</span> <span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">));</span> then
echo <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。"</span> <span class="sh_symbol">|</span> mutt <span class="sh_symbol">-</span>s <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器CPU告警"</span> test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
fi

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># 3</span>、监控系统交换分区swap的情况,当使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>的时候发告警邮件:

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>系统分配的交换分区总量
swap_total<span class="sh_symbol">=</span>`free <span class="sh_symbol">-</span>m <span class="sh_symbol">|</span> <span class="sh_usertype">grep</span><span class="sh_normal"> </span>Swap <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $2}'</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>当前剩余的交换分区free大小
swap_free<span class="sh_symbol">=</span>`free <span class="sh_symbol">-</span>m <span class="sh_symbol">|</span> <span class="sh_usertype">grep</span><span class="sh_normal"> </span>Swap <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $4}'</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>当前已使用的交换分区used大小
swap_used<span class="sh_symbol">=</span>`free <span class="sh_symbol">-</span>m <span class="sh_symbol">|</span> <span class="sh_usertype">grep</span><span class="sh_normal"> </span>Swap <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $3}'</span>`

<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$swap_used <span class="sh_symbol">!=</span> <span class="sh_number" style="color: rgb(255, 0, 255);">0</span><span class="sh_symbol">));</span> then
<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位<span class="sh_number" style="color: rgb(255, 0, 255);">0</span>
swap_per<span class="sh_symbol">=</span><span class="sh_number" style="color: rgb(255, 0, 255);">0</span>`echo <span class="sh_string" style="color: rgb(255, 0, 255);">"scale=2;$swap_free/$swap_total"</span> <span class="sh_symbol">|</span> bc`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>设置交换分区的告警值为<span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">%(</span>即使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>的时候告警<span class="sh_symbol">)</span>。
swap_warn<span class="sh_symbol">=</span><span class="sh_number" style="color: rgb(255, 0, 255);">0.20</span>

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>当前剩余交换分区百分比与告警值进行比较(当大于告警值<span class="sh_symbol">(</span>即剩余<span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">%</span>以上<span class="sh_symbol">)</span>时会返回<span class="sh_number" style="color: rgb(255, 0, 255);">1</span>,小于<span class="sh_symbol">(</span>即剩余不足<span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">%)</span>时会返回<span class="sh_number" style="color: rgb(255, 0, 255);">0</span> )
swap_now<span class="sh_symbol">=</span>`expr $swap_per <span class="sh_symbol">\></span> $swap_warn`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>如果当前交换分区使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>(即剩余小于<span class="sh_number" style="color: rgb(255, 0, 255);">20</span><span class="sh_symbol">%</span>,上面的返回值等于<span class="sh_number" style="color: rgb(255, 0, 255);">0</span>),立即发邮件告警
<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$swap_now <span class="sh_symbol">==</span> <span class="sh_number" style="color: rgb(255, 0, 255);">0</span><span class="sh_symbol">));</span> then
echo <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。"</span> <span class="sh_symbol">|</span> mutt <span class="sh_symbol">-</span>s <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器内存告警"</span> test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
fi

fi

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># 4</span>、监控系统硬盘根分区使用的情况,当使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>的时候发告警邮件:

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>取当前根分区(<span class="sh_symbol">/</span>dev<span class="sh_symbol">/</span>sda3)已用的百份比值(只取整数部分)
disk_sda3<span class="sh_symbol">=</span>`df <span class="sh_symbol">-</span>h <span class="sh_symbol">|</span> grep <span class="sh_symbol">/</span>dev<span class="sh_symbol">/</span>sda3 <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $5}'</span> <span class="sh_symbol">|</span> cut <span class="sh_symbol">-</span>f <span class="sh_number" style="color: rgb(255, 0, 255);">1</span> <span class="sh_symbol">-</span>d <span class="sh_string" style="color: rgb(255, 0, 255);">"%"</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>设置空闲硬盘容量的告警值为<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>,如果当前硬盘使用超过<span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">%</span>,立即发邮件告警
<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$disk_sda3 <span class="sh_symbol">></span> <span class="sh_number" style="color: rgb(255, 0, 255);">80</span><span class="sh_symbol">));</span> then
echo <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器 /根分区 使用率已经超过80%,请及时处理。"</span> <span class="sh_symbol">|</span> mutt <span class="sh_symbol">-</span>s <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器硬盘告警"</span> test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
fi

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#5</span>、监控系统用户登录的情况,当用户数超过<span class="sh_number" style="color: rgb(255, 0, 255);">3</span>个的时候发告警邮件:

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>取当前用户登录数(只取数值部分)
users<span class="sh_symbol">=</span>`uptime <span class="sh_symbol">|</span> awk <span class="sh_string" style="color: rgb(255, 0, 255);">'{print $6}'</span>`

<span class="sh_preproc" style="color: rgb(160, 32, 240);">#</span>设置登录用户数的告警值为<span class="sh_number" style="color: rgb(255, 0, 255);">3</span>个,如果当前用户数超过<span class="sh_number" style="color: rgb(255, 0, 255);">3</span>个,立即发邮件告警
<span class="sh_keyword" style="color: rgb(165, 42, 42);">if</span> <span class="sh_symbol">((</span>$users <span class="sh_symbol">>=</span> <span class="sh_number" style="color: rgb(255, 0, 255);">3</span><span class="sh_symbol">));</span> then
echo <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器用户数已经达到$users个,请及时处理。"</span> <span class="sh_symbol">|</span> mutt <span class="sh_symbol">-</span>s <span class="sh_string" style="color: rgb(255, 0, 255);">"$IP 服务器用户数告警"</span> test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
fi
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># chmod</span> a<span class="sh_symbol">+</span>x <span class="sh_symbol">/</span>scripts<span class="sh_symbol">/</span>sys<span class="sh_symbol">-</span>warning<span class="sh_symbol">.</span>sh

二、加入任务计划:每十分钟检测一次,有告警则立即发邮件(十分钟发一次)。

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># crontab</span> <span class="sh_symbol">-</span>e
<span class="sh_symbol">*/</span><span class="sh_number" style="color: rgb(255, 0, 255);">10</span> <span class="sh_symbol">*</span> <span class="sh_symbol">*</span> <span class="sh_symbol">*</span> <span class="sh_symbol">*</span>  <span class="sh_symbol">/</span>scripts<span class="sh_symbol">/</span>sys<span class="sh_symbol">-</span>warning<span class="sh_symbol">.</span>sh 
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># service</span> crond restart

三、要实现服务器能够发邮件,须开启Sendmail服务或是安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具)

1、下载安装:http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># tar</span> <span class="sh_usertype">jxvf</span><span class="sh_normal"> </span>msmtp<span class="sh_number" style="color: rgb(255, 0, 255);">-1.4.16</span><span class="sh_symbol">.</span>tar<span class="sh_symbol">.</span>bz2
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># cd</span> msmtp<span class="sh_number" style="color: rgb(255, 0, 255);">-1.4.16</span>
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># </span><span class="sh_symbol">./</span>configure <span class="sh_symbol">--</span>prefix<span class="sh_symbol">=/</span>usr<span class="sh_symbol">/</span>local<span class="sh_symbol">/</span>msmtp
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># make</span>
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># make</span> install

2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名test,密码123456)  

<span class="sh_preproc" style="color: rgb(160, 32, 240);"># vim</span> <span class="sh_symbol">~/.</span>msmtprc
account <span class="sh_keyword" style="color: rgb(165, 42, 42);">default</span>  
host <span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
<span class="sh_usertype">from</span><span class="sh_normal"> </span>test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
auth login
user test
password <span class="sh_number" style="color: rgb(255, 0, 255);">123456</span>
logfile <span class="sh_symbol">~/.</span>msmtp<span class="sh_symbol">.</span>log
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># chmod</span> <span class="sh_number" style="color: rgb(255, 0, 255);">600</span>  <span class="sh_symbol">~/.</span>msmtprc
<span class="sh_preproc" style="color: rgb(160, 32, 240);"># touch</span> <span class="sh_symbol">~/.</span>msmtp<span class="sh_symbol">.</span>log

3、mutt安装配置:(一般linux下有默认安装mutt)  

<span class="sh_usertype">set</span><span class="sh_normal"> </span>sendmail<span class="sh_symbol">=</span><span class="sh_string" style="color: rgb(255, 0, 255);">"/usr/local/msmtp/bin/msmtp"</span>
<span class="sh_usertype">set</span><span class="sh_normal"> </span>use_from<span class="sh_symbol">=</span>yes
<span class="sh_usertype">set</span><span class="sh_normal"> </span>realname<span class="sh_symbol">=</span><span class="sh_string" style="color: rgb(255, 0, 255);">"memory"</span>
<span class="sh_usertype">set</span><span class="sh_normal"> </span>from<span class="sh_symbol">=</span>test@<span class="sh_number" style="color: rgb(255, 0, 255);">126</span><span class="sh_symbol">.</span>com
<span class="sh_usertype">set</span><span class="sh_normal"> </span>envelope_from<span class="sh_symbol">=</span>yes
<span class="sh_usertype">set</span><span class="sh_normal"> </span>rfc2047_parameters<span class="sh_symbol">=</span>yes
<span class="sh_usertype">set</span><span class="sh_normal"> </span>charset<span class="sh_symbol">=</span><span class="sh_string" style="color: rgb(255, 0, 255);">"utf-8"</span> 

4、邮件发送测试(-s邮件标题)   # echo "邮件内容123456" | mutt -s "邮件标题测试邮件"   [email protected]




首先介绍一下mutt这个软件,它是一款基于文字界面的邮件客户端,非常小巧,但功能强大,可以用它来读写,回复保存和删除你的邮件,能在linux命令行模式下收发邮件附件。

  我只讲它很小的一部分功能,因为我也是刚刚开始摸索这个软件。更多的用法请查阅官网:http://www.mutt.org

  一、mutt的安装                                           

1 yum -y install sendmail
2 #需要安装sendmail并开启防火墙的25端口,如果你需要收邮件110端口也要开
3 yum -y install mutt

  二、配置信息                                                

  关于配置信息,有一点需要说明的,网上很多教程都说,编辑/root/.muttrc以修改配置文件,我想说的是,我在安装完成之后, /root目录下并没有 .muttrc 这个隐藏文件,你可以从其它地方复制过来,或者自己新建一个文件。这里我是复制的。

  你可以通过find命令找到Muttrc这个文件,命令如下 find / -name Muttrc ,然后通过命令 cp /etc/Muttrc /root/.muttrc 复制到 /root 下后更名为 .muttrc ,然后你就可以编辑配置文件了。

复制代码
1 #如果你收到的邮件乱码,设置以下信息
2 set charset="utf-8"
3 set rfc2047_parameters=yes
4 #如果你想自定义发件人信息,需要进行如下设置
5 set envelope_from=yes
6 set use_from=yes
7 set from=root@itdhz.com
8 set realname="itdhz"
复制代码

  安装完mutt后,在/usr/share/doc/mutt* 下有一份很好的手册,可以看一下。

  三、邮件发送                                       

  语 法:

  mutt [-hnpRvxz][-a<文件>][-b<地址>][-c<地址>][-f<邮件文 件>][-F<配置文件>][-H<邮件草稿>][-i<文件>][-m<类型>] [-s<主题>][邮件地址]
  参 数:
 -a <文件> 在邮件中加上附加文件。
 -b <地址> 指定密件副本的收信人地址。
 -c <地址> 指定副本的收信人地址。
 -f <邮件文件> 指定要载入的邮件文件。
 -F <配置文件> 指定mutt程序的设置文件,而不读取预设的.muttrc文件。
 -h 显示帮助。
 -H <邮件草稿> 将指定的邮件草稿送出。
 -i <文件> 将指定文件插入邮件内文中。
 -m <类型> 指定预设的邮件信箱类型。
 -n 不要去读取程序培植文件(/etc/Muttrc)。
 -p 在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。
 -R 以只读的方式开启邮件文件。
 -s <主题> 指定邮件的主题。
 -v 显示mutt的版本信息以及当初编译此文件时所给予的参数。
 -x 模拟mailx的编辑方式。
 -z 与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt。

  四、举例                                         

  这里我用自己备份网站的一段代码举例加以说明

mutt [email protected] -s "itdhz数据备份" -a /home/backup/itdhz.sql </root/readme.txt
或者 
echo "test" | mutt [email protected] -s "itdhz数据备份" -a /home/backup/itdhz.sql

  这段代码表示,发送邮件到[email protected] 这个邮箱,邮件主题是“itdhz数据备份”,邮件内容在 /root/readme.txt 中,邮件中包含附件 /home/backup/itdhz.sql。如果要发送多个附件,需要在每个附件前加 -a 参数。

你可能感兴趣的:(编写Shell脚本监测服务器状态)