Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   [решено] Скрипт: найти пользователя просидевшего больше всего времени. (http://forum.oszone.net/showthread.php?t=247244)

Muro_like 19-11-2012 16:41 2028319

Скрипт: найти пользователя просидевшего больше всего времени.
 
Здравствуйте, задача заключается в том, что необходимо определить кто из пользователей сидел больше всего времени в сети. В скрипт передается значения дня (Сегодня, вчера или позавчера). Проблема в правильной вырезки и проверки значений. У меня получилось сделать раскидывания с параметрами, застрял на самом тупом. Не могу понять каким образом можно правильно вырезать значения длительности сессии и при этом сохранить имя пользователя.
Как я делаю и думаю:
Код:

last -s | grep "`date `" | cut -c 1-15,74-81 | tr -d "[(,)]" | tr -s " "
Вызвал last, нашел те значения которые по дате совпадают, вырезал из-них имя пользователя и длительность сессии и удалил лишние символы, хотя еще пробелы можно удалить чтобы чище было и ровнее, но при таких операции cut можно случайно либо подхватить какие-то левые части, либо не до хватить время. Если забить конечно же на ранее того что плохо режим, то в результате у нас получаются 2 колонки в одной имя в другой длительность сессии, как можно взять отдельно часть имя в одну переменную и в другую часть длительность?.
Все под freebsd.

AMDBulldozer 19-11-2012 21:12 2028517

Вырезать лучше не cut'ом, а awk '{print $1}'. Но лучше всего было бы, если бы Вы поместили кусок вывода last (я уже не помню совпадает ли он в выводом last в Linux, но ключа -s в Linux точно нет) и желаемый образец вывода сценария.

Muro_like 20-11-2012 00:29 2028637

Сделал скрипт, тему можно удалить.

SoulSide 20-11-2012 03:53 2028699

Цитата:

Цитата Muro_like
Сделал скрипт, тему можно удалить. »

Вот что вы за люди? Как решил , так сразу: "Решил проблему, тему можете удалить". А другим не надо? Поделились бы скриптиком. Может кому ещё пригодилось бы! И нажали б "Решено".
Это не чат а форум. Muro_like, В следующий раз пользуйтесь каким нибудь чатом, там сообщения не сохраняются.

Muro_like 20-11-2012 15:29 2028971

Код:

if [ $1 ] #проверка на аргумент then if [ $1 = "Today" ] #если сегодня выбрали then last -s | grep "`date`" | cut -c 1-15,74-81 | tr -d "[(,)]" >>UserTime uName="f" uTime="0" cat UserTime | while read line #line Будет переменной в которой сохраняются строка do tUser=`echo $line | awk '{print $1}'` if(( $uTime < $tUser )) 2>null then uTime=$tUser # или обнулением и заносим uName=`echo $list | awk '{print $1}'` fi done rm UserTime echo $uName elif [ $1="Yesterday"] ... elif [ $1="DayBeforeOne"] ... fi fi
Скрипт не жалко, пользуйтесь, мне при сдаче ничего не сказали. Практику спрашивал, а правильное вырезанием, ему было не столь важно.


Время: 18:59.

Время: 18:59.
© OSzone.net 2001-