终端中的脚本输出与MOTD输出不同

时间:2019-04-27 22:54:53

标签: linux bash

我写了一个小脚本来监视TLS证书的到期时间。

以下是我在终端中运行/etc/update-motd.d/05-ssl时的输出。脚本的权限为633 root

TLS certs             Valid until
● facebook.com    Thu Jun 06 2019
● google.com      Tue Jun 18 2019

但是,当我通过ssh登录时,我的MOTD仅显示

TLS certs        Valid until

我怀疑这与我在打印输出时在最后一行中所做的配管有关。

#!/bin/bash

ssl_domains="facebook.com google.com"
currentTime=$(date +%s)
output="TLS certs|      Valid until"

for domain in $ssl_domains; do
    certTime=$(openssl s_client -servername ${domain} -connect ${domain}:443 < /dev/null 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
    certLineTime=$(date -d "${certTime}" +"%a %b %d %Y")

    certTimestamp=$(date -d "${certTime}" +%s)
    if [ "${certTimestamp}" -ge "${currentTime}" ]; then
        sign="\e[36m●\e[0m"
    else
        sign="\e[1;33m▲\e[0m"
    fi

    output+="\n$sign $domain|  $certLineTime"
done

echo -e "$output" | column -t -s '|'

1 个答案:

答案 0 :(得分:-1)

尝试添加

export LANG='en_US.UTF-8'

位于脚本顶部。