• curl 和 tcpdump


    curl:
    1.通常使用curl 来监控网址状态,

    #curl -m 5 -s -o /dev/null -w %{http_code} www.baidu.com
    #200

    -m 设置访问超时时间,超过此设置即为无法连接

    -s 静默连接,不显示连接速度、时间等信息

    -o 把输出写到这里

    -w 返回服务器状态码

    2.更详细一些

    #curl -o /dev/null -s -m 5 -w %{http_code}:%{time_connect}:%{time_starttransfer}:%{time_total} www.baidu.com

    #200:0.073:0.107:0.108

    时间指标解释 :
    http_code               网址状态码

    time_connect          建立到服务器的 TCP 连接所用的时间

    time_starttransfer    在发出请求之后,Web 服务器返回数据的第一个字节所用的时间

    time_total                 完成请求所用的时间


    3.不使用 -s  静默模式

    # curl -o /dev/null  www.baidu.com
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  2381  100  2381    0     0  21670      0 --:--:-- --:--:-- --:--:-- 21844


    4.一些其它用法

    -x 指定访问IP与端口号

    curl -x 192.168.1.1:80  http://www.miotour.com

    -I 仅仅取文件的http头部

    curl   -I  -x 192.168.1.1:80  http://www.miotour.com

    用referer做的防盗链,就可以使用-e来设置

    curl -e “http://www.qiecuo.org”    http:// www.miotour.com -v  -I

    -H去构造你想要的http头部

    curl -H “X-Forward-For:8.8.8.8″ http://www.miotour.com  -v  -I

    curl反馈时间,例如连接时间,下载时间等信息

    curl -w %{time_connect}:%{time_starttransfer}:%{time_total} -s -o /dev/null

    将一个文件保存到硬盘上,命名为file.html

    curl -o file.html  http://www.miotour.com/index.html

    下载index.html文件, -O是大写的字母

    curl -O http://www.miotour.com/index.html

    curl提交用户名和密码

    4.curl 其它参数

    -a/–append 上传文件时,附加到目标文件 
    -b/–cookie <name=string/file> cookie字符串或文件读取位置
    -c/–cookie-jar <file> 操作结束后把cookie写入到这个文件中
    -C/–continue-at <offset> 断点续转
    -d/–data <data> HTTP POST方式传送数据
    -D/–dump-header <file> 把header信息写入到该文件中
    -G/–get 以get的方式来发送数据
    -h/–help 帮助
    -w/–write-out [format]输出完成后
    -e/–referer 来源网址
    -E/–cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
    -f/–fail 连接失败时不显示http错误
    –ftp-create-dirs 如果远程目录不存在,创建远程目录
    -F/–form <name=content> 模拟http表单提交数据
    -form-string <name=string> 模拟http表单提交数据
    -u/–user <user[:password]>设置服务器的用户和密码
    -s/–silent静音模式。不输出任何东西
    -S/–show-error 显示错误
    -T/–upload-file <file> 上传文件
    -U/–proxy-user <user[:password]>设置代理用户名和密码
    -A/–user-agent 设置用户代理发送给服务器 
    -i/–include 输出时包括protocol头信息
    -I/–head 只显示protocol头信息
    -o/–output 把输出写到该文件中
    -O/–remote-name 把输出写到该文件中,保留远程文件的文件名

    -p/–proxytunnel 使用HTTP代理
    -m/–max-time <seconds> 设置最大传输时间
    -N/–no-buffer 禁用缓冲输出
    -l/–list-only 列出ftp目录下的文件名称
    -R/–remote-time 在本地生成文件时,保留远程文件时间
    -v/–verbose
    -V/–version 显示版本信息

    - anyauth 可以使用“任何”身份验证方法
    - basic 使用HTTP基本验证
    -B/–use-ascii 使用ASCII /文本传输
    –data-ascii <data> 以ascii的方式post数据
    –data-binary <data> 以二进制的方式post数据
    –negotiate 使用HTTP身份验证
    –digest 使用数字身份验证
    –disable-eprt 禁止使用EPRT或LPRT
    –disable-epsv 禁止使用EPSV
    –egd-file <file> 为随机数据(SSL)设置EGD socket路径
    –tcp-nodelay 使用TCP_NODELAY选项
    –cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
    –key <key> 私钥文件名 (SSL)
    –key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
    –pass <pass> 私钥密码 (SSL)
    –engine <eng> 加密引擎使用 (SSL). “–engine list” for list
    –cacert <file> CA证书 (SSL)
    –capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
    –ciphers <list> SSL密码
    –compressed 要求返回是压缩的形势 (using deflate or gzip)
    –connect-timeout <seconds> 设置最大请求时间
    –create-dirs 建立本地目录的目录层次结构
    –crlf 上传是把LF转变成CRLF
    –ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
    –ftp-pasv 使用 PASV/EPSV 代替端口
    –ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
    –ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
    –ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输
    -g/–globoff 禁用网址序列和范围使用{}和[]
    -H/–header <line>自定义头信息传递给服务器
    –ignore-content-length 忽略的HTTP头信息的长度
    从文件中读取-j/–junk-session-cookies忽略会话Cookie
    - 界面 <interface>指定网络接口/地址使用
    - krb4 <级别>启用与指定的安全级别krb4
    -j/–junk-session-cookies 读取文件进忽略session cookie
    –interface <interface> 使用指定网络接口/地址
    –krb4 <level> 使用指定安全级别的krb4
    -k/–insecure 允许不使用证书到SSL站点
    -K/–config 指定的配置文件读取
    –limit-rate <rate> 设置传输速度
    –local-port <NUM> 强制使用本地端口号
    –max-redirs <num> 设置最大读取的目录数
    –max-filesize <bytes> 设置最大下载的文件总量
    -M/–manual 显示全手动
    -n/–netrc 从netrc文件中读取用户名和密码
    –netrc-optional 使用 .netrc 或者 URL来覆盖-n
    –ntlm 使用 HTTP NTLM 身份验证
    –proxy-anyauth 选择任一代理身份验证方法
    –proxy-basic 在代理上使用基本身份验证
    –proxy-digest 在代理上使用数字身份验证
    –proxy-ntlm 在代理上使用ntlm身份验证
    -P/–ftp-port <address> 使用端口地址,而不是使用PASV
    -Q/–quote <cmd>文件传输前,发送命令到服务器
    -r/–range <range>检索来自HTTP/1.1或FTP服务器字节范围
    –range-file 读取(SSL)的随机文件
    –retry <num> 传输出现问题时,重试的次数
    –retry-delay <seconds> 传输出现问题时,设置重试间隔时间
    –retry-max-time <seconds> 传输出现问题时,设置最大重试时间
    –socks4 <host[:port]> 用socks4代理给定主机和端口
    –socks5 <host[:port]> 用socks5代理给定主机和端口
    –stderr <file>
    -t/–telnet-option <OPT=val> Telnet选项设置
    –trace <file> 对指定文件进行debug
    –trace-ascii <file> Like –跟踪但没有hex输出
    –trace-time 跟踪/详细输出时,添加时间戳
    –url <URL> Spet URL to work with
    -x/–proxy <host[:port]>在给定的端口上使用HTTP代理
    -X/–request <command>指定什么命令
    -y/–speed-time 放弃限速所要的时间。默认为30
    -Y/–speed-limit 停止传输速度的限制,速度时间’秒
    -z/–time-cond 传送时间设置
    -0/–http1.0 使用HTTP 1.0
    -1/–tlsv1 使用TLSv1(SSL)
    -2/–sslv2 使用SSLv2的(SSL)
    -3/–sslv3 使用的SSLv3(SSL)
    –3p-quote like -Q for the source URL for 3rd party transfer
    –3p-url 使用url,进行第三方传送
    –3p-user 使用用户名和密码,进行第三方传送
    -4/–ipv4 使用IP4
    -6/–ipv6 使用IP6
    -#/–progress-bar 用进度条显示当前的传送状态





    tcpdump:

    dump the traffic on a network,

    根据使用者的定义对网络上的数据包进行截获的包分析工具。
     tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

     tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                    [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                    [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                    [ -Q|-P in|out|inout ]
                    [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                    [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                    [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                    [ -Z user ] [ expression ]




    先来看一个比较基本的用法:
    tcpdump -i eth0 
    其中,eth0为参数值,表示需要抓包的网口,这是个必需参数。
    若不指定网卡,默认只会监控第一个网络接口:eth0

    监控特定主机或ip
    tcpdump host ip或主机名称


    tcpdump支持很多的关键字,下面先看几个例子:
    (例1)tcpdump -i eth0 host 192.168.0.250 -----在网口eth0上抓取主机地址为192.168.0.250的所有数据包。
    (例2)tcpdump -i eth0 net 192.168.0.0/24 ------ 在网口eth0上抓取网络地址为192.168.0.0/24的所有数据包
    (例3)tcpdump -i eth0 port 80 ------ 在网口eth0上抓取端口为80的所有数据包
                  (注意,这里不区分是源端口还是目的端口)


    当然,我们也可以指定源端口或目的端口
    (例4)tcpdump -i eth0 src port 80 and dst port 6100
     --- 在网口eth0上抓取源端口为80且目的端口为6100的数据包,这里用到了and逻辑运算符,后面再介绍

    (例5)tcpdump -i eth0 icmp
     --- 在网口eth0上抓取所有icmp协议的数据包


    实际上,tcpdump主要包括三种类型的关键字,
    第一种是关于类型的关键字,主要包括host,net,port,如上面的例(1)(2)(3),
    第二种是确定传输方向的关键字,主要包括src,dst,src or dst,src and dst,这些关键字指明了传输的方向,如上面的例(4)。
    第三种是协议关键字,包括fddi,ip,arp,rarp,tcp,udp,imcp等,如上面的例(5)。

    除了这三种类型的关键字外,还有其他重要的关键字,
    如:gateway,broadcast,less,greater,
    还有三种逻辑运算,取非运算是'not'、'!',与运算符是'and'、'&&'、
    或运算符是'or'、'||',这些关键字可以组合起来构成强大的组合条件来满足我们的需求。


    看看tcpdump的具体参数及意义:

    -i:指定tcpdump监听的网络接口
    -s:指定要监听数据包的长度
    -c:指定要监听的数据包数量,达到指定数量后自动停止抓包
    -w:指定将监听到的数据包写入文件中保存
    -A:指定将每个监听到的数据包以ACSII可见字符打印
    -n:指定将每个监听到数据包中的域名转换成IP地址后显示
    -nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
    -e:指定将监听到的数据包链路层的信息打印出来,包括源mac和目的mac,以及网络层的协议
    -p:将网卡设置为非混杂模式,不能与host或broadcast一起使用
    -r:指定从某个文件中读取数据包
    -S:指定打印每个监听到的数据包的TCP绝对序列号而非相对序列号


  • 相关阅读:
    Java8 新特性
    Less语法
    【手动开栈】【dfs序】【树状数组】【Tarjan】bzoj2819 Nim
    【dfs序】【树状数组】bzoj1103 [POI2007]大都市meg
    【树链剖分】【树状数组】【最近公共祖先】【块状树】bzoj3631 [JLOI2014]松鼠的新家
    【块状树】【树链剖分】【线段树】bzoj3531 [Sdoi2014]旅行
    【树链剖分】【分块】【最近公共祖先】【块状树】bzoj1984 月下“毛景树”
    【树链剖分】【函数式权值分块】bzoj1146 [CTSC2008]网络管理Network
    【单调队列】bzoj1047 [HAOI2007]理想的正方形
    【单调队列】bzoj2096 [Poi2010]Pilots
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896658.html
Copyright © 2020-2023  润新知