我需要帮助。我必须接下来做:为 root 创建 cron 作业,并每 2 小时将数据包保存在测试用户的主目录中的 /var/log 中,并带有日期戳,并且该文件必须包含测试用户的用户和组?
答案1
您可以使用tcpdump
工具来实现这一点。
脚本:
#!/usr/bin/env bash
echo "$(date +%x_%H:%M:%S:%N)" > /var/log/info.txt
echo " " >> /var/log/koko.txt
tcpdump -c 10 -w /tmp/info.pcap -i eno1 tcp && \
tcpdump -r /tmp/info.pcap >> /var/log/info.txt
使用以下命令使脚本可执行chmod +x sniffer.sh
然后将作业添加到 cron:
以 root 身份打开 cron 编辑器:
sudo crontab -e
添加行
0 */2 * * * /path/to/sniffer.sh
解释:
echo "$(date +%x_%H:%M:%S:%N)" > /var/log/koko.txt
:将日期回显到输出文件中echo " " >> /var/log/koko.txt
:用线将日期与其他内容分开tcpdump -c 10 -w /tmp/info.pcap -i eno1 tcp &&
:从接口捕获 10 个数据包eno1
(可以省略,在这种情况下它将从所有接口捕获)并写入文件,如果成功,则执行下一个命令,tcpdump -r /tmp/info.pcap >> /var/log/koko.txt
:从该文件读取并写入该info.txt
文件。
答案2
创建 bash、python 或 perl 脚本,并将其添加到 crontab 中,使其每小时执行一次
0 */2 * * * python script.py
或者
0 */2 * * * /etc/bashscript.sh ....