在 sshd.conf 的末尾追加一行

Append a line to end of sshd.conf

试图将一个条目附加到 sshd.conf 的最后一行,但是它将它附加到上一行的末尾。

echo -e "DenyGroups $(echo ${admin_membership_ad_group} | cut -f2 -d= |cut -f1 -d,|awk '{print tolower([=11=])}')" >> /etc/ssh/sshd.conf

echo "\nDenyGroups $(echo ${admin_membership_ad_group} | cut -f2 -d= |cut -f1 -d,|awk '{print tolower([=12=])}')" >> /etc/ssh/sshd.conf

期望:

Lastline
DenyGroups somegroup

结果:

LastlineDenyGroups somegroup

使用 GNU sed:

sed -i '$a DenyGroups '"${admin_membership_ad_group}" /etc/ssh/sshd.conf

$: refers to the last line

a: append

在你最后的命令中你忘记了 -e,请看下面的测试:

$ # Create test file
$ echo -n LastLine > tst
$ # See what happens if you forget -e
$ echo -n '\n + echo without -e' >> tst
$ # Now add -e
$ echo -e "\nDenyGroups $(echo admin_membership_ad_group)" >> tst
$ # See the results
$ cat tst
LastLine\n + echo without -e
DenyGroups admin_membership_ad_group

请注意,在其他 shell 中,内置 echo 的行为不同。例如,在 zsh 中,即使不指定 -e 选项,\n 的扩展也会发生。