그룹에 사용자가 없는지 확인하고 삭제하는 방법은 무엇입니까?
bash Linux 스크립트를 작성 중인데 groupdel 명령을 사용하여 그룹을 삭제해야 하는데 삭제되는 그룹이 비어 있고 사용자가 없는지 확인해야 합니다.
이것이 내가 한 일입니다:
bajagroup () {
printf "\ nEnter the name of the group to delete: \ n"
read -r remove group
[ -n $ deletegroup ] && groupdel $ deletegroup
if [ $? -ne 0 ]; then
echo "The group was not deleted from the system. Please try again."
else
echo "The group was deleted from the system."
fi
sleep 3
}
--only-if-empty 옵션이 있는 delgroup 명령과 유사하지만 groupdel 명령이 있습니다.
예:delgroup --only-if-empty
답변1
Linux에서 그룹의 멤버십을 얻는 것은 생각만큼 쉽지 않습니다. 제 생각에는 가장 쉬운 방법은 명령을 사용하는 것입니다 lid
. 다음을 사용하여 설치하십시오.
sudo apt-get update && sudo apt-get install libuser
그런 다음 다음을 사용하여 작동하는지 확인해야합니다.
lid -g root
명령을 찾을 수 없다는 메시지가 나타나면 다음을 시도해 보십시오.
/usr/sbin/libuser-lid -g root
당신의 스크립트를 위해
bajagroup () {
printf "\n Enter the name of the group to delete: \n"
read -p groupname #the variable has to be one word(normally)
deletegroup=$(lid -g $groupname)
[ -z $deletegroup ] && groupdel $deletegroup #between $ and the name no space
편집하다
패키지를 설치할 수 없으므로 문제를 해결하기 위해 작은 스크립트를 작성했습니다.
#!/bin/bash
read -p "Enter groupname here: " groupname #Takes the input and save it to the variable groupname
gid=$(cat /etc/group | grep ^"$groupname": | cut -d":" -f3) #get the content of /etc/group (list of every group with groupid) | search for the line that starts with $groupname: (That means if a group name is Test, Test1 or 1Test wouldn't be matched) | get the groupid
member=$(cat /etc/passwd | cut -d":" -f4 | grep -x "$gid") #get the content of /etc/passwd (list of all users with some extra information like the attached gid) | get the part with the gid | grep the line that is exactly $gid
[ -z $member ] && groupdel $groupname #if $member is empty then delete that group
이것이 당신에게 필요한 기초입니다. 필요에 따라 끝과 시작을 변경할 수 있습니다.