加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用shell做过时处理以及发送邮件的事例

发布时间:2020-12-16 01:42:38 所属栏目:安全 来源:网络整理
导读:? 实现功能 1.过时处理 在shell脚本中调用执行php,如果php在300秒内不能结束,则结束执行 ? 2。邮件发送 在报错等情况时发送邮件,并且邮件内容包含执行php时输出的错误日志内容 ? ? #!/bin/bashTIMEOUT=300FROM_ADDR="[email?protected]"TO_ADDRS=("[email

?

实现功能

1.过时处理

在shell脚本中调用执行php,如果php在300秒内不能结束,则结束执行

?

2。邮件发送

在报错等情况时发送邮件,并且邮件内容包含执行php时输出的错误日志内容

?

?

#!/bin/bash
TIMEOUT=300
FROM_ADDR="[email?protected]"
TO_ADDRS=(
	"[email?protected]"
)
CC_ADDRS=(

)
MAIL_CONTENT_FILE="/var/www/project/fuel/app/tasks/mailcontent.php"

function sync(){
	php_command="php /var/www/project/oil refine sync diff"
	res=$($php_command)
	if (( $?!=0 ))
	then
		sendmail ""
		return 0
	fi
	if [[ -n $res ]]
	then
		sendmail ""
		return 0
	fi
}

function sendmail(){
	if [ $BORG_FUEL_BATCH_ENV = development ]
	then
		subject=‘[borg ph0][DEV]同期ファイル作成失敗‘
	elif [ $BORG_FUEL_BATCH_ENV = staging ]
	then
		subject=‘[borg ph0][STG]同期ファイル作成失敗‘
	else 
		subject=‘[borg ph0][PRD]同期ファイル作成失敗‘
	fi

	from=$FROM_ADDR
	to="${TO_ADDRS[@]}"
	cc=""
	for cc_mail in ${CC_ADDRS[@]}
	do
		cc="$cc -c $cc_mail "
	done
	
	log_file="/var/www/borg/fuel/app/tasks/logs/$(date "+%Y")/$(date "+%m")/$(date "+%d").log"
	title="同期ファイル作成処理はエラーになりました。"
	grep_msg="ERROR - $(date "+%Y-%m-%d %H:%M")"
	echo $title > $MAIL_CONTENT_FILE
	cat $log_file | grep "$grep_msg" >> $MAIL_CONTENT_FILE
	echo $1 >> $MAIL_CONTENT_FILE
	
	cat  "$MAIL_CONTENT_FILE" | mail -s "$subject" -r $from $cc $to
	if(( $?!=0 ))
	then
		echo "通知メールは送信失敗。"
	fi
}

function timeout_custom()
{
        waitfor=$TIMEOUT
        command=$*
        $command &
        commandpid=$!

        ( sleep $waitfor ;sendmail "同期ファイル作成処理は${waitfor}秒以上実行しました。" ; kill -9 $commandpid  >/dev/null 2>&1 )&
        sleeppid=$!
        wait $commandpid >/dev/null 2>&1
        kill $sleeppid >/dev/null 2>&1
}

timeout_custom sync

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读