Python OpenWRT crontab - PullRequest
       21

Python OpenWRT crontab

1 голос
/ 21 декабря 2010

Я пытаюсь запустить скрипт Python в окне OpenWrt:

#!/root/system/usr/bin/python
import subprocess

p = subprocess.Popen([r"snmpget","-v","1","-c","public","-Oqv","-Ln", "192.168.1.1","1.3.6.1.2.1.2.2.1.10.7"], stdout=subprocess.PIPE).communicate()[0]
data = [r"curl","-d","iface_id=1&content="+ str(p).rstrip() ,"http://192.168.1.5:8080/stat/add_istat/"]
a = subprocess.Popen(data, stdout=subprocess.PIPE).communicate()[0]

Он получает данные по протоколу snmp, а затем отправляет данные с помощью curl на локальный сервер.Работает нормально из оболочки:

root@OpenWrt:~/python# ./w.py 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0    34    0     6    0    28     31    146 --:--:-- --:--:-- --:--:--     0

Я вижу данные в БД.но из cron:

0-55/5 * * * * /root/python/w.py

Я вижу в журнале:

Dec 20 23:30:01 OpenWrt cron.err crond[1039]: USER root pid 16141 cmd /root/python/w.py

Но нет данных в БД :( и ничего в httpd access.log :( почему?

Ответы [ 2 ]

1 голос
/ 21 декабря 2010

Может быть, snmpget или curl не находятся на пути cron?

0 голосов
/ 21 декабря 2010

Я заменил curl на запрос python urllib, и теперь он работает! :)

url = 'http://192.168.1.5:8080/stat/add_istat/"' # write ur URL here

values = {'iface_id' : '1', #write ur specific key/value pair
          'content' : str(p).rstrip(),
         }
try:
   data = urllib.urlencode(values)
   req = urllib2.Request(url, data)
   response = urllib2.urlopen(req)
   the_page = response.read()
   print the_page
except Exception, detail:
   print "Err ", detail
...