2010-12-20 7 views
1

Im essayant d'exécuter le script python sur la boîte OpenWrt:Python OpenWRT crontab

#!/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] 

ses données geting sur snmp, poster ensuite les données par boucle au serveur local. Son fonctionnement correct du shell:

[email protected]:~/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 

je peux voir les données dans DB. mais de Cron:

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

Je vois dans logread:

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

Mais aucune donnée DB :(et rien dans httpd access.log :(pourquoi

Répondre

1

pourrait-il que? snmpget ou curl ne sont pas dans le chemin de cron

+0

Avec chemin complet snmpget et curl ne fonctionne pas trop :( Avec .sh script: root @ OpenWrt: ~ # cat add.sh /root/system/usr/bin/python/racine/python/w .py ne fonctionne pas non plus :( –

0

Je remplace curl avec python urllib demande et maintenant son fonctionnement! :)

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