问题背景
linux系统中使用python脚本,来获取系统ip信息。使用了python的subprocess工具包
代码片段如下:
from subprocess import Popen, PIPE
def getIfconfig():
info = Popen(['ifconfig'], stdout = PIPE)
data = info.stdout.read()
return data
该部分代码在命令行中直接执行python脚本,程序顺利通过。
但是
当使用crontab命令将该脚本设置成定时任务时,程序执行出错,查看日志错误信息:
网上查找解决方法
- 有的是因为Popen函数第一个参数只能接受list格式数据,结果传入了字符串导致错误
- 有的将Popen函数的shell参数值设为True,问题解决
但我试过后都不行,仍然报错,后来找到解决方法记录在下
解决方法
在Popen函数中使用ifconfig的绝对路径
查询ifconfig的绝对路径:linux命令行中使用命令 which ifconfig
/usr/bin/ifconfig
代码修改如下:
from subprocess import Popen, PIPE
def getIfconfig():
info = Popen(['/usr/sbin/ifconfig'], stdout = PIPE)
data = info.stdout.read()
return data
定时任务顺利执行,bingo!