写一个shell发送邮件的脚本
时间: 2023-07-06 12:44:13 浏览: 50
好的,以下是一个简单的Shell脚本,可以用来发送邮件:
```bash
#!/bin/bash
# 设置收件人和邮件主题
to="recipient@example.com"
subject="Test Email"
# 设置邮件内容
body="This is a test email sent from a shell script."
# 发送邮件
echo "$body" | mail -s "$subject" "$to"
echo "Email sent."
```
要使用此脚本,需要将 `to` 变量设置为收件人的电子邮件地址,将 `subject` 变量设置为邮件的主题,并将 `body` 变量设置为邮件的正文内容。然后,使用 `mail` 命令发送邮件。
请注意,此脚本假定已经在系统上安装了邮件客户端,并且已经正确配置了SMTP服务器。如果您遇到任何问题,请参考您的操作系统文档或联系您的系统管理员。
相关问题
写一个shell 发送邮件脚本
### 回答1:
答:#!/bin/bash# 设置邮件服务器
MAIL_SERVER="smtp.example.com"# 设置邮件发送者
MAIL_FROM="sender@example.com"# 设置邮件接收者
MAIL_TO="recipient@example.com"# 设置邮件主题
SUBJECT="Test Email"# 设置邮件内容
MESSAGE="This is a test email sent from a shell script"# 发送邮件
/usr/sbin/sendmail -f "$MAIL_FROM" -t "$MAIL_TO" -u "$SUBJECT" -m "$MESSAGE" -S "$MAIL_SERVER"
### 回答2:
编写一个Shell脚本来发送邮件可以使用邮件客户端程序来实现。以下是一个实现的示例脚本:
```bash
#!/bin/bash
to_email="recipient@example.com" # 邮件接收者的地址
from_email="sender@example.com" # 邮件发送者的地址
subject="测试邮件" # 邮件主题
body="这是一封测试邮件。" # 邮件正文
# 使用邮件客户端程序发送邮件
echo -e "To: $to_email\nFrom: $from_email\nSubject: $subject\n\n$body" | /usr/sbin/sendmail -t
```
在脚本中,你需要设置邮件接收者的地址(to_email)、邮件发送者的地址(from_email)、邮件主题(subject)和邮件正文(body)。然后通过在命令行中输出邮件的标准格式,并通过管道将其传递给邮件客户端程序`/usr/sbin/sendmail`来发送邮件。
请注意,此脚本假设你的系统已经安装了sendmail邮件服务器软件,并且`/usr/sbin/sendmail`是sendmail可执行文件的路径。如果你的系统中使用的是其他邮件客户端程序,你需要相应地更改命令`/usr/sbin/sendmail`为你使用的程序的路径。
使用上述脚本发送邮件时,确保将邮件内容替换为实际的内容,并根据需要设置其他邮件相关的参数,例如附件、抄送、密送等。
希望这个脚本对你有所帮助!
### 回答3:
编写一个shell发送邮件脚本,可以使用邮件客户端工具如"mail"或者"sendmail"来实现。以下是一个示例脚本:
```shell
#!/bin/bash
# 设置邮件信息
from="your_email@example.com" # 发件人邮箱
to="recipient@example.com" # 收件人邮箱
subject="这是邮件的主题" # 邮件主题
body="这是邮件的正文内容" # 邮件正文
# 使用mail命令发送邮件
echo -e "Subject:${subject}\n${body}" | mail -s "${subject}" -r "${from}" "${to}"
```
脚本使用了"mail"命令来发送邮件,参数如下:
- `-s` 指定邮件主题
- `-r` 指定发件人邮箱
- 最后一个参数是收件人邮箱
脚本中"Subject"是一个特殊字段,用于指定邮件主题。脚本使用`echo`命令来生成邮件正文,然后通过管道将结果发送给"mail"命令。
注意:在使用该脚本之前,需要确保系统已经安装了邮件客户端工具如"mail"或者"sendmail"。
用shell写一个服务器巡检脚本
服务器巡检脚本可以通过 shell 脚本编写,以下是一个简单的服务器巡检脚本示例:
```bash
#!/bin/bash
# 服务器巡检脚本
# 检查系统负载
load=$(uptime | awk '{print $10}')
if [ $(echo "$load > 1" | bc) -eq 1 ]
then
echo "系统负载过高:$load"
fi
# 检查磁盘空间
disk=$(df -h | grep /dev/sda1 | awk '{print $5}' | cut -d'%' -f1)
if [ $disk -ge 90 ]
then
echo "磁盘空间不足:$disk%"
fi
# 检查内存使用率
mem=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
if [ $(echo "$mem > 80" | bc) -eq 1 ]
then
echo "内存使用率过高:$mem%"
fi
# 检查网络连接数
conn=$(netstat -an | grep :80 | wc -l)
if [ $conn -ge 100 ]
then
echo "网络连接数过多:$conn"
fi
# 检查 CPU 使用率
cpu=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}')
if [ $(echo "$cpu > 80" | bc) -eq 1 ]
then
echo "CPU 使用率过高:$cpu%"
fi
# 检查日志文件大小
log=$(du -sh /var/log/* | sort -hr | head -n 1 | awk '{print $1}')
if [ $(echo "$log > 10" | bc) -eq 1 ]
then
echo "日志文件过大:$log"
fi
# 发送邮件告警
if [ $(echo "$load > 1" | bc) -eq 1 -o $disk -ge 90 -o $(echo "$mem > 80" | bc) -eq 1 -o $conn -ge 100 -o $(echo "$cpu > 80" | bc) -eq 1 -o $(echo "$log > 10" | bc) -eq 1 ]
then
echo "服务器存在异常,发送邮件告警"
# 发送邮件的命令,需要替换成实际使用的邮件服务和账号
echo "服务器存在异常,请及时处理。" | mail -s "服务器巡检告警" user@example.com
fi
```
该脚本会检查系统负载、磁盘空间、内存使用率、网络连接数、CPU 使用率和日志文件大小等指标,如果出现异常,就会发送邮件告警。需要注意的是,邮件发送命令需要替换成实际使用的邮件服务和账号。
该脚本可以通过 crontab 定时执行,例如每天凌晨 3 点执行一次:
```
0 3 * * * /path/to/check_server.sh
```
以上是一个简单的服务器巡检脚本示例,可以根据实际需要进行修改和扩展。