gpt4 book ai didi

bash - crontab 和手动运行脚本之间的不同结果

转载 作者:行者123 更新时间:2023-11-29 09:39:37 31 4
gpt4 key购买 nike

我有一个执行此操作的 bash 脚本:

nmap -sn 192.168.0.1-255 | grep -Eo 192.168.0.{1,3\}[0-9] > new.txt
date >> network_log
echo ---------------------------- >> network_log
cat new.txt >> network_log

扫描网络,并将结果附加到带有时间戳的文件 network_log 中。手动运行后,network_log 文件如下所示:

Tue 13 Sep 2016 11:22:23 EDT 
----------------------------

192.168.0.1
192.168.0.2
192.168.0.45

而 cronjobs 在我的 network_log 文件中产生以下输出:

Tue Sep 13 17:46:00 EDT 2016
----------------------------

没有 ip 结果。注意:cronjob 是从 root 用户运行的,因此它具有扫描整个网络所需的所有提升。

最佳答案

您的脚本缺少 shebang,因此它可能会使用不同的 shell 运行,具体取决于 crontab 或手动启动。

在脚本的第一行添加以下内容(如果需要,将 bash 替换为您当前的用户 shell):

#!/usr/bin/env bash

不要使用/bin/bash,因为它的可移植性不如/usr/bin/env bash。

此外,crontab 运行不会有 PATH 变量。打印你的路径变量:

echo $PATH

并将其添加为脚本的第二行,例如:

#!/usr/bin/env bash
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin

这应该确保您的脚本在通过 crontab 或手动运行时在相同的环境中运行。

关于bash - crontab 和手动运行脚本之间的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39479570/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com