我想要得到一个oracle 6.2系统(与redhat 6.2相同)来查找系统上的所有用户,然后把每个用户的用户名分别发现并查询每个用户的组成员资格,并且每个月输出一个文件,所以我需要编写命令作为shell脚本和日程安排
我对Linux非常陌生,似乎有很多方法可以调用用户和组成员身份。 我目前正在使用下面的输出文件的用户列表。
getent passwd >> /home/username/users.txt
我不知道下一步该怎么做。 输出总是把用户名放在第一位,所以我想grep文件的每一行的第一个单词,然后运行
getent group | grep %
其中%是每行的第一个字,并重复该过程,直到文件结束,然后停止,并将输出转储到networking位置(Windows共享)将\ windowsserver \ share \ usersandgroups.csv所以我可以在Excel中打开文件,并希望在单元格A1中有用户名,其次是每个用户在自己的单元格(B1,C1,D1等)中的每个用户在一个新的行。 如果getent不适合这个,任何人都可以提出一个能够完成这个任务的命令吗? 我需要用户和组名,而不是ID。
我不一定需要输出用户到一个文件,所以如果这一步可以避免,这将是有益的。
感谢任何人可以帮助。
这里是一个单行的:
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 (例如)。