Страница 1 из 1

who | sed как выцарапать дату и время ?

Добавлено: 2009-10-13 7:17:05
konstantine
Здравствуйте!

Возникла такая проблема хочу с помощью команды who на shell`e извлеч в переменные DATE и TIME дату и время уже зная при этом логин пользователя

Логин пользователся я извлекаю таким методом:

Код: Выделить всё

cd ~
LOGIN=`pwd | sed 's/\/home\///'`  #- это на линуксе, на фре пришлось бы
LOGIN=`pwd | sed 's/\/usr\/home\///'`
Изучать шелл начал только вчера поэтому пока не хватает опыта самому додуматься
who | sed 'а дальше ступор' , т.к. who может выдать:

Код: Выделить всё

konstantine :0           2009-10-13 08:35
konstantine pts/0        2009-10-13 08:35 (:0.0)
а может выдать:

Код: Выделить всё

ok_mtv   pts/1        2009-10-13 07:29
finknv   pts/6        2009-10-13 07:30
dir_sda  pts/10       2009-08-25 07:38
fin_ojm  pts/11       2009-10-13 07:37
ok_znm   pts/13       2009-10-13 07:39
ok_aiv   pts/15       2009-10-13 07:39
omis_pmu pts/21       2009-10-05 15:37
fin_ngg  pts/22       2009-10-13 07:46
fin_chaa pts/26       2009-10-13 07:47
fin_kip  pts/36       2009-10-13 08:54
omts-2   pts/40       2009-10-12 08:22
finbni   pts/47       2009-10-13 09:23
ok_aiv   pts/16       2009-10-13 07:39
fin_don  pts/42       2009-10-12 08:30
omis_piia pts/32       2009-10-13 08:39
finknv   pts/3        2009-10-13 07:30
omis_oks pts/25       2009-10-06 07:31
omis_puw pts/50       2009-08-20 13:14
ok_qqq   pts/28       2009-10-13 07:51
omis_toi pts/51       2009-08-27 09:24
omis_ksen pts/55       2009-10-13 09:41
ivc_sna  pts/56       2009-10-12 13:19
omis_puw pts/59       2009-09-17 11:40
fin_ptn  pts/18       2009-10-13 07:43
fin_kls  pts/5        2009-08-19 14:34
omis_puw pts/31       2009-09-21 10:00
dir_chsp pts/60       2009-09-21 14:36
ivc_kss  pts/61       2009-10-13 10:51
kos      pts/64       2009-10-13 11:13 (192.168.222.32)
admin    pts/63       2009-10-13 11:05
dir_kuch pts/65       2009-08-24 15:11
fin_aak  pts/53       2009-10-13 09:33
а мне допустим нужно знать когда и во сколько залогинился например пользователь kos

Re: who | sed как выцарапать дату и время ?

Добавлено: 2009-10-13 8:38:27
konstantine
Всё решил проблему вот так:

Код: Выделить всё

DATE_ON=`who -m | while read a b DATE_ON TIME_ON; do echo $DATE_ON; done`
TIME_ON=`who -m | while read a b DATE_ON TIME_ON; do echo $TIME_ON; done`
echo DATE_ON=$DATE_ON
echo TIME_ON=$TIME_ON
При работе выдаёт так:

Код: Выделить всё

konstantine@konstantine:~/bin> sh test.sh
DATE_ON=2009-10-12
TIME_ON=16:38

Re: who | sed как выцарапать дату и время ?

Добавлено: 2009-10-14 4:20:15
konstantine
млин в некоторых ситуациях who -m ничего не отображает, поэтому пришлось чуток доработать, воть:

Код: Выделить всё

DATE_ON=`/usr/bin/who | while read a b DATE_ON TIME_ON c; do if test "$LOGIN"=$a; then /bin/echo $DATE_ON; exit; fi done`
TIME_ON=`/usr/bin/who | while read a b DATE_ON TIME_ON c; do if test "$LOGIN"=$a; then /bin/echo $TIME_ON; exit; fi done`