Linux 用于检查pem文件证书并在到期时发送邮件的Bash脚本

Linux 用于检查pem文件证书并在到期时发送邮件的Bash脚本,linux,bash,Linux,Bash,有人能帮我在bash中完成一个脚本来检查openssl证书并在到期之前发送邮件吗?我在这里尝试了一些代码,但我不知道如何继续 location=/home/merox/Desktop/*.pem ; server=$HOSTNAME; for pem in $location; do printf '%s: %s\n' \ certexpire=$(date -d "$(: | openssl x509 -enddate -noout -in "$pem"|cut -d= -

有人能帮我在bash中完成一个脚本来检查openssl证书并在到期之前发送邮件吗?我在这里尝试了一些代码,但我不知道如何继续

location=/home/merox/Desktop/*.pem ;
server=$HOSTNAME;

for pem in $location; do
   printf '%s: %s\n' \
      certexpire=$(date -d "$(: | openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" --iso-8601) \
      "$pem"
done | sort

OUTPUT:
certexpire=2019-05-25: /home/merox/Desktop/key_me.pem
certexpire=2019-05-25: /home/merox/Desktop/key_merox.pem
certexpire=2021-07-14: /home/merox/Desktop/cert_me.pem
代码中的注释

# So, let's take the files from find and save them in an array
# Using globulation '*' is less secure.
IFS='\n' files=($(find /home/merox/Desktop -mindepth 1 -maxdepth 1 -name '*.pem'))


# one week in seconds
one_week=$((7 * 24 * 60 * 60))
# current time in seconds since epoch
now=$(date "+%s")
# for each file we want to check
for pem in "${files[@]}"; do
   # They expire at this time in seconds since epoch
   expires_at=$(date -d "$(: | openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" +%s)
   # the difference
   expires_in=$((expires_at - now))
   # if the will expire in less then one_week
   if (( expires_in < one_week )); then
      # just print them
      printf "%s\n" "$pem"
   fi
done |
sort |
# I leave it to you on how to configure sendmail on your PC
sendmail -v "name@mail.com"
#那么,让我们从find中获取文件并将其保存在数组中
#使用球状'*'不太安全。
IFS='\n'文件=($(find/home/merox/Desktop-mindepth 1-maxdepth 1-name'*.pem'))
#以秒计一周
一周=$((7*24*60*60))
#以秒为单位的当前时间
现在=$(日期“+%s”)
#对于我们要检查的每个文件
对于“${files[@]}”中的pem;做
#它们在这个时间从新纪元开始以秒为单位过期
expires|u at=$(date-d“$”(:| openssl x509-enddate-noout-in“$pem”| cut-d=-f2)+%s)
#区别
expires_in=$((expires_at-now))
#如果在一周内到期
如果((在<一周内到期));然后
#打印出来就行了
printf“%s\n”$pem
fi
完成|
分类|
#我将如何在您的电脑上配置sendmail留给您
sendmail-v“name@mail.com"
代码中的注释

# So, let's take the files from find and save them in an array
# Using globulation '*' is less secure.
IFS='\n' files=($(find /home/merox/Desktop -mindepth 1 -maxdepth 1 -name '*.pem'))


# one week in seconds
one_week=$((7 * 24 * 60 * 60))
# current time in seconds since epoch
now=$(date "+%s")
# for each file we want to check
for pem in "${files[@]}"; do
   # They expire at this time in seconds since epoch
   expires_at=$(date -d "$(: | openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" +%s)
   # the difference
   expires_in=$((expires_at - now))
   # if the will expire in less then one_week
   if (( expires_in < one_week )); then
      # just print them
      printf "%s\n" "$pem"
   fi
done |
sort |
# I leave it to you on how to configure sendmail on your PC
sendmail -v "name@mail.com"
#那么,让我们从find中获取文件并将其保存在数组中
#使用球状'*'不太安全。
IFS='\n'文件=($(find/home/merox/Desktop-mindepth 1-maxdepth 1-name'*.pem'))
#以秒计一周
一周=$((7*24*60*60))
#以秒为单位的当前时间
现在=$(日期“+%s”)
#对于我们要检查的每个文件
对于“${files[@]}”中的pem;做
#它们在这个时间从新纪元开始以秒为单位过期
expires|u at=$(date-d“$”(:| openssl x509-enddate-noout-in“$pem”| cut-d=-f2)+%s)
#区别
expires_in=$((expires_at-now))
#如果在一周内到期
如果((在<一周内到期));然后
#打印出来就行了
printf“%s\n”$pem
fi
完成|
分类|
#我将如何在您的电脑上配置sendmail留给您
sendmail-v“name@mail.com"

它打印什么?您想如何继续?您好,这是输出:certexpire=2019-05-25:/home/merox/Desktop/key\u me.pem certexpire=2019-05-25:/home/merox/Desktop/key\u merox.pem certexpire=2021-07-14:/home/merox/Desktop/cert\u me.pem,我想在其中一个证书到期前7天通过邮件通知我请编辑您的帖子并将其发送到帖子中。所以1。-您只想筛选那些将在7天内到期的证书-和2天内到期的证书您想通过邮件发送该列表。对吗?没错:)它打印什么?您想如何继续?您好,这是输出:certexpire=2019-05-25:/home/merox/Desktop/key\u me.pem certexpire=2019-05-25:/home/merox/Desktop/key\u merox.pem certexpire=2021-07-14:/home/merox/Desktop/cert\u me.pem,我想在其中一个证书到期前7天通过邮件通知我请编辑您的帖子并将其发送到帖子中。所以1。-您只想筛选那些将在7天内到期的证书-和2天内到期的证书您想通过邮件发送该列表。是吗?是的,准确地说:)非常感谢:),我为邮件“mail-n-s”添加了这个,为“我的_mail@mail.com;“因为我已经在服务器上配置了exim4,所以在运行脚本之后,我将跳过输出。我现在检查了邮件,看起来很好,但是其中一个证书将在2020年到期,而不是在7天内。非常感谢:),我为mail添加了这个“mail-n-s”证书到期警告,用于“我的_mail@mail.com;“因为我已经在服务器上配置了exim4,所以在运行脚本之后,我将跳过输出。我现在检查了邮件,看起来很好,但其中一份证书将于2020年到期,而不是7天后到期