Как проверить заблокирован сеанс или нет?

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#1

01 июл 2019, 11:05

Написал небольшой скрипт для автоматической блокировки ноутбука по синезубу, вроде как всё работает, но после блокировки (именно блокировка сеанса, не сон) скрипт продолжает работать из-за чего после разблокировать сессию практически не реально, после ввода пароля снова блокирует сессию.
Вопрос таков, как можно проверить заблокирована сессия или нет? Чтобы добавить в скрипт условия при котором если сессия заблокирована (на экране блокировки) то скрипт не должен выполняться.
linux mint 19.1 cinnamon х64, пользователь только тот который создавался при установке дистрибутива.
Строго прошу не судить, и не ругаться за глупо написанный скрипт, ещё зелёный.

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

#!/bin/bash
pass="Пароль"
echo $pass | sudo -S | timeout -s INT 15s hcitool lescan | if grep -i -o -q "MAC браслета"; then
	{
		echo "Mi Band найден."
	}
else
	{
	gnome-terminal -- dm-tool lock
	echo "Mi Band не найден."
	}
fi

Решение rogoznik » 01 июл 2019, 11:52
Amadeus, что-то такое

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

#!/bin/bash
pass="Пароль"
echo $pass | sudo -S | timeout -s INT 15s hcitool lescan | if grep -i -o -q "MAC браслета"; then
	{
		echo "Mi Band найден."
		if [[ -e /home/username/filelock ]]
		then
			rm /home/username/filelock
		fi
	}
else
	{
	if [[ ! -e /home/username/filelock ]]
	then
		gnome-terminal -- dm-tool lock
		touch /home/username/filelock
		echo "Mi Band не найден."
	else
		echo "Mi Band не найден."
	fi
	}
fi

Перейти к ответу ➙

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1312 раз
Поблагодарили: 724 раза
Контактная информация:

Как проверить заблокирован сеанс или нет?

#2

01 июл 2019, 11:09

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

fi
done
Не?

Аватара пользователя

rogoznik
Сообщения: 10042
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#3

01 июл 2019, 11:10

Dja, я бы сделал
ИзображениеИзображение

no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#4

01 июл 2019, 11:16

darkfenix писал(а):
01 июл 2019, 11:10
я бы сделал
Dja писал(а):
01 июл 2019, 11:09
Не?
Так то можно сделать, но после нужно будет снова запускать скрипт, а этого делать не хотелось бы, тоисть хотелось бы чтоб он работал постоянно со старта системы и понимал когда экран заблокирован.

Аватара пользователя

WWolf
Сообщения: 3895
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#5

01 июл 2019, 11:20

Amadeus писал(а):
01 июл 2019, 11:05
после разблокировать сессию практически не реально, после ввода пароля снова блокирует сессию.
таймаут опроса браслета уменьшить?
просто получается что разблокируем, браслета не находим и тут же снова лочимся...
в эту сторону копать надо...

опять же какое-то кривое состояние получается... если блютуз не включен, то вечный лок? :crazy:

no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#6

01 июл 2019, 11:26

WWolf писал(а):
01 июл 2019, 11:20
таймаут опроса браслета уменьшить?
оно и опрашивает раз в 30 секунд чего как по мне достаточно.
WWolf писал(а):
01 июл 2019, 11:20
опять же какое-то кривое состояние получается... если блютуз не включен, то вечный лок?
Да согласен здесь криво и не продумано, но пока что это на потом.

Аватара пользователя

slant
Сообщения: 4505
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Как проверить заблокирован сеанс или нет?

#7

01 июл 2019, 11:28

Amadeus писал(а):
01 июл 2019, 11:16
Так то можно сделать, но после нужно будет снова запускать скрипт, а этого делать не хотелось бы, тоисть хотелось бы чтоб он работал постоянно со старта системы и понимал когда экран заблокирован.
Bash - он не для написания демонов. Скрипт закольцованный таким образом будет жрать больше ресурсов, чем он же запускаемый с минутной периодичностью через cron. Так что не занимайтесь ерундой, а просто добавьте запуск вашего скрипта в crontab с периодом в одну минуту, и получите желаемое.

Аватара пользователя

WWolf
Сообщения: 3895
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#8

01 июл 2019, 11:31

Amadeus писал(а):
01 июл 2019, 11:26
оно и опрашивает раз в 30 секунд чего как по мне достаточно
для блокировки достаточно, тут не поспоришь... опять же если не стабильно держится...
но у нас проблема с разблокировкой... как быстро выясняется состояние браслета при разлоке? в каком состоянии блютуз? сюда копай

no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#9

01 июл 2019, 11:33

slant писал(а):
01 июл 2019, 11:28
просто добавьте запуск вашего скрипта в crontab с периодом в одну минуту, и получите желаемое.
После блокировки крон остановиться? Проблема таки в том что скрипт запускаеться после блокировки сеанса из-за чего и возникает проблема с разблокировкой, именно это и хочу решить. Другими словами крон не должен запускать когда устройство попало на экран блокировки.
Последний раз редактировалось пользователем 1 Amadeus; всего редактировалось раз: 1

no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#10

01 июл 2019, 11:37

