【问题标题】:Python OpenWRT crontabPython OpenWRT crontab
【发布时间】:2010-12-21 16:48:33
【问题描述】:

我试图在 OpenWrt 盒子上运行 python 脚本:

#!/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 将数据发布到本地服务器。 从 shell 可以正常工作:

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

我在 logread 中看到:

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

但是 DB 中没有数据 :( 并且 httpd access.log 中没有任何数据 :( 为什么?

【问题讨论】:

    标签: python cron snmp openwrt


    【解决方案1】:

    会不会是snmpget或者curl不在cron路径中?

    【讨论】:

    • snmpget 的完整路径和 curl 也无法正常工作 :( 使用 .sh 脚本:root@OpenWrt:~# cat add.sh /root/system/usr/bin/python /root/python/ w.py 也无法正常工作:(
    【解决方案2】:

    我用 python urllib 请求替换 curl,现在它可以工作了! :)

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多