需要Linux脚本帮助

时间:2014-02-17 01:58:25

标签: linux scripting

我正在尝试创建一个脚本,它将使用/ etc / passwd文件创建这样的列表:

全名:Blah Blah用户帐户:bblah用户名称:5000最后登录:Sun 2月21日18:13 全名:Mike Mike用户帐号:mmike用户名号:5001最后登录:Sun Feb 21 18:13

用我的剧本,我得到它来展示 全名:Blah Blah用户帐号:bblah用户名:1​​000 因为我在我的passwd文件中grep 1000个帐户。只要我执行5000系列,我会获得所有全名,然后是所有用户帐户,然后列出所有用户ID。我该如何解决这个问题?如何添加“上次登录”位?

有没有办法在不使用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

2 个答案:

答案 0 :(得分:2)

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

last username

答案 1 :(得分: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