Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2016 01:48:36

studdef
Зарегистрирован: 2016-03-31
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

Здравствуйте,
Помогите пожалуйста реализовать повторное выполнения команды через определенный промежуток времени. Другими словами что бы пинг проверялся каждые ~ 20 минут и проверял состояния хоста.
Если ответа нет, то пробывать еще 10 минут и отключать систему(windows)
Вот мой код. Буду очень благодарен, если объясните как эта можно сделать.

# 2.7.11
import pyping
import subprocess
import time

ip = pyping.ping('192.168.1.1')

while True:
if ip.ret_code == 0 :
print("client connect")
time.sleep(05)

else:
time = 10
subprocess.call(["shutdown.exe", "/s", "/f" ,"/t", str(time)])

Отредактировано studdef (Апрель 15, 2016 02:10:11)

Офлайн

#2 Апрель 16, 2016 17:13:36

studdef
Зарегистрирован: 2016-03-31
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

Никто не поможет?

Офлайн

#3 Апрель 16, 2016 18:53:24

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

studdef
Никто не поможет?
А в чем помогать? Код есть, вроде рабочий. Претензий к коду вы не изложили.
Такие задачи решает системный планировщик задач. Питон тут не при чем.
http://windows.microsoft.com/ru-ru/windows/schedule-task#1TC=windows-7
если уж очень хочется есть модуль https://docs.python.org/2/library/sched.html.



Офлайн

#4 Апрель 16, 2016 20:03:49

studdef
Зарегистрирован: 2016-03-31
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

Код не совсем рабочий. Он становится рабочим если убрать time.sleep(05)
Если пользоваться системным планировщиком, то можно ограничиться if, else без while.
У меня же задача пинговать хост каждый час и если нет ответа от хоста завершать работу системы. И я хотел бы что бы код мог пинговать в течение 5 минут хост, если хост не отвечат на пинг, а после этого завершать работу системы. Как то так.

Офлайн

#5 Апрель 16, 2016 20:31:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

Запомнить время начала работы программы в переменной П,
исполнять некий код в цикле,
как только текущее время минус пять минут будет больше П прервать цикл и завершить программу.



Офлайн

#6 Апрель 16, 2016 21:07:57

studdef
Зарегистрирован: 2016-03-31
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

FishHook
Запомнить время начала работы программы в переменной П, исполнять некий код в цикле,как только текущее время минус пять минут будет больше П прервать цикл и завершить программу.
напишите, если не затруднит

Отредактировано studdef (Апрель 16, 2016 21:08:08)

Офлайн

#7 Апрель 16, 2016 22:35:48

studdef
Зарегистрирован: 2016-03-31
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

После запуска скрипт выполнят print(“client connect”) бесконечно даже когда хост уже выключен и не пингуется, не происходит отключение системы.

Офлайн

#8 Апрель 17, 2016 07:21:55

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

studdef
После запуска скрипт выполнят print(“client connect”) бесконечно даже когда хост уже выключен и не пингуется, не происходит отключение системы.
А вы сами код писали? Насколько я понимаю вы и не проверяете в цикле пингуется клиент или нет.



Офлайн

#9 Апрель 17, 2016 14:32:46

studdef
Зарегистрирован: 2016-03-31
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

doza_and
Сам писал, нашел модуль на просторах интернета pyping установил его. Прочитал что,
если ip.ret_code == 0 то хост онлайн, если же ip.ret_code == 1, то оффлайн. Я не знаю как сделать что бы пинговать хост время от времени и когда нет отклика отключать комп.

Зачем я эта делаю? у меня есть старый комп Pentium IIII под управлением Windows xp , который выполняет роль внешнего хранилища( типа NAS) с него воспроизводится мультимедиа на смарт тв. Вот у меня возникла необходимость отключать Pentium IIII, когда телевизор выключается.

Планировщик в xp эта не удобно и я его отключил как службу что бы ускорить работу и без того старого железа) ну и + ко всему я не так давно стал изучать python.

Отредактировано studdef (Апрель 17, 2016 14:34:32)

Офлайн

#10 Апрель 17, 2016 19:03:44

r00tl3ss
Зарегистрирован: 2016-03-31
Сообщения: 25
Репутация: +  5  -
Профиль   Отправить e-mail  

Таймер выполнения pyping

import pyping
import time
import subprocess
import sys
def status(destination):
    return pyping.ping(destination).ret_code
def pinger(destination, timeout1, timeout2):
    while True:
        count = 0
        while status(destination):
            if count >= timeout2:
                subprocess.call(['shutdown.exe', '/s', '/f', '/t', '10'])
                sys.exit()
            time.sleep(60)
            count += 1
    print 'Destination ip {0} is availabel...'.format(destination)
    time.sleep(timeout1*60)
 
if __name__ == '__main__':
    pinger('127.0.0.1', 20, 5)
Как то вот так должно работать, но буду честен, работоспособность не проверял)

Отредактировано r00tl3ss (Апрель 17, 2016 22:08:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version