Python-сообщество
- Начало
- » GUI
- » Выключение компьютера по заданному времени
#1 Июнь 21, 2011 21:23:33
sanodin От: Зарегистрирован: 2011-06-16 Сообщения: 515 Репутация: 31 Профиль Отправить e-mail
Выключение компьютера по заданному времени
Слепил скрипт,прописываешь время в скрипте и запускаешь….в заданное время комп выключается
Хотел вывести в окно Tkinter но не могу найти как что бы время можно было в окне вводить а не в скрипте….видел много раз в других прогах как выпадает менюшка и там выбираешь час и минуты…не знаю как так сделать…подскажите…или пример приведите
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Tkinter
import time
from os import geteuid,system
curtime = ''
clock = Tkinter.Label()
clock.pack()
strToFind=("01:10:00")
def tick():
global curtime
newtime = time.strftime('%H:%M:%S')
if newtime != curtime:
curtime = newtime
clock.config(text=curtime)
clock.after(200, tick)
line=curtime
if strToFind in line:
system("/usr/bin/shutdown -h now")
tick()
clock.mainloop()
#2 Июнь 22, 2011 09:51:36
sanodin От: Зарегистрирован: 2011-06-16 Сообщения: 515 Репутация: 31 Профиль Отправить e-mail
Выключение компьютера по заданному времени
Надо создать группу shutdown , инструкцией пользовался взятой вроде здесь на форуме:
цель — выключение компьютера, которое по умолчанию не удастся сделать без административных полномочий, нам придется сделать еще несколько телодвижений.
* Создадим скрипт /usr/bin/shutdown, написав в него:
#!/bin/sh
sudo /sbin/shutdown $*
Как видно из текста скрипта — там используется обычный /sbin/shutdown, которому передаются все параметры командной строки, передаваемые нашему /usr/bin/shutdown. А также /sbin/shutdown выполняется с командной sudo, которая позволяет выполнять другие команды от имени администратора системы.
* Создадим группу shutdown
sudo groupadd shutdown
и добавим себя в нее, воспользуясь groupadd/usermod или отредактировав файл /etc/group. Я пользовался последним способом, для этого нужно найти в файле /etc/group строку типа
shutdown:x:1002:
Чтобы добавить себя в эту группу, измените эту запись на вот такую:
shutdown:x:1002:user1
где user1 — это логин вашего пользователя. Если необходимо добавить еще несколько пользователей в эту группу, перечислите их через запятые в той же строке (без пробелов). Цифра 1001 (ИД группы) может у вас быть другой.
В конечном виде у меня эта строка получилась такой:
shutdown:x:1002:skymanphp
* Присвоим этот скрипт группе shutdown:
chgrp shutdown /usr/bin/shutdown
* Установим право на запуск только группе shutdown:
chmod g+x /usr/bin/shutdown
* Чтобы sudo не попросило у нас пароль, добавим в файл /etc/sudoers строчку:
%shutdown ALL= NOPASSWD: /sbin/shutdown
Она значит то, что всем пользователям, входящим в группу shutdown разрешен запуск скрипта /sbin/shutdown с административными полномочиями без ввода пароля.
#3 Июль 15, 2017 11:48:14
Kyrym Зарегистрирован: 2016-12-28 Сообщения: 225 Репутация: 3 Профиль Отправить e-mail
Выключение компьютера по заданному времени
Не знаю Tkinter, но получается, что, если делать без таймера, то выключать комп должен такой код из двух строк:
from os import system system("/usr/bin/shutdown -h now")
.
Это для линукса?
Зато прекрасно работает код запуска батника:
файл питона:
import os os.startfile(r'C:\A\Выключение_ПК.txt')
файл bat:
shutdown.exe -s -t 00
Отредактировано Kyrym (Июль 15, 2017 11:51:29)
выключить комп через терминал(shutdown) без sudo. как ?
приветствую. пишу для себя программку для выключения/перезагрузки системы по таймеру(аналог EasyShutdown под linux), ребутить систему решил через библиотеку subprocess(python) которая запускает скрипты bash в python’e, но не знаю как сделать, что бы можно было перезагрузить машину без su/sudo.
barysevich
27.09.14 20:07:16 MSK
Можно через dbus и ConsoleKit
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Hjorn ★
( 27.09.14 20:09:47 MSK )
Ответ на: комментарий от Hjorn 27.09.14 20:09:47 MSK
Проще через судов, а если серьёзно то добавить пользователя в группу, не помню какую так как нет возможности проверить
CHIPOK ★★★
( 27.09.14 20:13:41 MSK )
Ответ на: комментарий от CHIPOK 27.09.14 20:13:41 MSK
этот вариант не катит, надо что бы программа запускалась «с коробки» на разных машинах, а не только у меня.
barysevich
( 27.09.14 20:35:34 MSK ) автор топика
Ответ на: комментарий от Hjorn 27.09.14 20:09:47 MSK
спасибо, буду пробовать, хотя не до конца понимаю что это за кусок кода.
barysevich
( 27.09.14 20:37:34 MSK ) автор топика
Ответ на: комментарий от barysevich 27.09.14 20:35:34 MSK
зафига тебе выключать чужие машины
anonymous
( 27.09.14 20:37:36 MSK )
Ответ на: комментарий от anonymous 27.09.14 20:37:36 MSK
нее, ты не так понял 🙂 просто что бы программка работала на разных компьютерах(под разными учетными записями), а не только у меня(потому-что я прописал права доступа)
barysevich
( 27.09.14 20:38:50 MSK ) автор топика
Ответ на: комментарий от barysevich 27.09.14 20:37:34 MSK
ConsoleKit — это такой демон, обслуживащий пользовательские сессии. Им можно управлять через dbus. Только вот его вроде выпиливают сейчас повсюду. Если у тебя systemd, то фокус не прокатит. Может заглянут знатоки и подскажут, как это сделать через logind.
Hjorn ★
( 27.09.14 20:53:36 MSK )
Ответ на: комментарий от CHIPOK 27.09.14 20:13:41 MSK
А пароль кто будет вводить?
Hjorn ★
( 27.09.14 20:54:50 MSK )
Ответ на: комментарий от CHIPOK 27.09.14 20:13:41 MSK
reprimand ★★★★★
( 27.09.14 20:59:27 MSK )
которая запускает скрипты bash в python’e
может сразу на баше написать?
snaf ★★★★★
( 27.09.14 20:59:43 MSK )
Ответ на: комментарий от snaf 27.09.14 20:59:43 MSK
да, прочитал о ConsoleKit так там в разных версиях может по разному себя вести, bash не катит, т.к. это будет аплет для unity с менюшками на Gtk, даже не знаю как быть, хотелось бы универсальность программки, что бы под разными версиями запускался системы/пакетов.
barysevich
( 27.09.14 21:10:56 MSK ) автор топика
Вроде бы с правами надо разбираться через polkit.
risenshnobel ★★★
( 28.09.14 00:08:25 MSK )
Ответ на: комментарий от Hjorn 27.09.14 20:54:50 MSK
:NOPASSWD — настраивается в /etc/sudoers.
LongLiveUbuntu ★★★★★
( 28.09.14 00:17:41 MSK )
Ответ на: комментарий от LongLiveUbuntu 28.09.14 00:17:41 MSK
Стрёмно как-то давать беспарольный sudo даже на одну команду. Хотя может это паранойя. Но всё равно ТСу это не подходит.
Hjorn ★
( 28.09.14 00:38:20 MSK )
если ты делаешь утилиту для других людей, утилиту (работающую «из коробки») для которой нужны повышенные привелегии, такие как «вылючение компьютера» или «стереть все файлы из /home/» (шутка) — то просто укажи в документации к утилите это требование.
. мол — «запускайте от root или через sudo».
второй вариант: раздели свою утилиту на две слабосвязанные части. одна часть это сервисный-юнит (запускаемый через systemd и висящий в системе постоянно), а вторая часть это клиентская часть. клиентская часть — будет связываться со своей серверной частью через dBus, например.
кстати, во втором варианте — я разумеется вижу угрозу безопасности (так как кроме именно твоей программы — связаться с серверной частью сможет также и программа злоумышленника, которая не имеет повышенных полномочий).
user_id_68054 ★★★★★
( 28.09.14 00:56:47 MSK )
Последнее исправление: user_id_68054 28.09.14 00:58:47 MSK (всего исправлений: 2)
Ответ на: комментарий от barysevich 27.09.14 20:37:34 MSK
спасибо, буду пробовать, хотя не до конца понимаю что это за кусок кода.
Тогда уж не вызывать bash из python только для того, чтобы дернуть dbus-send, а использовать dbus-python.
dexpl ★★★★★
( 28.09.14 03:17:44 MSK )
Ответ на: комментарий от Hjorn 27.09.14 20:53:36 MSK
Если systemd, то всё просто
poweroff или systemctl poweroff . По дефолту разрешения таковы, что единственный активный пользователь сможет вырубить машину без получения прав суперпользователя.
intelfx ★★★★★
( 28.09.14 03:36:03 MSK )
Последнее исправление: intelfx 28.09.14 03:38:01 MSK (всего исправлений: 3)
Ответ на: комментарий от user_id_68054 28.09.14 00:56:47 MSK
В случае с systemd такой демон уже написали и называется он logind 🙂
Таймер для выключения компьютеров на Python 3
Нужен простой скрипт для выключения компьютеров, чтобы когда компьютер включался он проверял время и начал отсчет до конкретного времени и отключился.
Отслеживать
3,169 2 2 золотых знака 22 22 серебряных знака 44 44 бронзовых знака
задан 21 июн 2018 в 9:26
1 1 1 серебряный знак 1 1 бронзовый знак
Зачем для этого Python? Хватит написать bat’ник в пару строк и запихать в автозапуск.
21 июн 2018 в 9:36
наверно можно и на powershell это организовать .
21 июн 2018 в 10:00
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Например это можно сделать бесконечным циклом, который будет проверять текущее время с желаемым
import os import time def shutdown(offPC=19): while time.gmtime().tm_hour < offPC: time.sleep(60) # ожидание 1 минуту os.system("shutdown -s")
Также можно попробовать после включения запускать скрипт, вычислять время в секундах до желаемого времени отключения и формировать такую запись(отложенное выключение):
os.system("shutdown -s -t xx")
Где XX время в секундах до отключения.
Программа на Python для управления компьютером / PyAutoGui
Питон славиться наличием большого количества очень крутых библиотек. В статье мы рассмотрим работу с библиотекой PyAutoGui, которая позволяет манипулировать компьютером.
Первое что необходимо сделать - это установить всё необходимое. Нам потребуется установить Python с официального сайта , а также скачать IDE, можно использовать PyCharm и далее создать внутри него новый проект.
Установка библиотеки
Теперь необходимо выполнить установку всех библиотек. Если вы работаете на Windows, то вам повезло и все что нужно - команду pip install pyautogui.
Если же вы работаете на Mac OS, то лучше вначале выполнить установку pip install pyobjc, сразу же за ней выполнить установку pip install pyobjc-core и только потом выполнить установку pip install pyautogui.
Работа с библиотекой
Используя библиотеку вы можете работать с мышью: вводить ею, нажимать, перетаскивать и так далее, а также можете работать с клавиатурой: вводить текст, нажимать на клавиши, выполнять нажатие на связку команд.
Некоторые из команд представлены ниже вместе с описанием:
import pyautogui as pg # Получение позиции мыши и вывод в консоль print(pg.position()) # Передвижение мыши pg.move(50, 50, duration=0.5) pg.moveTo(150, 200, 0.5) # Передвигаем к точке относительно экрана # Нажатие мышкой по определенной точке pg.click(769, 101) pg.doubleclick(769, 101) # двойное нажатие pg.rightclick(769, 101) # нажатие правой кнопкной мыши pg.leftclick(769, 101) # нажатие левой кнопкной мыши # Ввод текста pg.typewrite("itproger.com") # Выполнения нажатия на клавишу pg.typewrite(["enter"]) # Выполнения нажатия на сочетание клавиш pg.hotkey("winleft") pg.hotkey("winleft", "up") pg.hotkey("ctrl", "t") # Вызов различных всплывающих окон pg.alert("Окно с информацией", "Название окна", button="Текст на кнопке") age = pg.prompt("Укажите возраст: ", "Название окна") print(age) pg.confirm("Вам больше 18?", "Название окна", ("Да, точно", "Нет")) pg.password("Введите пароль", "Название окна") # Создание скриншота pg.screenshot("yourPic.png") # Мини программа website = pg.prompt("Введите название сайта:", "Веб сайт", "https://") pg.click(769, 101) pg.typewrite(website) pg.typewrite(["enter"]) pg.screenshot("yourPic.png")
Видео на эту тему
Также вы можете просмотреть детальное видео по работе с библиотекой:
Дополнительный курс
На нашем сайте также есть углубленный курс по изучению языка Питон . В ходе огромной программы вы изучите не только язык Питон, но также научитесь создавать веб сайты за счёт веб технологий и фреймворка Джанго. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy, а также создавать веб сайты на основе библиотеки Джанго.
Больше интересных новостей
ТОП-7 онлайн профессий в 2023 году
На каком языке пишут искусственный интеллект? Введение в ИИ
История компании Boston Dynamics. Как появлялись их роботы?
Давайте создавать веб-приложения, которые могут слушать!
Комментарии (1)
Крипи 22 октября 2022 в 09:41