Назад | Перейти на главную страницу

Дамп пользователей и членства в группах в файл

Я пытаюсь получить систему oracle 6.2 (такую ​​же, как redhat 6.2), чтобы найти всех пользователей в системе, затем взять имя пользователя каждого обнаруженного пользователя и запросить членство в группе каждого пользователя индивидуально и выводить в файл один раз в месяц , поэтому мне нужно написать команду как сценарий оболочки и запланировать

Я новичок в Linux, и, кажется, есть много способов вызвать пользователей и составить группы. В настоящее время я использую приведенный ниже список для вывода списка пользователей в файл.

getent passwd >> /home/username/users.txt

Я действительно не знаю, что делать дальше. Вывод всегда помещает имя пользователя первым, поэтому я хотел бы найти в файле первое слово каждой строки и запустить

getent group | grep %

где% - это первое слово каждой строки, и повторять этот процесс до тех пор, пока не будет достигнут конец файла, затем остановитесь и выгрузите вывод в сетевое расположение (общий ресурс Windows), который будет \ windowsserver \ share \ usersandgroups.csv поэтому я могу открыть файл в Excel и, надеюсь, иметь имя пользователя в ячейке A1, а затем каждая группа в своих ячейках (B1, C1, D1 и т. д.) с каждым пользователем в новой строке. Если getent не идеален для этого, может ли кто-нибудь предложить команду, которая выполнит эту работу? Мне нужны имена пользователей и групп, а не идентификаторы.

Мне не обязательно выводить пользователей в файл, поэтому, если этого шага можно избежать, это будет полезно.

Спасибо всем, кто может помочь.

Вот один лайнер:

getent passwd | awk -F ':' {'print $1'} | xargs -I {}  groups {} | sed 's/ : /:/g' | tr ' ' ','

Это выводится прямо на консоль следующим образом:

pulse:pulse
shearn89:shearn89,apache,monit,wireshark

ОБНОВЛЕНИЕ: чтобы получить это в «чистом» формате .csv, вы можете использовать это:

getent passwd | awk -F ':' {'print $1'} | xargs -I {}  groups {} | sed 's/ : /,/g' | tr ' ' ','

Это даст вам user,group1,group2,group3, поэтому для пользователей, которые входят только в "свою" группу, вы получите pulse,pulse (например).