当我执行命令 airodump-ng mon0 >> output.txt 时,output.txt 是空的。我需要能够运行 airodump-ng mon0 并在大约5秒钟后停止命令,然后访问其输出。有想法应该从哪里开始寻找?我使用的是bash。
将命令作为后台进程启动,等待5秒钟,然后杀死后台进程。您可能需要重定向不同于STDOUT的流以将输出捕获到文件中。 此主题 提到了 STDERR(FD 2)。我无法在此处验证,但您可以使用 strace
检查描述符编号。命令应该显示类似于以下内容:
$ <b>strace airodump-ng mon0 2>&1 | grep ^write</b>
...
write(<b>2</b>, "...
write
语句中的数字是airodump-ng
写入的文件描述符。
脚本可能看起来像这样(假设需要重定向STDERR):
#!/bin/bash
{ airodump-ng mon0 2>> output.txt; } &
PID=$!
sleep 5
kill -TERM $PID
cat output.txt
airodump-ng [INTERFACE] -w [OUTPUT-PREFIX] --write-interval 30 -o csv
[OUTPUT-PREFIX]
。该文件每30秒更新一次。如果您给出类似于/var/log/test的前缀,则文件将被放置在/var/log/中,并且会呈现为test-XX.csv的形式。如果您使用的是 airodump-ng 1.2 rc4
版本,您应该使用以下命令:
timeout 5 airodump-ng -w my --output-format csv --write-interval 1 wlan1mon
执行完此命令后,您可以通过查看my-01.csv
来访问其输出。请注意,输出文件为CSV格式。
您的命令无法正常工作,因为airodump-ng
将输出发送到stderr
而不是stdout
! 所以以下命令是您的修正版本:
airodump-ng mon0 &> output.txt