WWolf писал(а):
01 июл 2019, 11:31
но у нас проблема с разблокировкой... как быстро выясняется состояние браслета при разлоке? в каком состоянии блютуз? сюда копай
Именно в этом и проблема, как показало наблюдение, при блокировке, спустя 30 секунд скрипт снова запускаеться и не находит браслет, посылает команду блокировки, и при попытке разблокировать после ввода пароля он выполняет команды блокировки которые накопились за время моего отсутствие. Вот эту проблему хочу решить проверкой заблокирована сесия или нет

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1312 раз
Поблагодарили: 724 раза
Контактная информация:

Как проверить заблокирован сеанс или нет?

#11

01 июл 2019, 11:38

А что ctrl+alt+L уже отменили? Нафига эти сложности?

no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#12

01 июл 2019, 11:40

Dja писал(а):
01 июл 2019, 11:38
А что ctrl+alt+L уже отменили? Нафига эти сложности?
не отменили, но а почему бы не привязать блокировку к блютус устройству которое всегда при тебе? Да и на винде такой подход мне был удобен, так что почему это не сделать для себя в линуксе?

Аватара пользователя

rogoznik
Сообщения: 10042
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#13

01 июл 2019, 11:44

Amadeus, могу предложить костыльное решение проблемы(должно помочь)
При блокировке создавай в хомяке файл. А потом проверяй наличие файла, если есть то ничего не делать и считать сеанс заблокированным, а при разблокировке файл удалять.
ИзображениеИзображение

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1312 раз
Поблагодарили: 724 раза
Контактная информация:

Как проверить заблокирован сеанс или нет?

#14

01 июл 2019, 11:45

Потому что это не винда. Это надо понимать прежде всего. Вы если в космос вылетите тоже будете спрашивать а почему здесь нет воды и песка как на Земле?

Аватара пользователя

WWolf
Сообщения: 3895
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1687 раз
Поблагодарили: 1212 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#15

01 июл 2019, 11:46

Dja, ну вот сча ваще нифига не прав :) это реально удобно и по политики безопасности ваще отличное решение ;)

no avatar

Автор темы
Amadeus
Сообщения: 30
Зарегистрирован: 01 авг 2018, 22:25
Контактная информация:

Как проверить заблокирован сеанс или нет?

#16

01 июл 2019, 11:49

Dja писал(а):
01 июл 2019, 11:45
Потому что это не винда. Это надо понимать прежде всего. Вы если в космос вылетите тоже будете спрашивать а почему здесь нет воды и песка как на Земле?
Я прекрасно понимаю что это не винда, но кто сказал что это нельзя реализовать? У меня лишь возникла проблема в роботе скрипта который делает практически тоже самое что и функция в винде только с одним не очень хорошим эфектом и вот по этому я обратился сюда. Мне удобно и хотелось бы чтобы происходила блокировка по БТ почему мне нельзя это реализовать?

Аватара пользователя

Dja
Сообщения: 6875
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1312 раз
Поблагодарили: 724 раза
Контактная информация:

Как проверить заблокирован сеанс или нет?

#17

01 июл 2019, 11:51

А смартфон кстати не будет против?
Это же браслет будет то и дело от смарта к компу и обратно прыгать

Аватара пользователя

rogoznik
Сообщения: 10042
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#18

01 июл 2019, 11:52

Amadeus, что-то такое

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

#!/bin/bash
pass="Пароль"
echo $pass | sudo -S | timeout -s INT 15s hcitool lescan | if grep -i -o -q "MAC браслета"; then
	{
		echo "Mi Band найден."
		if [[ -e /home/username/filelock ]]
		then
			rm /home/username/filelock
		fi
	}
else
	{
	if [[ ! -e /home/username/filelock ]]
	then
		gnome-terminal -- dm-tool lock
		touch /home/username/filelock
		echo "Mi Band не найден."
	else
		echo "Mi Band не найден."
	fi
	}
fi
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Как проверить заблокирован сеанс или нет?

#19

01 июл 2019, 11:55

darkfenix писал(а):
01 июл 2019, 11:44
могу предложить костыльное решение проблемы
присоединяюсь, для частного решения собственный триггерфайл выглядит вполне логичным.

А если цепляться уже на уровень глубже, и спрашивать изящней у самой сессии ДЕ - то это где-то в пропертях dbus или флагах dconf должно динамически меняться,
и на время этих поисков и отладки нужного флага искать уже из под второй сессии рутом или другим юзером когда залочен первый.
Изображение
   
Изображение

Аватара пользователя

slant
Сообщения: 4505
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Как проверить заблокирован сеанс или нет?

#20

01 июл 2019, 11:58

Amadeus писал(а):
01 июл 2019, 11:33
После блокировки крон остановиться? Проблема таки в том что скрипт запускаеться после блокировки сеанса из-за чего и возникает проблема с разблокировкой, именно это и хочу решить.
Нет, не остановится, это я не совсем корректно процитировал - на что ответить хотел. Имелось в виду, что закольцовка скрипта на bash - плохое решение в любом случае. Вне зависимости от содержания.

А по поводу проверки залочки машины - тут два варианта. Либо делать через файл-флаг как предложил darkfenix, либо ковырять dbus-monitor - за отслеживание состояний gnome-подобных DE отвечает он. Но готового решения не предложу, и синтаксис там довольно заморочливый получается.
Последний раз редактировалось пользователем 1 slant; всего редактировалось раз: 1

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей