我有一个非常简单的 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。
要找出 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