Bash 如何通过CURL将TCPDUMP输出发送到远程脚本

Bash 如何通过CURL将TCPDUMP输出发送到远程脚本,bash,tcpdump,Bash,Tcpdump,我这里有一个脚本,它接受TCPDUMP输出。我们试图通过web($SERVER)向PHP脚本发送(2)个变量。将创建文件名标题,其中包含文件名$FILETOSEND和文件数据。filedata变量的实际数据来自一个名为1的文件(数据的格式如您所知)。我对调用“发送普通10秒转储”的部分有问题 我正在尝试对文件1进行卷曲,并使用CURL--data“$(cat 1)”$服务器进行卷曲 该脚本根本没有发送文件1,主要是发送文件名,没有文件数据。我发送文件的方式有问题吗?有没有更好的格式化方法 whi

我这里有一个脚本,它接受TCPDUMP输出。我们试图通过web($SERVER)向PHP脚本发送(2)个变量。将创建文件名标题,其中包含文件名$FILETOSEND和文件数据。filedata变量的实际数据来自一个名为1的文件(数据的格式如您所知)。我对调用“发送普通10秒转储”的部分有问题

我正在尝试对文件1进行卷曲,并使用CURL--data“$(cat 1)”$服务器进行卷曲

该脚本根本没有发送文件1,主要是发送文件名,没有文件数据。我发送文件的方式有问题吗?有没有更好的格式化方法

while true; do                                                                
sleep $DATASENDFREQ;
killall -9 tcpdump &> /dev/null
if [ -e $DUMP ]; then                                                     
    mv $DUMP $DUMP_READY
fi                             
create_dump                             

DATE=`date +"%Y-%m-%d_%H-%M-%S"`
FILETOSEND=$MAC-$DATE-$VERSION          
# we write fileheader to the file. 2 vars : filename, filedata.
FILEHEADER="filename=$FILETOSEND&filedata="
    echo $FILEHEADER > 2       
# change all colons to underscores for avoiding Windows filenames issues
    sed -i 's/:/_/g' 2                     
# delete all newlines \n in the file
    tr -d '\n' < 2 > 1                                                  
# parsing $DUMP_READY to awk.txt (no header in awk.txt)        
awk '{ if (NF > 18 && $10 == "signal") {print "{\"mac\": \""$16"\",\"sig\": \""$9"\",\"ver\": \""$8"\",\"ts\": \""$1"\",\"ssid\": \""$19"\"}" }}' $DUMP_READY > awk.txt 
sed -i 's/SA://g' awk.txt     
sed -i 's/&/%26/g' awk.txt                                              

cat awk.txt >> 1                    
sync                                                                    

    # send $OFFLINE                                                                                                            
    if [ -e $OFFLINE ]; then    
            curl -d $OFFLINE $SERVER                                    
            if [ $? -eq "0" ]; then                                                                                            
                    echo "status:dump sent;msg:offline dump sent"
                    rm $OFFLINE     
            else                                                        
                    echo "status:dump not sent;msg:offline dump not sent"                                                      
            fi                      
    fi                                                                  

# send common 10 secs dump                                                                                                     
curl --data "$(cat 1)" $SERVER                                          
if [ $? -eq "0" ]; then                                
    echo "status:dump sent"                                                                                                    
else                           
    cat 1 >> $OFFLINE                                  
    echo "status:dump not sent"                                                                                                
fi                                                               

if [ -e $DUMP_READY ]; then         
    rm -f $DUMP_READY 1 2 upload_file*                                   
fi                                                                                                  
为true时;做
睡眠$DATASENDFREQ;
killall-9 tcpdump&>/dev/null
如果[-e$DUMP];然后
mv$DUMP$DUMP_就绪
fi
创建转储文件
日期=`DATE+%Y-%m-%d\uh-%m-%S“`
FILETOSEND=$MAC-$DATE-$VERSION
#我们将fileheader写入文件。2个变量:文件名、文件数据。
FILEHEADER=“filename=$FILETOSEND&filedata=”
echo$FILEHEADER>2
#将所有冒号更改为下划线,以避免Windows文件名问题
sed-i's/:/g/g'2
#删除文件中的所有换行符\n
tr-d'\n'<2>1
#正在解析$DUMP_READY to awk.txt(awk.txt中没有标题)
awk'{if(NF>18&&$10==“信号”){print“{”mac\“:\”16“,\”sig\:\”9“,”ver\“:\”8“,”ts\“:\”1“,”ssid\“:”19“\”}}}DUMP\u READY>awk.txt
sed-i's/SA://g'awk.txt
sed-i's/&/%26/g'awk.txt
cat awk.txt>>1
同步
#脱机发送$
如果[-e$离线];然后
curl-d$OFFLINE$SERVER
如果[$?-eq“0”];然后
echo“状态:转储已发送;消息:脱机转储已发送”
rm$离线
其他的
echo“状态:转储未发送;消息:脱机转储未发送”
fi
fi
#发送公共10秒转储
curl--数据“$(第1类)”$服务器
如果[$?-eq“0”];然后
回显“状态:转储已发送”
其他的
第1类>>$OFFLINE
回显“状态:转储未发送”
fi
如果[-e$DUMP_READY];然后
rm-f$DUMP_READY 1 2上传_文件*
fi

您缺少
awk
命令的一部分,其余的代码高亮显示都被弄乱了。请引用变量:
curl-d“$OFFLINE”
。另外,不要使用大写的变量名,它们是用于环境变量和内置变量的。您在哪里设置
$OFFLINE
?要发送文件内容,您需要使用
@filename