【问题标题】:Regenerating the output after deleting it in periodic way in tcpdump在 tcpdump 中定期删除输出后重新生成输出
【发布时间】:2017-10-19 09:46:08
【问题描述】:

我需要使用 tcpdump 监控网络。但是,我需要每 5 秒手动从其文件夹中删除其输出(train.txt)。我正在寻找一种在 bash 文件中重新生成输出的方法。换句话说,当我删除 tcpdump 的输出时,它会生成一个包含新内容的新输出。这是我的代码:

#!/bin/bash
FILE="/media/sf_sharedsaeed/train.txt"
#Change the eth for each host first
tcpdump -i h1-eth0 -l -e -n 'port 80' & > /media/sf_sharedsaeed/train.txt
while true
do
if [ -f $FILE ]; then
   echo "******************* tcpdump do its job well******************* "
else
    #now interrupt the process. get its PID:
    pid=$(ps -e | pgrep tcpdump)
    echo $pid

    kill -2 $pid
    echo "File $FILE does not exist. tcpdump make it again."
    tcpdump -i h1-eth0 -l -e -n  > /media/sf_sharedsaeed/train.txt

fi

done

问题是,随着输出被删除,不再生成新的输出文件。请帮我。

更新: 我使用此代码删除文件内容而不是删除文件:(使用 cat /dev/null > $FILE)

#!/bin/bash
FILE="train.txt"
second=5

while true
do
awk '{print $10" "$12}' $FILE | sort | uniq -c > output.txt
echo "New output.txt generated."
#truncate -s 0 $FILE
cat /dev/null > $FILE
echo "wait for 5 seconds ..."
sleep $second
done

当我使用它时,输出(train.txt)没有完全填充。有些数据会丢失!

【问题讨论】:

    标签: bash file awk tcpdump


    【解决方案1】:

    重定向运算符>呢?

    cat /dev/null > train.txt
    

    这样你只是截断文件train.txt,即:将其大小设置为零。

    理想情况下,写入train.txt 的进程应该以追加 模式打开此文件(即:通过bash 中的重定向运算符>>)。 如果是这样,此过程将始终在写入文件之前将其文件偏移量设置为文件的大小。 否则下一次写入train.txt 时会创建一个所谓的文件洞


    基本上:

    tcpdump -i h1-eth0 -l -e -n 'port 80' & >> /media/sf_sharedsaeed/train.txt
    

    并且,删除train.txt,改为这样做(即:截断文件):

    cat /dev/null > /media/sf_sharedsaeed/train.txt
    

    注意:

    您可以定期检查其大小,然后在文件太大时按需截断它,而不是手动截断tain.txt

    【讨论】:

    • 感谢您的回复。我已经测试过了,但它不起作用! :(
    • @saeedtalaee 哪个进程正在写入trains.txt
    • @saeedtalaee 使用cat /dev/null/ > trains.txt 而不是删除trains.txt
    • 属于tcpdump的进程。
    • 我什至删除了 kill 部分,但它告诉我:文件 /media/sf_sharedsaeed/train.txt 不存在。 tcpdump 再做一次。 tcpdump:h1-eth0:不存在这样的设备(SIOCGIFHWADDR:没有这样的设备)
    猜你喜欢
    • 2018-11-17
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多