저는 다음 목표를 달성하려고 합니다. /etc/passwd에 bin/bash가 설정된 Linux 사용자를 나열하고 각 사용자의 정보를 id [username]
다음과 같은 인쇄 문에 추가합니다.
cat /etc/passwd | grep bin/bash | awk -F\: '{print $1";"$(id $1)}'
(이것은 분명히 작동하지 않습니다 ;) )
나는 꽤 가까워진 것 같은 느낌이 든다. 내가 무엇을 놓치고 있는 걸까?
출력은 다음과 같아야 합니다(DavDav의 설명 참조).
User1;uid=1000(User1) gid=1000(User1) groups=1000(User1)
User2;uid=1001(User2) gid=1001(User2) groups=1001(User2)
User3;uid=1002(User3) gid=1002(User3) groups=1002(User3)
답변1
어때요?
</etc/passwd grep bin/bash | cut -d: -f1 | xargs -n1 id
답변2
이 시도,
awk -F ':' '/bin\/bash/ {printf ($1";"); system("id "$1)}' /etc/passwd
system
명령을 실행하고 값을 반환합니다.앗
답변3
또 다른 옵션은 다음과 같습니다.
for i in $(grep /bin/bash /etc/passwd | awk -F: '{ print $1 }'); do
echo "${i};$(id ${i})"
done
grep ... awk ...
포함된 행에 해당하는 사용자 이름 목록이 생성됩니다 . 루프가 반복될 때마다 이러한 사용자 이름 중 하나가 생성됩니다. 그런 다음 사용자 이름, 세미콜론, 해당 사용자 이름에 대한 출력을 인쇄합니다./etc/passwd
/bin/bash
for
i
echo
id