如何通过 bash 脚本阅读我的 ssh 警告横幅

how to read my ssh warning banner via bash script

#!/bin/bash
if read -ra banner < <(LANG=C sshd -T | grep banner 2>/dev/null)
then
        printf "$banner"
else
        printf 'banner not set\n'
fi

如何修复我的 bash 脚本以读取我的 ssh 警告横幅。 bash 脚本编写的新手,不确定我做错了什么

为了获得好的答案,最好描述您看到的输出或行为,以及您期望的输出。

我发现您的代码段有两处错误:

  • sshd -T 在未设置横幅时打印 banner none,因此您的 grep 仍将 return 一行,使 if 毫无意义
  • 您要求横幅是一个带有 read -a 的数组,但在打印时只访问第一个元素

您可以像这样修复您的代码

if read -ra banner < <(LANG=C sshd -T | grep banner | grep -v "^banner none$"); then
  printf "${banner[@]:1}"
else
  printf 'banner not set\n'
fi

我喜欢不同的风格,可能是

shopt -s lastpipe
LANG=C sshd -T | grep ^banner\  | read -r banner
if test "$banner" != "banner none"; then
  echo "${banner#* }"
else
  echo "banner not set"
fi