Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 21.10.2019
Сообщений: 232

Сообщения и время работы

12.12.2019, 00:23. Показов 1961. Ответов 5

Студворк — интернет-сервис помощи студентам
В первом параметре задаётся время, как проверить что пользователь работает в системе указанное время.
Как отправлять сообщение на почту пользователю?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2019, 00:23
Ответы с готовыми решениями:

Вывод сообщения во время работы макроса access 2007
Добрый день. Не смог найти на сайте. Нужно, что бы при выполнении макроса выводилось сообщение о выполнении его. Типа...

Посчитать время события - время работы кассиров (система массового обслуживания)
Есть программа, моделирующая следующую задачу (система массового обслуживания): В бухгалтерии предприятия имеются два кассира, каждый...

Выводить текущее время в определенные позиции консоли во время работы
Портирую консольное приложение. Есть код, который работал после компиляции в BC++ 3.1, после компиляции под MinGW GCC программа не...

5
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
12.12.2019, 08:43
Есть команды с правильно подобранными опциями должны решать ваш вопрос
это
Bash
1
2
last
mail
и из предыдущего вашего вопроса
Bash
1
2
getent
w
Если трудно не пытайтесь выстроить логическую цепочку всего задания. Умейте разбить задачу
на части и решайте по отдельности и тогда придет понимание как связать все вместе
1
2 / 2 / 0
Регистрация: 21.10.2019
Сообщений: 232
12.12.2019, 18:01  [ТС]
Цитата Сообщение от nezabudka Посмотреть сообщение
Если трудно не пытайтесь выстроить логическую цепочку всего задания. Умейте разбить задачу
на части и решайте по отдельности и тогда придет понимание как связать все вместе
Не трудно, программу я саму уже написал, алгоритм сам сделал, проверку просто не знаю как сделать и сообщение на почту отправлять

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh
 
function Mes()
{   # Вывод символьной строки, содержащей текст некоторого сообщения
    read msg
    echo "Сообщение:" $msg
    # Прогоняем всех пользователей, чьи имена переданы $2, $3...  
    while [ -n "$2" ]
    do
        # Проверяем регистрацию в системе пользователей
        USER="$2"
        echo
        if who | grep -qe "^$USER"; then 
            echo "Пользователь $USER" зарегистрирован; 
        else 
            echo "Пользователь $USER" не зарегистрирован; fi; 
        
        # Рассылаем введённое сообщение 
        TEMP="$1" 
        if проверка # По почте, если пользователь в системе в течение заданного $1 времени
            #тут сообщение на почту
        else # иначе
            echo "Сообщение пользователю:" $msg # прямое сообщение
   
        shift
    done
}
Mes "10" "Jack" "Adam" "Mark"
Добавлено через 46 минут
nezabudka, Не подскажите как это доделать?
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
12.12.2019, 21:25
Мне кажется командой who вы проверяете ни кто зарегистрирован в системе
а кто в настоящее время залогинен. Вполне возможно лучший вариант будет
if [ $(getent passwd $2) ]; then
Ну да ладно я могу и ошибаться.
Далее вам необходимо отобрать пользователей работающих в системе заданное время
Для меня это тоже не совсем понятно как одним параметром можно отобразить период,
но в каманде last существует именно такая опция -p которая может принимать одним значением
yesterday или now например, так же задается и время одним параметром
Сама почта отсылается так
echo $msg | mail -s "theme" $2
Ну и для прямых сообщений возможно вам пригодится команда wall
Удачи, надеюсь это поможет
1
2 / 2 / 0
Регистрация: 21.10.2019
Сообщений: 232
12.12.2019, 22:59  [ТС]
nezabudka, Можете поподробнее объяснить как работает last. Я могу достать из него время сессии пользователя?

Добавлено через 1 час 3 минуты
Написал, но не понимаю как посчитать время работы пользователя в системе

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/sh
 
function Mes()
{   
    TEMP=$1 # Присваивается время из параметра $1
    
    # Вывод символьной строки, содержащей текст некоторого сообщения
    read msg
    echo "Сообщение:" $msg
    # Прогоняем всех пользователей, чьи имена переданы $2, $3...  
    while [ -n "$2" ]
    do
        # Проверяем регистрацию в системе пользователей
        USER="$2"
        echo
        if [ $(getent passwd $USER) ]; then 
            echo "Пользователь $USER" зарегистрирован; 
        else 
            echo "Пользователь $USER" не зарегистрирован; fi; 
            
        # Рассылаем введенное сообщение
        
        a=9 #ТУТ НЕ ДОДЕЛАНО (ЗАГЛУШИЛ)
        
        if [ $a -ge $TEMP ]; then  # По почте, если пользователь в системе в течение заданного $1 времени
            echo $msg | mail -s "Тема" $USER # Сообщение на почту
        else # иначе
            wall $msg; fi; # прямое сообщение
            
        shift
    done
}
Mes 10 "Jack" "Adam" "Mark"
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
13.12.2019, 19:42
Лучший ответ Сообщение было отмечено KopHack как решение

Решение

Опция -p команды last принимает как минимум сдвоенный дополнительный аргумент
например в виде часов и минут 12:30 или со знаком +5min или -5days
if [ "$(last -p -5days $2 | head -1)" ]; then //replace -5days with $1
По видимому этот параметр должен выбирать тех кто будучи зарегистрированным
уже завершил работу по времени установленным этим параметром опции.
Команду wall необходимо вынести за цикл, а всю вашу "заглушку" без оператора else
и без команды wall необходимо встроить в 17 строчку

Добавлено через 30 минут
Я нашла команду соответствующую заданию
Только необходимо будет инвертировать
Bash
1
if ! [ "$(lastlog -t 10 -u $USER)" ]; then
Будет срабатывать на пользователях которые по меньшей мере последние 10 дней
не логинились в системе
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2019, 19:42
Помогаю со студенческими работами здесь

Вывести время работы системы и перезагрузить её, если время превысило заданное значение
Собственно говоря нужно в powershell написать скрипт, выводящий время работы системы и отправляющий систему в перезагрузку, если время...

Как вывести время работы программы ПОСЛЕ завершения работы progressBar?
У меня почему-то сначала выводится время в MessageBox, а затем уже завершает свою работу progressBar, а мне нужно наоборот. ...

Ввести производительности работы трех труб, которые наполняют бассейн, и время их работы. Сколько набрано в бассейне?
Ввести производительности работы трех труб, которые наполняют бассейн, и время их работы. Сколько набрано в бассейне?

Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы
1. Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы...

Сообщения во время подгрузок в программе
Здравствуйте. У меня есть программа которая работает с файлами. Во время загрузки этих файлов на сервер(FTP) программа просто подвисает и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru