2014-02-17 222 views
1

我试图创建将使用/ etc/passwd文件来创建这样的列表的脚本:的Linux脚本帮助需要

全称:等等等等用户帐户:bblah用户ID:5000上次登录:孙2月21日18:13 全名:迈克·迈克用户帐户:mmike用户ID:5001上次登录:2月21日18:13

孙用我的剧本,我得到它显示 全名:等等等等用户帐户:bblah用户ID:1000 ,因为我在我的passwd文件中grep 1000个帐户。只要我做5000系列,我会得到所有全名,然后是所有用户帐户,然后列出所有用户标识。我该如何解决这个问题?我如何去添加“上次登录”位?

有没有办法做到这一点,而不使用awk?

脚本到目前为止是:

#!/bin/bash 
passfile=/etc/passwd 

for i in $(grep 5000 ${passfile} | cut -d : -f 5) 
do 


     account=$(grep 5000 /etc/passwd | cut -d : -f 3) 
     username=$(grep 5000 /etc/passwd | cut -d : -f 1) 
     echo Full Name:${i} Username: ${username} User ID: ${account} Last login: ${lastlogin) 
done 
+0

是否要列出所有帐户或特定用户名/ ID? – ahmad

+0

所有帐户。我希望它能这样做:name:name username:username user id:1001 last login:x.x.x.x name name username:username user id:1002 last login x.x.x.x – user3030048

回答

2

上次登录由最后一个命令来完成:

last username 
1

使用此:

#!/bin/bash 

echo -en "BEGIN{\n}{\n system(var)\n}\n" > h.awk 
while read in; \ 
do \ 
    uname=`echo $in | sed -r 's/:/\ /g' | awk '{print $1}'`; \ 
    p1=`echo $in | sed -r 's/:/\ /g' | awk '{print "name: "$5, "username: "$1, "id: "$3}'`; \ 
    p2=`echo | awk -f ./h.awk var="last $uname| head -n 1"|awk '{print $5 $6}'`; \ 
    echo $p1 last login: $p2; \ 
done < /etc/passwd 

如果你需要一次登录的详细提示,请使用这一个:

echo -en "BEGIN{\n}{\n system(var)\n}\n" > h.awk 
while read in; \ 
do \ 
    uname=`echo $in | sed -r 's/:/\ /g' | awk '{print $1}'`; \ 
    p1=`echo $in | sed -r 's/:/\ /g' | awk '{print "name: "$5, "username: "$1, "id: "$3}'`; \ 
    p2=`echo | awk -f ./h.awk var="last $uname| head -n 1"|awk '{print $4" "$5 $6" "$7}'`; \ 
    echo $p1 last login: $p2; \ 
done < /etc/passwd 
+0

非常感谢! – user3030048

+0

非常欢迎。 – ahmad