From 4b6e0eec1b705c0b384cb703b13b857be6e3eda1 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Wed, 22 Jan 2020 14:26:30 +0000 Subject: cert-info: add macOS compatibility --- cert-info | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cert-info b/cert-info index 28865bd..e6e38fe 100755 --- a/cert-info +++ b/cert-info @@ -18,12 +18,16 @@ auto_less() { [ ! -t 1 ] || { "$0" "$@" | less; exit $?; } } +# Compatibility for macOS +type timeout 2>/dev/null >&2 || +timeout() { perl -e 'alarm shift; exec @ARGV' "$@"; } + main() { if [ "$1" = "csv" ]; then [ $# -ge 2 ] || usage "Missing outdir" outdir="${2:-.}/" mkdir -p "$outdir" - tmp=$(mktemp); trap "rm -f $tmp" EXIT + tmp=$(mktemp); trap 'rm -f "$tmp"' EXIT shift 2 for arg; do parse_arg "$arg" || usage "Unrecognized option $arg"; done i=0 @@ -50,21 +54,21 @@ elif [ ! -t 0 ]; then elif [ $# -gt 0 ]; then auto_less "$@" for arg; do - ! parse_arg "$arg" || continue + ! parse_arg "$arg" || continue host="${arg%%:*}" port="${arg##*:}" - [ "$port" != "$arg" -a -n "$port" ] || port=443 + [ "$port" != "$arg" ] && [ -n "$port" ] || port=443 echo "# === $host:$port ===" get_cert "$host" "$port" | parse_cert done else usage -fi +fi } get_cert() { local host="$1" port="$2" - if ! nc -z -w 2 "$host" "$port"; then + if ! nc -z -w 2 "$host" "$port" 2>/dev/null; then echo "# conn timeout for $host:$port!" >&2 return 1 fi @@ -91,8 +95,8 @@ parse_arg +cert parse_cert() { infocmd="openssl x509 -text -nameopt sep_comma_plus_space" [ $include_cert -eq 1 ] || infocmd="$infocmd -noout" - awk -vOneOnly="$depth_1" -vCertOnly="$cert_only" \ - -vinfocmd="$infocmd" ' + awk -v OneOnly="$depth_1" -v CertOnly="$cert_only" \ + -v infocmd="$infocmd" ' BEGIN { sep="# "; for (i=0; i<77; i++) { -- cgit v1.2.1