bash 파일을 사용하여 그룹 구성원을 파일로 인쇄

bash 파일을 사용하여 그룹 구성원을 파일로 인쇄

그래서 솔직하게 말해서 이건 숙제인데 컴퓨터에 구멍을 뚫을 것 같아요. 온라인에서 찾아봤는데 질문이 잘못되었거나 뭔가요.

기본적으로 저는 bash 스크립트를 작성하여 파일을 생성한 다음 그룹을 가져와서 파일로 인쇄하고 한 줄씩 인쇄해야 합니다.

터치를 이용해서 쉽게 파일을 만들 수 있어요

touch /dir/output.txt

나는 코드가 다음과 같을 것이라고 생각합니다

for each group member in group length
printf "name,password,group" >> /dir/output.txt

제 질문은 이 파일에 그룹 구성원을 어떻게 인쇄합니까?입니다.

인사,

정신적으로 지친 학생들.

답변1

그룹의 구성원을 나열하려면 groupNSS 데이터베이스에 그룹 이름을 쿼리하여 gid와 구성원을 가져와야 합니다.

passwd또한 해당 gid를 가진 사용자를 확인하려면 (사용자) 데이터베이스를 쿼리해야 합니다 . 와 함께:

group_name=somegroup
awk -F: '
  !groups_processed {
    gid[$3] # record gid in gid hash
    split($4, members, ",") # extract members
    for (i in members) users[members[i]] # unique members listed as
                                         # keys of users hash
    next
  }
  $4 in gid {
    users[$1] # also record users with corresponding gid
  }
  END {
    for (i in users) print i
  }' <(getent -- group "$group_name") \
     groups_processed=1 \
     <(getent passwd) | sort

일반적으로 데이터베이스에는 각 그룹 이름에 대해 하나의 항목만 있지만, 여러 데이터베이스(예: 파일 및 LDAP)가 있는 시스템에서는 더 많은 항목이 발견될 수 있습니다. 여기에는 모범 사례일 수도 있고 아닐 수도 있는 모든 GID가 기록됩니다. 또한 다른 그룹은 동일한 GID를 가질 수 있습니다. 여기서는 동일한 GID를 가진 다른 그룹의 구성원으로 나열된 사용자를 포함하지 않습니다.


1 GNU 시스템에서는 getent group이들 모두가 개별적으로 나열되어 있지만 getent group thegroupname그 중 하나만 반환되는 것을 발견했습니다.

관련 정보