gpt4 book ai didi

bash - SSHD 配置检查 bash 脚本

转载 作者:行者123 更新时间:2023-12-02 14:13:44 27 4
gpt4 key购买 nike

我目前正在制作一个简单的安全审计脚本,它将为配置中的每个不匹配打印 OK/Error。
场景是下一个 - 例如,对于 SSHD_Config,如果情况下,我会放在下一个:

if [ "`grep -E ^Protocol /etc/ssh/sshd_config`" == "Protocol 1" ]; then
echo "Protocol should be set to 2";
fi

问题是——如果某个变量和它的值之间有多个空格怎么办? (例如协议(protocol) 2 或 PermitRootLogin No。); /*s , /s和类似的技巧没有帮助。

是否有人有用于在 bash 脚本中检查 SSHD 配置以在此处发布案例的示例?
提前致谢 !

最佳答案

-E grep 选项将其置于扩展正则表达式模式。因此,您可以使用扩展正则表达式( ^Protocol +1 表示以 Protocol 开头的行,后跟 1 个或多个空格,然后是字符 1 ):

if grep -Eq '^Protocol +1' /etc/ssh/sshd_config; then
echo "Protocol should be set to 2";
fi
[yY]表示字符 yY :
if grep -Eq '^PermitEmptyPasswords +[yY][eE][sS]' /etc/ssh/sshd_config; then
echo "PermitEmptyPasswords should be set to no";
elif grep -Eq '^PermitEmptyPasswords +[nN][oO]' /etc/ssh/sshd_config; then
echo "PermitEmptyPasswords meets requirements";
fi

以及许多其他有趣的功能。笔记:
  • 您可能应该考虑在 sshd_config 中有多个匹配行的情况。文件。
  • -q grep 选项禁止打印匹配的行。如果找到匹配的行,则 grep 仅以状态 0 退出,否则以状态 1(未找到)或 2(错误)退出。
  • if语句可以直接跟在要执行的命令列表之后。如果列表的退出状态为 0,则 then分支被采取。在我们的例子中,列表只是 grep .
  • 关于bash - SSHD 配置检查 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563149/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com