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绝对序列号而非相对序列号

curl 和 tcpdump的更多相关文章

  1. HTTP 2.0的那些事

    转自:http://www.admin10000.com/document/9310.html 在我们所处的互联网世界中,HTTP协议算得上是使用最广泛的网络协议.最近http2.0的诞生使得它再次互 ...

  2. HTTP2.0那些事

    1. HTTP2.0的前世 http2.0的前世是http1.0和http1.1这两兄弟.虽然之前仅仅只有两个版本,但这两个版本所包含的协议规范之庞大,足以让任何一个有经验的工程师为之头疼.http1 ...

  3. 谷歌浏览器chrome假死、卡死、经常无反应,火狐firefox闪黑格子的解决办法(显卡/驱动兼容问题)

        问题: chrome 升级到高版本,切换标签后点击,滚轮都没反应,假死不动.F12呼出控制台来开发时更让人揪心.(大概chrome 25更高) 原因: 我的电脑是:集显+512M独显,可切换的 ...

  4. http2.0与http1.X的区别

    此文只是方便重看,原文在:http://www.mamicode.com/info-detail-1199706.html 1.1 HTTP应用场景 http诞生之初主要是应用于web端内容获取,那时 ...

  5. Http 1.x弊端与Http 2.0比较

    HTTP2.0作为新版协议,改动细节必然很多,不过对应用开发者和服务提供商来说,影响较大的就几点. 新的二进制格式(Binary Format) http1.x诞生的时候是明文协议,其格式由三部分组成 ...

  6. 八种Docker容器开发模式解析

    原文链接:http://www.csdn.net/article/2014-10-27/2822294 Docker优点已经说过很多次,这里不做详述,Docker现在越来越受到开发人员的青睐,而且利用 ...

  7. 各种工具使用手册:http://www.itshouce.com.cn/linux/linux-tcpdump.html 关于tcpdump!!!!

    各种工具使用手册:http://www.itshouce.com.cn/linux/linux-tcpdump.html 关于tcpdump!!!! 实用tcpdump命令 //查看本机与mysql的 ...

  8. tcpdump命令--实用篇

    //查看本机与mysql的操作命令 注意 -i any表示监听所有网络接口,我们也根据自身情况选择网络接口 #tcpdump -i any -w - dst port 3306 |strings // ...

  9. 转:tcpdump抓包分析(强烈推荐)

    转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac71 ...

随机推荐

  1. “土法炮制”之 OOM框架

    一.什么是OOM框架? OOM 的全拼是 Object-Object-Map,意思是对象与对象之间的映射,OOM框架要解决的问题就是对象与对象之间数据的自动映射. 举一个具体的例子:用过MVC模式开发 ...

  2. Spring Boot2 系列教程 (四) | 集成 Swagger2 构建强大的 RESTful API 文档

    前言 快过年了,不知道你们啥时候放年假,忙不忙.反正我是挺闲的,所以有时间写 blog.今天给你们带来 SpringBoot 集成 Swagger2 的教程. 什么是 Swagger2 Swagger ...

  3. 2、Automapper安装及配置

    一. 安装 我们安装是在 vs 中使用Nuget的方式进行安装 不过安装时需注意一件事情就是,版本问题,我示例使用的是.net framework 4.5.2,所以我安装AutoMapper的版本是7 ...

  4. Flask DBUtils

    作用:创建连接池,解决多线程问题 1.安装模块 pip3 install -i https://pypi.douban.com/simple DBUtils 2.settings.py(配置文件) f ...

  5. 定时任务莫名停止,Spring 定时任务存在 Bug??

    Hello~各位读者新年好!这里楼下小黑哥给大家拜个年,祝大家蒸蒸日上烫烫烫,年年有余屯屯屯. 那年那 Bug 春节放假,小黑哥坐上高铁回家,突然想到一次生产问题.那是小黑哥参加工作第一年,那一年国庆 ...

  6. RainbowPlan团队项目-总结

    博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作业要求在哪里 https:// ...

  7. CF990G

    题意 https://codeforces.com/contest/990/problem/G 思考 在200000以内,因数个数最多的数位166320,共有160个因数.可以知道,从一个节点向下走最 ...

  8. 什么是LakeHouse?

    1. 引入 在Databricks的过去几年中,我们看到了一种新的数据管理范式,该范式出现在许多客户和案例中:LakeHouse.在这篇文章中,我们将描述这种新范式及其相对于先前方案的优势. 数据仓库 ...

  9. Ubuntu 获取 root 用户权限并以 root权限登录

    操作步骤: 1.打开终端,使用 sudo passwd root 命令进行 Ubuntu 中密码的重置        2.切换到 /usr/share/lightdm/lightdm.conf.d 目 ...

  10. pythonenv的安装及迁移

    一.安装 运行 pip install virtualenv 即可安装virtualenv,想用 最新开发版 就运行 二. virtualenv基本使用 $ python virtualenv.py ...