LinuxForum.Fans
Тема

Скрипт проверки пользователя в сети

Автор: varvar777 6 сообщений 3972 просмотров
#287252

Господа Линуксники, нужна ваша помощь!

Задача:
Написать скрипт, что бы при запуске мог проверить пользователь в "сети" (залогинился) или нет.
Если пользователь в сети, програмка издает БИП и выдает, что пользователь в сети. // конец скрипта
Если пользователь не в сети, скрипт выдает, что пользоваетль не в сети и ожидает еще одной проверки 60 секунд.
После 60-ти секунд снова проверяет и если не в сети выдает, что он (пользователь) не в сети и выдает надпись. Если в сети выдает тоже надпись. // конец скрипта.

Скрипт написал, что то то идет на перекосяк.

Выдаю скрипт:

text

#!/bin/sh
#
# My Script
#
clear
echo "......................................................."
echo "                 To check user in online               "
echo "......................................................."
echo " "

my_time=60 deftime=5

if [ $? -eq 0 ]

then who | grep $1 echo "\a User $1 login in this system"

else if [ $# -eq 2 ] && [ $2 != q ]

then who | grep -w $1 sleep $my_time

echo "User $1 logged in frequency $my_time seconds" else

if [ $# -eq 3 ] && [ $3 = q ] then sleep $my_time who | grep -w $1

else

if [ $2 = q ] then who | grep -l $1 sleep $deftime

else echo "User $1 do not logged in system"

exit 1 fi fi fi fi

Скриншоты скачайте сами, делаю все в Линуксе, фалообменики не понимают формат (((((( .xcf
1 - Задаю проверить себя, все отлично!
http://clip2net.com/s/2xOeV

2 - Задаю проверить мифического человека:
Выдают что пользователь в СЕТИ! Но несколько в ином варианте.
http://clip2net.com/s/2xOeU

Подправьте код, плиз!!
Благодарю за скорые и толковые правки.
.................................................................................................................
Админы, и модераторы - если тема не в том разделе - перенесите, я тут впервые.

#287273
"varvar777" написал:
Скриншоты скачайте сами, делаю все в Линуксе, фалообменики не понимают формат (((((( .xcf

Зато Gimp умеет сохранять файлы в том числе и в jpeg и png, да и делать скриншоты в нём как-то излишне брутально ;)
P.S. А вывод скрипта (текст) можно и показать, как обычный текст.

#287283

У тебя строка "echo "\a User $1 login in this system"" срабатывает всегда вне зависимости от результата работы предыдущей команды "who | grep $1".
Сделай нечто вроде этого:

text
in_net=`who | grep  $1 -c`
if [ "$in_net" -ne 0 ]
then
    echo "\a User $1 login in this system"
else
    echo "\a User $1 not login in this system"
fi

P.S. Расставь отступы для всех if/else, чтобы понятнее было.

#287613

Спасибо за ответы!! Ломаю голову второй день.
Задача немного усложнилась.
Vascom - спасибо за подсказку, но не все так просто...

1 - Система проверяет, пользователь в сети или нет.
- если в сети выдает надпись - "в сети" - конец программы

- если пользователь не найден, программа проверяет правильность написания, имя пользователя ОДНО слово. Если через пробел есть Буква или Цифра - система сообщает - Проверьте правильность написания имени - конец программы

- или если пользователь не найдет - то система ожидает (в моем случае сейчас в скрипте 10 сек) и выдает что "Пользователь в течении 10 секунд не залогинился" ожидает еще 5 сек и выдает - Пользователь такой то не в систаме. - конец программы

Все что надо. У меня сейчас такой скрипт.

#!/bin/sh
#
# My Script
#
clear
echo "......................................................."
echo " To check user in online "
echo "......................................................."
echo " "

my_time=10
deftime=5

#if [ "$?" -eq 0 ]

in_net=`who | grep "$1" -c`
if [ "$in_net" -ne 0 ]

then
echo "\a\n User "$1" login in this system"
else

if [ "$2" != q ] && [ "$2" != [0-9] ]

echo "Please, check the name and type correct..."

then

who | grep -w "$1"

echo "User $1 not logged in $my_time seconds"
else

if [ "$#" -eq 3 ] && [ "$3" = q ]
then
sleep "$my_time"
who | grep -w "$1"

else

if [ "$2" = q ]
then
who | grep -l "$1"
sleep $deftime

else
echo "User $1 do not logged in system"

exit 1
fi
fi
fi
fi

Проверяю себя: - ОТЛИЧНО!
.......................................................
To check user in online
.......................................................

User vladimir login in this system
vladimir@ubuntu:~$

Проверяю garry: - Пользователь не проходит валибность имени
.......................................................
To check user in online
.......................................................
Please, check the name and type correct...
User garry not logged in 10 seconds
vladimir@ubuntu:~$

Хотя просто должно выдать пользователь:
- Пользователь в течении 10-ти сек в сеть не входил
- Пользователь не в сети.

Проверяю garry 8 - garry k:
.......................................................
To check user in online
.......................................................

Please, check the name and type correct...
User garry not logged in 10 seconds
vladimir@ubuntu:~$

Тоже самое!!!!!

Голова кругом (((((((( помоги выправить код. Он по ходу нормально написан, только с ошибками, или недочетами с "не довведенными" командами....

#287665

Вот. Всё ведь просто и понятно, когда отступы стоят.

text
#!/bin/bash
#
# My Script
#

my_time=10 deftime=5 good_msg="User "$1" login in this system"

echo "......................................................." echo " To check user online " echo "......................................................." echo

#Check input parameters if [ "$#" -ne 1 ] then echo "Please, type only one name without spaces..." exit fi

#Main check in_net=`who | grep "$1" -c` if [ "$in_net" -ne 0 ] then echo "$good_msg" else one_word=`echo "$1" | grep " " -c` if [ "$one_word" -ne 0 ] then echo "Please, check the name and type correct..." else sleep $my_time in_net=`who | grep "$1" -c` if [ "$in_net" -ne 0 ] then echo "$good_msg" else sleep $deftime in_net=`who | grep "$1" -c` if [ "$in_net" -ne 0 ] then echo "$good_msg" else echo "User $1 do not logged in system" fi fi fi fi

#287836

Я не могу поверить глазам!!!!
Все работает!!!!!

Спасибо, это не просто помощь "пожилому студенту" - ты по новой показал как строить код.

Блин, ну почему препод не подсказал, что как в "С" проще делать все отступы, что бы нагляднее и ничего не потерять! Спасибо за науку!!!

Войдите или зарегистрируйтесь, чтобы ответить.