忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 389 | 回复: 1

[文本处理] shell发送邮件格式 [复制链接]

论坛徽章:
0
发表于 2018-08-04 19:14 |显示全部楼层
大神们,有个脚本,觉得需要优化一下更为合理,想使用if条件来判断,另外想通过邮件给管理员发送信息html格式,不知道怎么修改,求指点。
当前脚本执行功能:从数据库获取enddate、password信息,当edndate的值和本地系统的date 相等时,执行更新对应的password值(随时10位密码),同时对enddate的值做更新往后增加2个月,当前脚本是可以满足的,但是觉得代码还有优化空间,想用判断来执行,当获取的enddate和 localhost date相等执行更新操作对应的password值(随时10位密码),同时对enddate的值做更新往后增加2个月,另外给指定的用户发送一封邮件。数据库中对应的数据前增加了一个username字段,所以想最终实现,用户的数据更新后给管理员指定邮箱发送一封html格式的邮件,来告知管理员用户的密码更新状态及过期日期。最终管理员收到的邮件格式为:zhangsan的用户密码将在xx天过期,lisi的用户密码已经更新为xxxxx,过期日期为xxxxx


#!/bin/bash
date1=`date +%F`
date2=`date -d "2 month" +%F`
password=`mkpasswd -l 10 -C 3 -c 3 -d 3 -s 1`
user=root
passwd=123456
host=192.168.7.42
port=3306

echo "当前时间是date1, 修改后的时间是date2, 修改后的密码是password"
echo "当前数据库表信息..."
mysql -u$user -p$passwd -h$host -P$port --default-character-set=utf8 -A<<EOF
use whzone;
select * from perinfo;
EOF

echo "开始修改数据..."
mysql -u$user -p$passwd -h$host -P$port --default-character-set=utf8 -A<<EOF
use whzone;
update perinfo set password='$password', enddate='$date2' where enddate='$date1';
flush privileges;
EOF

echo "修改后的数据库表信息..."
mysql -u$user -p$passwd -h$host -P$port --default-character-set=utf8 -A<<EOF
use whzone;
select * from perinfo;
EOF


论坛徽章:
0
发表于 2018-08-06 13:48 |显示全部楼层

  1. $附件 = Get-ChildItem '/tmp/aaaa.tar.gz'
  2. $HTML邮件内容 =
  3. @'
  4. <p>
  5.         <span style="font-family:Microsoft YaHei;font-size:18px;">html信件内容</span>
  6. </p>
  7. '@

  8. Send-MailMessage   -Subject "主题"       `
  9. -From  "你的hotmail账户@hotmail.com"   -To  "你的qq邮箱@qq.com"   `
  10. -SmtpServer   "smtp.live.com"  -Port 587  -UseSsl    -Credential  "你的hotmail账户@hotmail.com"  `
  11. -Attachments $附件 -BodyAsHTML -body $HTML邮件内容
复制代码


上面的代码,保存成带有bom头的a.ps1文件。
win中用:
powershell.exe -file d:\你的目录\a.ps1

linux中用:
/usr/bin/pwsh -file /你的目录/a.ps1


注意:
1win,linux中的powershell中用Send-MailMessage发邮件,需要免费email账户,无需自建smtp服务器。
2登录QQ的smtp服务器,默认被关了,需要在web设置中开启smtp。
3登录QQ的smtp服务器,用xxx@QQ.com + 你的qq密码 + 上述命令 发邮件是不行的。因为为了qq密码安全,腾讯要求独立的邮箱密码。  
4win7自带ps2.0。而3.0和以上版本才支持port参数。总之1升级到.net最新版4.7。2升级ps到最新版5.1。

更多参数,详见手册:
https://docs.microsoft.com/zh-cn ... view=powershell-5.1


问:如何在.ps1脚本中,嵌入shell命令?
答:
永远不要用bash和.sh,里面坑太多。只需要在linux版powershell的.ps1脚本中,用bash执行字符串即可。
=====================
$bashcmd =
@'
echo '我是bash命令'
echo '命令中可以有单引号'
echo "命令中可以有双引号"
echo '如需解析变量,则用这种括号,注意头尾必须换行'
echo '@\"'
echo '$a'
echo '\"@'
'@
/usr/bin/bash -c $bashcmd
#需要转义,有点不好
=====================

@'
echo '我是bash命令'
echo '命令中可以有单引号'
echo "命令中可以有双引号"
echo '如需解析变量,则用这种括号,注意头尾必须换行'
echo '@"'
echo '$a'
echo '"@'
'@ | /usr/bin/bash
#不需要转义,推荐
=====================
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP