複数のサーバーがあり、bash を使用してユーザー リストとアクセス レベルを印刷したいと考えています。
以下のコマンドを試しましたが、期待どおりの結果を得ることができませんでした。
awk '/Allow root/{p=5} p > 0 {print $1; p--}' /etc/sudoers
上記のコマンドを実行すると、以下の5つのエントリが表示されます。
##
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
しかし、まだスペースで区切られた出力が得られます。出力内のスペースをスキップしたいです。