0

我编写了一个用于运行网络漏洞工具的小脚本,但它似乎没有输出到我想要的文件路径。有人能指出我哪里出错了吗?

     cisco-torch -A 192.168.128.1 -l v > ~/Documents/Network Scanning Logs/ciscotorchlogs/ciscotorchlogs$(date+"%Y_%m_%d_%I_%M_%p")logfile.txt

理想情况下,脚本应该运行并创建一个新的文件名 ciscotorchlogs(date)logfile.txt 并将其输出放在那里。我连夜运行脚本,但今天早上回来发现它没有创建任何输出文件。

谢谢您的帮助。

4

2 回答 2

0

您的路径是~/Documents/Network Scanning Logs,我怀疑这些空格会导致问题。你可以这样逃脱:

~/Documents/Network\ Scanning\ Logs

等等

另请注意 > 正在重定向stdout. 你可能stderr也想要,所以我会用

> file.txt 2>&1

发送stderrstdout流(并因此被重定向到,比如说, file.txt

于 2020-01-07T14:45:48.947 回答
0

重定向是到文件夹中命名NetworkDocuments文件,因为您没有引用或转义空格。第一个空格之后的标记将作为参数传递给您的命令。

通过适当的引用,命令将是

cisco-torch -A 192.168.128.1 -l v > ~/"Documents/Network Scanning Logs/ciscotorchlogs/ciscotorchlogs$(date +"%Y_%m_%d_%I_%M_%p")logfile.txt"

注意~不能被引用,以及双引号内的命令替换如何仍然被扩展。date(单引号将完全逐字传递引号内的文本。)最后,命令和它的参数之间需要有一个空格。

如果您还想捕获标准错误,您可以2>&1在末尾添加另一个重定向(同样,在它之前有一个空格)。

于 2020-01-07T14:47:59.063 回答