我们有多台服务器,我想使用 bash 打印用户列表和访问级别。
我尝试了以下命令但无法获得我想要的精确结果:
awk '/Allow root/{p=5} p > 0 {print $1; p--}' /etc/sudoers
上面的命令只给我如下五个条目
##
root
abcd
ghfd
fcff
但我应该得到如下的 O/P:
UserList AccessLevel
root ALL
abcd !/usr/bin/*
我可以得到如上所示的输出吗?
答案1
经过大量实验后,我能够通过以下命令尽可能接近地实现它。
grep "ALL=(ALL)" /etc/sudoers | awk '{ print $1 "\t""\t""\t" $3 $4}' | cut -d '#' -f1 | cut -d '%' -f1
输出如下:
xxxx ALL
xxxxxx ALL
xxxx ALL
xxxx NOPASSWD:ALL
abcd ALL
xxxx ALL
但是我仍然得到了空格分隔的输出。我想跳过输出中的空格。