在 Linux 中以 cron 作业/bash 脚本形式运行 nmap 导出文件时出现问题

在 Linux 中以 cron 作业/bash 脚本形式运行 nmap 导出文件时出现问题

我有一个非常简单的 bash 脚本,它运行 nmap 并将结果导出到 xml 文件,然后使用 scp 将文件上传到服务器:

#!/bin/sh
nmap -sn -oX /home/scan.xml 192.168.20.1-255
wait
scp scan.xml root@myserver:/home/dropoff

我可以通过输入以下命令从命令行运行该脚本:sh scan.sh

...并且它执行完美。但是,当我安排它通过 cron 作业运行时,它失败并返回以下内容:

Failed to open XML output file /home/scan.xml for writing
QUITTING!
scan.xml: No such file or directory

我尝试过重命名文件、更改文件权限、将它们移动到不同的目录,但无论我做什么,仍然会出现相同的错误。如果您能提供任何帮助或指导,我将不胜感激。(我对 Linux 还很陌生 - 我最近换了工作,过去 15 年来一直在 100% 的 Microsoft 环境中工作,我有点受保护。)

答案1

正如 linuxquestions.org 上的以下帖子所建议的那样,执行 cron 的进程无法使用您的 $PATH。因此,如果您只是调用nmap而不提供完整位置,该进程将不知道在哪里找到 nmap。

https://www.linuxquestions.org/questions/linux-software-2/nmap-with-cron-does-not-seem-to-work-213294/

要找出 nmap 二进制文件的位置,请在运行它的服务器上输入“which nmap”。在我的 MacBook 上是/usr/local/bin/nmap,但 - 像往常一样 - YMMV ;-)

如果该操作不起作用,请尝试同一链接上的其他解决方案来排除故障。

答案2

我认为这是因为SCP上的文件路径不完整。

#!/bin/sh nmap -sn -oX /home/scan.xml 192.168.20.1-255 wait scp /home/scan.xml root@myserver:/home/dropoff

相关内容