2010-04-05 python pexpect internet
Скрипт проверяет наличие интернета путем пинга на yandex.ru, в случае отсутствия выполняет команду отключения, а затем подключения интернета с правами root.
#!/usr/bin/python
# coding: utf8
# Проверка наличия инета
def check():
cmd = 'ping yandex.ru -c 5'
import subprocess
PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE,
stderr=subprocess.STDOUT, close_fds=True)
buf = p.stdout.read()
return 'time=' in buf
# Выполнить команду от рута
def execcommand(cmd):
mypass = 'mypass\n'
try:
from pexpect import spawn, EOF
child = spawn(cmd)
res = child.expect([r'.+?password.+?:\s?', EOF], timeout=120)
print 'res = ',res
child.sendline(mypass)
except Exception as e:
print 'except:',str(e)
import time
col = 0
while 1:
try:
time.sleep(30)
print 'check',
if check(): col = 0
else: col +=1
print col
if col > 1: # Если разрыв более 1 мин, делаем переподключение
print 'poff'
execcommand("sudo poff dsl-provider") # Разрыв
time.sleep(5)
print 'pon'
execcommand("sudo pon dsl-provider") # Соединение
except Exception as e:
print 'except:',str(e)