我使用trick77的IP黑名单脚本来配置我的apache服务器的防火墙,并且能够在终端中运行他的脚本。
但是,在将 bash script in ipset-blacklist 分配给crontab时,无论我做什么,它都无法运行。
@daily /var/bash/update-blacklist.sh
由于我之前没有做过这类事情,我相信bash脚本的PATH
没有正确设置......但是,我还不确定
我见过其他人使用PATH=/usr/bin:/bin:/usr/sbin:/sbin
之类的行来解决涉及脚本位置的问题,但是,我并不完全知道这是什么。
我将bash文件的位置设置为/var/bash
而不是/usr/bin
,我相信这会让事情失效。
请原谅我缺乏理解。在谈到bash时,我真的是初学者。
非常感谢任何帮助。
将echo here >> /tmp/update-blacklist.out
添加到update-blacklist.sh
的顶部,并将cron设置为每分钟运行一次(* * * * *
)。
文件已成功创建。
将type -p curl grep egrep ipset >> /tmp/update-blacklist.out
添加到update-blacklist.sh
的顶部并返回:
-p: not found
curl is /usr/bin/curl
grep is /bin/grep
egrep is /bin/egrep
ipset: not found
答案 0 :(得分:1)
type ipset
的输出表明ipset
不在cron脚本PATH
中,这并不奇怪。
cron作业的默认PATH
相当有限。
ipset
位于/usr/sbin
,这是必须添加到cron脚本的PATH
变量的路径。
你在问题中谈过这个问题
我见过其他人使用PATH = / usr / bin:/ bin:/ usr / sbin:/ sbin这样的行来解决涉及脚本位置的问题,但是,我不知道这是怎么做的。< / p>
这样做是将PATH
变量设置为那些路径(来自默认值)。
PATH
变量包含shell查找二进制文件/脚本/等的路径。在尝试将它们作为命令运行时运行。