美文网首页
sort uniq tcpdump awk命令使用

sort uniq tcpdump awk命令使用

作者: 黑暗中冬眠的华仔 | 来源:发表于2019-03-16 14:20 被阅读0次

    cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10
    uniq使用
    uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
    参数:

    -c或--count 在每列旁边显示该行重复出现的次数。
    -d或--repeated 仅显示重复出现的行列。
    -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
    -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
    -u或--unique 仅显示出一次的行列。
    -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
    --help 显示帮助。
    --version 显示版本信息。
    [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
    [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)

    sort使用
    功能说明:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。

    参  数:
    -b 忽略每行前面开始出的空格字符。
    -c 检查文件是否已经按照顺序排序。
    -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    -f 排序时,将小写字母视为大写字母。
    -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    -m 将几个排序好的文件进行合并。
    -M 将前面3个字母依照月份的缩写进行排序。
    -n 依照数值的大小排序。
    -o<输出文件> 将排序后的结果存入指定的文件。
    -r 以相反的顺序来排序。
    -t<分隔字符> 指定排序时所用的栏位分隔字符。
    +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
    --help 显示帮助。
    --version 显示版本信息

    sort -n -k 2 -t- date // -t<分隔字符> 指定排序时所用的栏位分隔字符。 -k 选择以哪个区间进行排序 其中-t-表示以-分割

    2017-01-09
    2017-04-24
    2017-10-23
    2017-12-02

    ===================

    使用tcpdump(该指令需要使用sudo执行)监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
    tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

    将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
    iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

    查看http的并发请求数与其TCP连接状态
    netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    用tcpdump嗅探80端口的访问看看谁最高
    tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print 1"."2"."3"."4}'| sort | uniq -c | sort -nr |head -20
    参数
    完整的英文文档:https://www.tcpdump.org/tcpdump_man.html

    -A 以ASCII格式打印出所有分组,并将链路层的头最小化。

    -c 在收到指定的数量的分组后,tcpdump就会停止。

    -C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。

    -d 将匹配信息包的代码以人们能够理解的汇编格式给出。

    -dd 将匹配信息包的代码以C语言程序段的格式给出。

    -ddd 将匹配信息包的代码以十进制的形式给出。

    -D 打印出系统中所有可以用tcpdump截包的网络接口。

    -e 在输出行打印出数据链路层的头部信息。

    -E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。

    -f 将外部的Internet地址以数字的形式打印出来。

    -F 从指定的文件中读取表达式,忽略命令行中给出的表达式。

    -i 指定监听的网络接口。

    -l 使标准输出变为缓冲行形式,可以把数据导出到文件。

    -L 列出网络接口的已知数据链路。

    -m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。

    -M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。

    -b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。

    -n 不把网络地址转换成名字。

    -nn 不进行端口名称的转换。

    -N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。

    -t 在输出的每一行不打印时间戳。

    -O 不运行分组分组匹配(packet-matching)代码优化程序。

    -P 不将网络接口设置成混杂模式。

    -q 快速输出。只输出较少的协议信息。

    -r 从指定的文件中读取包(这些包一般通过-w选项产生)。

    -S 将tcp的序列号以绝对值形式输出,而不是相对值。

    -s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。

    -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。

    -t 不在每一行中输出时间戳。

    -tt 在每一行中输出非格式化的时间戳。

    -ttt 输出本行和前面一行之间的时间差。

    -tttt 在每一行中输出由date处理的默认格式的时间戳。

    -u 输出未解码的NFS句柄。

    -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。

    -vv 输出详细的报文信息。

    -w 直接将分组写入文件中,而不是不分析并打印出来

    =========================================例子==============
    zgrep "请升级版本" * | awk -F"[: ]" '{print 1,9}' > /tmp/lh.log
    zgrep "simple_detail.do" * | awk -F"[, ]" '{print 6,(NF)}' > /tmp/lh_simple_detail.log
    join -1 2 -2 1 /tmp/lh.log /tmp/lh_simple_detail.log > /tmp/lh_jieguo.log
    less /tmp/lh_jieguo.log | awk '{print $(NF)}' | uniq -c""

    zgrep "send success" * | awk -F "[ :]" '{print 34,9}' | awk '1>1900 && 1<2200' > /tmp/lh190810.log zgrep "process" * | awk -F "[ :]" '{print34,9}' | awk '1>1900 &&1<2200' > /tmp/lh_int190810.log
    cat lh190810.log |awk '{print 2}' |sort > lh_tmp.log cat lh_int190810.log |awk '{print2}' |sort > lh_int_tmp.log
    join -1 1 -2 1 /tmp/lh_tmp.log /tmp/lh_int_tmp.log | wc -l

    cat s.log | grep "time consuming" | awk -F"[=]" '{print 2}'|awk '1>6000'|wc -l

    zgrep "send success" user.2.log.gz | awk -F "[ :]" '{printf 23" ";for(i=9;i<=NF;i=i+1){printf i" "};print "\n"}' | awk '1>2030 && $1<2130' > /tmp/20191102.log

    相关文章

      网友评论

          本文标题:sort uniq tcpdump awk命令使用

          本文链接:https://www.haomeiwen.com/subject/wrqsmqtx.html