Как выключить компьютер через python
Перейти к содержимому

Как выключить компьютер через python

Python-сообщество

[RSS Feed]

  • Начало
  • » 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

Программа на 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 году

ТОП-7 онлайн профессий в 2023 году

На каком языке пишут искусственный интеллект? Введение в ИИ

На каком языке пишут искусственный интеллект? Введение в ИИ

История компании Boston Dynamics. Как появлялись их роботы?

История компании Boston Dynamics. Как появлялись их роботы?

Давайте создавать веб-приложения, которые могут слушать!

Давайте создавать веб-приложения, которые могут слушать!

Комментарии (1)

Крипи 22 октября 2022 в 09:41

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *