代码在控制台中工作,但在cron运行时不起作用

2024-10-01 00:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行这段代码时,控制台可以正常工作。它不会产生错误。在

import sh
import uuid
import urllib

print 'Ip ....'
# Print only IP address from specific interface
LineaX = sh.grep(sh.ifconfig('eth0'), '-oP', '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
# Asignar Variables
IpX = LineaX.splitlines()[0]
PuertaX= LineaX.splitlines()[1]
MascaraX = LineaX.splitlines()[2]
MacX = ':'.join(['{:02x}'.format((uuid.getnode() >> i) & 0xff) for i in range(0,8*6,8)][::-1])
DataX = open('/etc/resolv.conf').read().split()
for item in DataX:
    if len( item.split(".") ) == 4:
        Dns1X = item
        Dns2X = '000.000.000.000'
    # Actualizar informacion
urllib.urlopen('http://www.miurl.com/file.php?mac='+ MacX + '&ip=' + IpX + '&mascara='+ MascaraX + '&puerta='+ PuertaX + '&dns1='+ Dns1X + '&dns2='+ Dns2X )
print 'Ip ... OK'

在cronjob中生成以下错误:

^{pr2}$

我有什么错?在


Tags: importipforuuidsh错误urllibitem
2条回答

使用sh您需要导入所需的命令,例如:

from sh import ifconfig

这就是你看到错误的原因:

^{pr2}$

如果它在shell上工作正常,但在cron中没有问题,那么问题是您需要指定二进制文件的绝对路径,因为cron没有path。在

我在阅读时也解决了同样的问题上海py直接!在

因为crontab有自己的shell或脚本运行路径,sh.py执行306 fpath, fname = os.path.split(program),它返回空,这意味着在路径中找不到{}位置,所以抛出NONE错误。在

 # /usr/local/lib/python2.7/dist-packages/sh.py
 300 def which(program):
 301     def is_exe(fpath):
 302         return (os.path.exists(fpath) and
 303                 os.access(fpath, os.X_OK) and
 304                 os.path.isfile(os.path.realpath(fpath)))
 305
 306     fpath, fname = os.path.split(program)
 307     #lucifer
 308     #print 'fpath={0},fname={1}'.format(fpath,fname)
 309     if fpath:
 310         if is_exe(program):
 311             return program
 312     else:
 313         if "PATH" not in os.environ:
 314             return None
 315         for path in os.environ["PATH"].split(os.pathsep):
 316             exe_file = os.path.join(path, program)
 317             if is_exe(exe_file):
 318                 return exe_file

所以您需要添加命令(例如您的ifconfig路径操作系统环境 我把它加到我的脚本.py对于crontab

^{pr2}$

宾果!一切都好!在

相关问题 更多 >