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

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

  • автор:

Выключение пк через определенное время

Всем привет. Только начал изучать питон и решил что по мере поступления ошибок изучать новое.
Захотел себе сделать удобство таким образом: ввожу время в часах и спустя указанное количество времени отключается компьютер, но что-то не выходит.
Код:

1 2 3 4 5 6 7 8 9 10 11
from os import system while True: try: timer = int(input('Через сколько выключить компьютер? ')) except ValueError: print('Ошибка! Введите количество часов.') else: print("Хорошо, компьютер выключится через ",timer,"ч.") offtime = timer*60*60 system('shutdown -s -t ',offtime) break

Подскажите, что я делаю не так?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как прописать в коде открытие программы по клику на .EXE через определенное время?
Здравствуйте, такой вопрос есть файл main.py в нем код такой: import tkinter master =.

Как постить(в определенное время) картинки в паблик через vk_api с циклом for?
Картинки в отдельной папке с проектом(не с вк). Надеюсь, существует способ постить картинки, не.

Как удалить сообщение от Telegram бота (aiorgam) через какое-то определённое время?
Например удалить вот такое сообщение через 24 часа: await bot.send_message(message.from_user.id.

Как в PyQt сделать так, чтобы код выполнился через определенное время?
Всем привет! Как в PyQt использовать таймер? этот код не работает: from PyQt5.QtCore import.

Эксперт Python

4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
А команда system ждёт завершения или нет?
Регистрация: 21.11.2020
Сообщений: 3

ЦитатаСообщение от dondublon Посмотреть сообщение

А команда system ждёт завершения или нет?
Оказалась проблема в том, что систем принимает строчный тип.

1 2 3 4 5 6 7 8 9 10 11 12
from os import system while True: try: timer = int(input('Через сколько выключить компьютер? ')) except ValueError: print('Ошибка! Введите количество часов.') else: print("Хорошо, компьютер выключится через ",timer,"ч.") timer = timer*60*60 offtime = str(timer) system('shutdown -s -t '+offtime) b

Оставлю тут, вдруг кому поможет.
Регистрация: 31.05.2022
Сообщений: 1
У меня вот так заработало

1 2 3 4 5 6 7 8 9 10 11
from os import system while True: try: timer = int(input('Через сколько часов выключить компьютер? ')) except ValueError: print('Ошибка! Введите количество часов.') else: print("Хорошо, компьютер выключится через ",timer,"ч.") offtime = timer*60*60 system(f'shutdown -t ') break

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

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

Выключение компа в определённое время
Подскажите как сделать такую опцию что бы можно было поставить время и комп сам выключился? вот.

Выключение комьютера в определенное время
Win 7 ultimate доброго дня. Дома встал вопрос про ограничение пользования компьютером для младшего.

Выключение компьютера в определенное время.
Всем доброго дня! Дело у меня такое: в форме есть 2 комбобокса, 1 — часовой (00ч. ,01ч. 24ч.) и.

Выключение двигателя через определенное количество оборотов
PIC 16f877. Двигатель с датчиком кол-ва оборотов. Выключить двигатель через 2 оборота. Помогите.

Как проходить через цикл через определенное время
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;.

После блокировки экрана через некоторое время выключение
У меня телефон на android, если поставить его на блокировку, экран потухнет, если тут же снять, всё.

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 🙂

Как написать выключение компа?

Мне нужно чтобы после последней команды print через 2 минуты компьютер выключился, а как бы это получше написать пока не понял. Потому что я так понимаю если я вставлю этот код в свою программу, то выйдет что он будет с момента запуска отсчитывать время.
Знаю, вопрос дурацкий, но я уже в тупике=/

  • Вопрос задан 26 апр.
  • 549 просмотров

1 комментарий

Простой 1 комментарий

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

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