スクリプトで 1 つの tcpdump を開始しようとしています。しかし、私はいつも複数を取得します。それは私のps出力です:
1260 root tcpdump -i br0 -C 1024 -w /media/usbhd-sdc2/pcaps/abfrage2.pcap
1267 root tcpdump -i br0 -C 1024 -w /media/usbhd-sdc2/pcaps/abfrage2.pcap
これは、稼働時間が開始時間と同じかどうかを確認するコードです。同じである場合は、tcpdump を開始し、PID も保存する必要があります。
しかし、関数 readPID が十分に高速ではないため、なぜ 2 番目のものを開始するのでしょうか?
if [[ $timestart == $Zeit ]] || [[ "$pid1" != "" ]];then
echo "First"
if [[ $timeend != $Zeit ]];then
echo "second"
if [ "$pid1" == "" ];then
echo "third"
if [ "$port" != "" ];then
echo "fourth"
run_tcpdump port
pid1=$(readPID1)
echo $pid1
else
ReadPID 関数:
readPID1(){
ps -eo pid,args|awk '/abfrage2/ && ! /awk/{print $1}'
}
アップデート
Tcpdump 関数:
run_tcpdump(){
if [ "$1" == "port" ];then
sudo tcpdump port $port -i br0 -C 1024 -w /media/usbhd-sd[b-c]2/pcaps/abfrage2.pcap &
else
sudo tcpdump -i br0 -C 1024 -w /media/usbhd-sd[b-c]2/pcaps/abfrage2.pcap &
fi
}