우리는 여러 대의 서버를 가지고 있으며 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
하지만 여전히 공백으로 구분된 출력이 표시됩니다. 출력에서 해당 공백을 건너뛰고 싶습니다.