Author Topic: вопрос по phyton  (Read 8780 times)

0 Members and 1 Guest are viewing this topic.

Offline Maikl

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
вопрос по phyton
« on: May 05, 2010, 14:43:07 »
помогите запустить такой скрипт

import os
import re
import time
import sys
import telnetlib
from threading import Thread
 
class testit(Thread):
   def __init__ (self,ip):
      Thread.__init__(self)
      self.ip = ip
      self.status = -1
   def run(self):
      pingaling = os.popen("ping -q -c2 "+self.ip,"r")
      while 1:
        line = pingaling.readline()
        if not line: break
        igot = re.findall(testit.lifeline,line)
        if igot:
            self.status = int(igot[0])
            if self.status == 0:
                tn = telnetlib.Telnet(HOST)
                tn.read_until("BCM96338 ADSL Router")
                tn.read_until("Login:")
                tn.write(user + "\n")
                tn.read_until("Password: ")
                tn.write(password + "\n")
                time.sleep(5)
#tn.write("ifconfig ppp_0_1_32_1\n")
                tn.write(«reboot\n»)
                time.sleep(5)
                tn.write(«logout\n»)
                time.sleep(60)
 
testit.lifeline = re.compile(r"(\d) received")
 
ip = "213.180.204.8"
HOST = "192.168.168.1"
user = "user"
password = "password"
 
current = testit(ip)
current.start()

выдаёт ошибку NameError: name 'testit' is not defined
« Last Edit: May 05, 2010, 17:25:36 by Maikl »

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Re: вопрос по phyton
« Reply #1 on: May 05, 2010, 16:01:38 »
Нет, он выдает другую ошибку:
Code: [Select]
  File "shit.py", line 20
    self.status = int(igot[])
                           ^
SyntaxError: invalid syntax
И прочтите pep-8, смотреть страшно ж. Класс именуется с прописными, пробел после `,` и тп.

Offline Maikl

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
Re: вопрос по phyton
« Reply #2 on: May 05, 2010, 17:19:08 »
но у меня выдает именно такую ошибку, кстати код не мой и синтаксические ошибки исправлены просто мне необходимо ребутить модем при пропадании пинга до определенного узла, наткнулся на этот скрипт, может в системе чего-то не хватает ?
« Last Edit: May 05, 2010, 17:26:09 by Maikl »

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Re: вопрос по phyton
« Reply #3 on: May 05, 2010, 17:29:02 »
Киньте актуальный скрипт на paste, тут парсер лох его козявит.

Offline Maikl

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
Re: вопрос по phyton
« Reply #4 on: May 05, 2010, 17:32:14 »
я код подправил у меня он выглядит именно так

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
Re: вопрос по phyton
« Reply #5 on: May 05, 2010, 18:14:28 »
Попробуйте так. Сильно не вдавался, но будет запускаться:

Code: [Select]
import os
import re
import time
import sys
import telnetlib
from threading import Thread
 
class TestIt(Thread):
   def __init__ (self, ip):
      Thread.__init__(self)
      self.ip = ip
      self.status = -1
      self.lifeline = re.compile(r"(\d) received")

   def run(self):
      pingaling = os.popen("ping -q -c2 " + self.ip, "r")
      while 1:
        line = pingaling.readline()
        if not line:
            break
        igot = re.findall(self.lifeline, line)
        if igot:
            self.status = int(igot[0])
            if self.status == 0:
                tn = telnetlib.Telnet(HOST)
                tn.read_until("BCM96338 ADSL Router")
                tn.read_until("Login:")
                tn.write(user + "\n")
                tn.read_until("Password: ")
                tn.write(password + "\n")
                time.sleep(5)
                #tn.write("ifconfig ppp_0_1_32_1\n")
                tn.write("reboot\n")
                time.sleep(5)
                tn.write("logout\n")
                time.sleep(60)
 
 
ip = "213.180.204.8"
HOST = "192.168.168.1"
user = "user"
password = "password"
 
current = TestIt(ip)
current.start()

Offline Maikl

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
Re: вопрос по phyton
« Reply #6 on: May 06, 2010, 09:08:25 »
не работает, точнее запускается но ничего не делает, в режиме отладки дает

Code: [Select]
/testit(45)<module>()->Noneи так по кругу