Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
LINUX/ SHELL
LINUX/ SHELL
Доброго времени суток.
Начинаю изучать язык программирования SHELL на LINUX.
Хотел бы попросить вашей помощи в написании скрипта.
"Разработать программу, выводящую через определённый интервал времени
информацию о пользователях в системе: кто вошел, кто вышел".
Ваш проделанный труд готов компенсировать услугами в сфере графического дизайна.
Начинаю изучать язык программирования SHELL на LINUX.
Хотел бы попросить вашей помощи в написании скрипта.
"Разработать программу, выводящую через определённый интервал времени
информацию о пользователях в системе: кто вошел, кто вышел".
Ваш проделанный труд готов компенсировать услугами в сфере графического дизайна.
- Oleg65
- Местный говорун
- Сообщения: 859
- Зарегистрирован: 18 янв 2015, 10:56
- Откуда: г.Коломна Моск.обл.
Re: LINUX/ SHELL
Да как бы это не сложно: who - показывает вошедших пользователей, в цикл, тормоз в 10 сек - через sleep. Как-то так навскидку. Набросайте свою идею сами, поможем сделать работоспособной
Re: LINUX/ SHELL
А зачем же дублировать темы?Ser_Crash писал(а):Доброго времени суток.
Вот здесь вам ссылки на справочник с примерами на все случаи жизни: Программирование сценариев bashSer_Crash писал(а):Начинаю изучать язык программирования SHELL на LINUX.
Хотел бы попросить вашей помощи в написании скрипта.
P.S. Даже если вам помогут или напишут скрипт, то вам всё-равно придётся к нему возвращаться, улучшать и развивать (по опыту).
Re: LINUX/ SHELL
За основу взять что-то отсюда:Oleg65 писал(а):who - показывает вошедших пользователей, в цикл, тормоз в 10 сек - через sleep.
Код: Выделить всё
[olej@dell ~]$ who -u -H
ИМЯ ЛИНИЯ ВРЕМЯ PID КОММЕНТАРИЙ
olej :0 2016-09-18 14:18 ? 1154 (:0)
olej pts/2 2016-09-19 16:19 . 7352 (127.0.0.1)
(здесь нужно учесть, что в разных дистрибутивах Linux формат who может различаться ... поэтому нужно найти общее решение)
Ну, а по-хорошему, ваше приложение должно бы быть демоном, который пишет логи в системный или свой собственный журнал.
P.S. Всё сильно зависит для чего это вам надо: написать преподавателю чтобы отвязался , или написать себе любопытное приложение.
Re: LINUX/ SHELL
Всех залогиненых пользователей выводят команды:
who
w
Показывает историю команда:
last
За очередность выполнения отвечает сервис cron
Присутствует еще такая команда watch которая без опций выполняет программу
каждую секунду. Хорошо будет видно на примере по использованию памяти:
В вашем случае это может быть выполненно вот так:
Проверяет залогиненых пользователей каждые 10 секунд.
В моем выводе видно что я залогинена в системе два раза. Первый при входе в систему
через графический терминал и второй раз я подключилась к машине на свою же учетную запись
с локального адреса 192.168.0.22 по ssh.
[album]450[/album]
Список будет обновляться каждые 10 секунд. Кроме того
вполне можно самому написать скрипт вывода через определенный промежуток времени используя функцию sleep:
cat test.sh
Делаем скрипт исполняемым:
И запускаем:
./test
Вместо строчки echo "Привет" подставляем нужную команду, например df -h /
В слудующей строчке выбираем интервал повтора в секундах.
Завершить выполнение Ctrl+C
И в заключении просмотреть список всех зарегистрированных в системе пользователей можно командой:
Еще присутствует команда id предлагаю ознакомится самостоятельно
С ее помощью например можно с имитировать команду whoami
Не буду изменять, перепишу приведенный скрипт с командой очистки экрана
и выводом счетчика, а то получается не доделаный:
who
w
Показывает историю команда:
last
За очередность выполнения отвечает сервис cron
Присутствует еще такая команда watch которая без опций выполняет программу
каждую секунду. Хорошо будет видно на примере по использованию памяти:
Код: Выделить всё
watch free
Код: Выделить всё
watch -n 10 w
В моем выводе видно что я залогинена в системе два раза. Первый при входе в систему
через графический терминал и второй раз я подключилась к машине на свою же учетную запись
с локального адреса 192.168.0.22 по ssh.
[album]450[/album]
Список будет обновляться каждые 10 секунд. Кроме того
вполне можно самому написать скрипт вывода через определенный промежуток времени используя функцию sleep:
cat test.sh
Код: Выделить всё
#!/usr/bin/env bash
while : ; do
echo "Привет"
sleep 2
done
Код: Выделить всё
chmod 755 test.sh
./test
Вместо строчки echo "Привет" подставляем нужную команду, например df -h /
В слудующей строчке выбираем интервал повтора в секундах.
Завершить выполнение Ctrl+C
И в заключении просмотреть список всех зарегистрированных в системе пользователей можно командой:
Код: Выделить всё
getent passwd | awk -F: '{ if ($3 >= 1000) print $1}'
Код: Выделить всё
man id
Код: Выделить всё
id -un
и выводом счетчика, а то получается не доделаный:
Код: Выделить всё
#!/usr/bin/env bash
znak=0
while : ; do
echo $((znak++))
sleep 1
done
Последний раз редактировалось nezabudka 20 сен 2016, 22:09, всего редактировалось 5 раз.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: LINUX/ SHELL
Звучит не очень располагающе но можно исправить ситуацию. Назвался груздем - полезай в кузов. С васSer_Crash писал(а):...Ваш проделанный труд готов компенсировать услугами в сфере графического дизайна.
логотип форума. Без обязательств.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: LINUX/ SHELL
Увлеклась чё то. Давно не писала скрипты, взгрустнулось .
Код: Выделить всё
#!/usr/bin/env bash
znak=0
tput civis
for((i=0; i<8; i++)); do
wellcom="Hello World "
tput setaf $znak
tput sc
while [[ $wellcom != "" ]]; do
echo -ne "${wellcom:0:1}"
sleep 0.1
wellcom=${wellcom:1}
done
sleep 0.2
((znak++))
tput el1
tput rc
done
tput sgr0
tput cnorm
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay