2014-02-17 3 views
1

Я пытаюсь создать скрипт, который будет использовать/и т.д./пароль файл, чтобы создать список, как это:Linux скрипт необходима помощь

Полное имя: Бла Бла User Account: bblah ID пользователя: 5000 Последний вход в систему : Пт Янв 21 18:13 Полное имя: Mike Mike User Account: mmike ID пользователя: 5001 Последнее посещение: Sun 21 февраля 18:13

с моим сценарием, я получаю его, чтобы показать Полное имя: Бла Бла Учетная запись пользователя: bblah Идентификатор пользователя: 1000 , потому что я grep 1000 учетных записей в моем файле passwd. Как только я делаю серию 5000, я получаю все полные имена, а затем все учетные записи пользователей, а затем перечислены все идентификаторы пользователей. Как я могу это исправить? Как мне добавить бит «Last logged in»?

Есть ли способ сделать это без использования 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

Вы хотите перечислить все учетные записи или определенное имя пользователя/идентификатор? – ahmad

+0

все счета. Я хочу, чтобы это делалось так: имя: имя пользователя: имя пользователя id: 1001 последний логин: x.x.x.x имя имя имя пользователя: имя пользователя идентификатор пользователя: 1002 последний вход 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

Смежные вопросы