linux

linux

Linux curl命令详解

Linuxliuliangsong 发表了文章 • 0 个评论 • 2178 次浏览 • 2016-11-23 17:57 • 来自相关话题

  curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
 
一、curl命令语法:curl [options] [URL...] 
二、curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。参数组参数描述urlurl需要抓取的一到多个URLs;
多个下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt请

头-H "name: value"
--header "name: value"(HTTP)添加一个http header(http请求头);-H "name:"
--header "name:"(HTTP)移除一个http header(http请求头);-A "string"
--user-agent "string"
【参考】(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
也可以使用“-H”, “--header option”设置此选项;-e <URL>
--referer <URL>
【参考】(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;响

头-I
--head(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
用于HTTP服务时,获取页面的http头;
  (如:curl -I http://aiezu.com)
用于FTP/FILE时,将会获取文件大小、最后修改时间;
  (如:curl -I file://test.txt)-i
--include(HTTP)输出HTTP头和返回内容;-D <file>
--dump-header <file>(HTTP)转储http响应头到指定文件;cookie-b name=data
--cookie name=data
【参考】(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";

如果行中没有“=”,将把参数值当作cookie文件名;

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;-c filename
--cookie-jar file name
【参考】(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
指定参数值为“-”将定向到标准输出“如控制台”;-j
--junk-session-cookies(HTTP)告诉curl放弃所有的"session cookies";
相当于重启浏览器;代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
【参考】使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"-p
--proxytunnel将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp;--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
【参考】使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数;--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlmhttp代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm-U <user:password>
--proxy-user <user:password>设置代理的用户名和密码;数据
传输-G
--get
【参考】如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; -d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
【参考】(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST数据;
  --data-ascii:HTTP方式POST ascii数据;
  --data-binary:HTTP方式POST二进制数据;
  --data-urlencode:HTTP方式POST数据(进行urlencode);
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;-F name=@file
-F name=<file
-F name=content
--form name=content
【参考】(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。

如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;--form-string <key=value>(HTTP)类似于“--form”,但是“@”、“<”无特殊含义;-T file
--upload-file file通过“put”的方式将文件传输到远程网址;

选项参数只使用字符"-",将通过stdin读入文件内容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此参数也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com断点
续传-C <offset>
--continue-at <offset>断点续转,从文件头的指定位置开始继续下载/上传;
offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输;-r <range>
--range <range>(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
0-499:最前面500字节;
-500:最后面500字节;
9500-:最前面9500字节;
0-0,-1:最前面和最后面的1字节;
100-199,500-599:两个100字节;


认证--basic(HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式;--ntlm(HTTP)使用NTLM身份验证方式,用于HTTP协议;
一般用于IIS使用NTLM的网站;--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
配合“-u/--user”选项,防止密码使用明文方式发送;--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
它主要目的是为它的主要目的是为kerberos5认证提供支持支持;--anyauth(HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式;-u user:password
--user user:password使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;

如果你只提供用户名,curl将要求你输入密码;

如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证;

此参数相当于设置http头“Authorization:”;证书-E <证书[:密码]>
--cert <证书[:密码]>(SSL)指定“PEM”格式的证书文件和证书密码;--cert-type <type>(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
默认为“PEM”;--cacert <CA证书>(SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式;--capath <CA证书路径>(SSL)告诉curl所以指定目录下的CA证书用来验证;
这些证书必须是“PEM”格式;--crlfile <file>(HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表;-k
--insecure(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。SSL
其他--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;--engine <name>设置一个OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;--random-file(SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为;--egd-file <file>(SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名;-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3(SSL)使用TLS版本2与远程服务器通讯;
(SSL)使用TLS 1.0版本与远程服务器通讯;
(SSL)使用TLS 1.1版本与远程服务器通讯;
(SSL)使用TLS 1.2版本与远程服务器通讯;
(SSL)使用SSL版本2与远程服务器通讯;
(SSL)使用SSL版本3与远程服务器通讯;私钥
公钥--key <key>(SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;--key-type <type>(SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM;--pass <phrase>(SSL/SSH)指定私钥文件的密码;--pubkey <key>(SSH)使用指定文件提供的您公钥;FTP-P
--ftp-port <接口>(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡:eth1
IP:8.8.8.8
主机名:aiezu.com
可以加端口号:eth1:20000-21000;--crlf(FTP)上传时将换行符(LF)转换为回车换行(CRLF);--ftp-account [data](FTP)ftp帐号信息;--ftp-method [method](FTP)可选值:multicwd/nocwd/singlecwd;--ftp-pasv(FTP)使用使用PASV(被动)/EPSV模式;--ftp-skip-pasv-ip(FTP)使用PASV的时,跳过指定IP;--ftp-create-dirs(FTP)上传时自动创建远程目录;-l
--list-only(FTP)列出ftp文件列表;-B
--use-ascii(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。--disable-epsv(FTP)告诉curl在PASV(被动模式)时不要使用EPSV;--disable-eprt(FTP)告诉curl在主动模式时禁用EPRT和LPRT;限速--limit-rate <speed>限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”;-y
--speed-time <time>If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.-Y
--speed-limit <speed>If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.其他
选项-0/--http1.0(HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1;--interface <name>使用指定的网卡接口访问;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com-X <command>
--request <command>(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET;--keepalive-time <seconds>设置keepalive时间--no-keepalive关闭keepalive功能;--no-buffer禁用对输出流缓冲;--buffer启用输出流缓冲;-L
--location(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转)--location-trusted(HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码;--compressed(HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压;--connect-timeout <seconds>指定最大连接超时,单位“秒”;-m seconds
--max-time seconds限制整个curl操作的最长时间,单位为秒;-s
--silent安静模式。不要显示进度表或错误消息;-#
--progress-bar显示进度条;错误
选项-f
--fail(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”;--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>失败重试次数;
重试间隔时间;
最大重试时间;-S
--show-error安静模式下显示错误信息;--stderr <file>错误信息保存文件;输出-o file
--output file将返回内容输出到文件。
如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  将保存为:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根据规则创建保存目录,参考:“--create-dirs”

指定“-”将定向到标准输出“如控制台”; -O
--remote-name将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录);--create-dirs与“-o”参数配合使用,创建必要的本地目录层次结构-w
--write-out format操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”

格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取;

格式参数可以使用“\n”、“\r”、“\t”等转义字符;调试--trace <file>转储所有传入和传出的数据到文件,包括描述信息;
使用“-”作为文件名将输出发送到标准输出。--trace-ascii file转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
使用“-”作为文件名将输出发送到标准输出。
这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项;--trace-time转储文件中添加时间信息;-K
--config <config file>从配置文件中读取参数,参考:http://curl.haxx.se/docs/-v
--verbose显示更详细的信息,调试时使用;帮助-M
--manual显示完整的帮助手册;-h
--helplinux curl用法帮助; 
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。退出码错误描述1Unsupported protocol. This build of curl has no support for this protocol.2Failed to initialize.3URL malformed. The syntax was not correct.5Couldn't resolve proxy. The given proxy host could not be resolved.6Couldn't resolve host. The given remote host was not resolved.7Failed to connect to host.8FTP weird server reply. The server sent data curl couldn't parse.9FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.11FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.13FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.14FTP weird 227 format. Curl couldn't parse the 227-line the server sent.15FTP can't get host. Couldn't resolve the host IP we got in the 227-line.17FTP couldn't set binary. Couldn't change transfer method to binary.18Partial file. Only a part of the file was transferred.19FTP couldn't download/access the given file, the RETR (or similar) command failed.21FTP quote error. A quote command returned error from the server.22HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.23Write error. Curl couldn't write data to a local filesystem or similar.25FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.26Read error. Various reading problems.27Out of memory. A memory allocation request failed.28Operation timeout. The specified time-out period was reached according to the conditions.30FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!31FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.33HTTP range error. The range "command" didn't work.34HTTP post error. Internal post-request generation error.35SSL connect error. The SSL handshaking failed.36FTP bad download resume. Couldn't continue an earlier aborted download.37FILE couldn't read file. Failed to open the file. Permissions?38LDAP cannot bind. LDAP bind operation failed.39LDAP search failed.41Function not found. A required LDAP function was not found.42Aborted by callback. An application told curl to abort the operation.43Internal error. A function was called with a bad parameter.45Interface error. A specified outgoing interface could not be used.47Too many redirects. When following redirects, curl hit the maximum amount.48Unknown TELNET option specified.49Malformed telnet option.51The peer's SSL certificate or SSH MD5 fingerprint was not ok.52The server didn't reply anything, which here is considered an error.53SSL crypto engine not found.54Cannot set SSL crypto engine as default.55Failed sending network data.56Failure in receiving network data.58Problem with the local certificate.59Couldn't use specified SSL cipher.60Peer certificate cannot be authenticated with known CA certificates.61Unrecognized transfer encoding.62Invalid LDAP URL.63Maximum file size exceeded.64Requested FTP SSL level failed.65Sending the data requires a rewind that failed.66Failed to initialize SSL Engine.67The user name, password, or similar was not accepted and curl failed to log in.68File not found on TFTP server.69Permission problem on TFTP server.70Out of disk space on TFTP server.71Illegal TFTP operation.72Unknown TFTP transfer ID.73File already exists (TFTP).74No such user (TFTP).75Character conversion failed.76Character conversion functions required.77Problem with reading the SSL CA cert (path? access rights?).78The resource referenced in the URL does not exist.79An unspecified error occurred during the SSH session.80Failed to shut down the SSL connection.82Could not load CRL file, missing or wrong format (added in 7.19.0).83Issuer check failed (added in 7.19.0).XXMore error codes will appear here in future releases. The existing ones are meant to never change.
四、用法演示:
1、下载页面:curl -o index.html http://aiezu.com 
2、下载文件并显示简单进度条:curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso 
3、断点续传:#继续完成上次终止的未完成的下载
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
4、伪造来源页面:
#告诉爱E族,我是从百度来的
curl -e http://baidu.com http://aiezu.com
 5、伪造代理设备:#告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令)
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com

#告诉爱E族,我用的是微信内置浏览器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com 
6、http头:# 看看本站的http头是怎么样的
curl -I http://aiezu.com输出:HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8 
6、设置http请求头:curl -H "Cache-Control:no-cache" http://aiezu.com
7、发送表单数据:curl -F "pic=@logo.png" -F "site=aiezu" http://aiezu.com/
8、发送cookie:curl -b "domain=aiezu.com" http://aiezu.com 查看全部
  curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
 
一、curl命令语法:
curl [options] [URL...]
 
二、curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。
参数组参数描述
urlurl需要抓取的一到多个URLs;
多个下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt


-H "name: value"
--header "name: value"
(HTTP)添加一个http header(http请求头);
-H "name:"
--header "name:"
(HTTP)移除一个http header(http请求头);
-A "string"
--user-agent "string"
【参考】
(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
也可以使用“-H”, “--header option”设置此选项;
-e <URL>
--referer <URL>
【参考】
(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;


-I
--head
(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
用于HTTP服务时,获取页面的http头;
  (如:curl -I http://aiezu.com)
用于FTP/FILE时,将会获取文件大小、最后修改时间;
  (如:curl -I file://test.txt)
-i
--include
(HTTP)输出HTTP头和返回内容;
-D <file>
--dump-header <file>
(HTTP)转储http响应头到指定文件;
cookie-b name=data
--cookie name=data
【参考】
(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";

如果行中没有“=”,将把参数值当作cookie文件名;

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;
-c filename
--cookie-jar file name
【参考】
(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
指定参数值为“-”将定向到标准输出“如控制台”;
-j
--junk-session-cookies
(HTTP)告诉curl放弃所有的"session cookies";
相当于重启浏览器;
代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
【参考】
使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"
-p
--proxytunnel
将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp;
--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
【参考】
使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数;
--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlm
http代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm
-U <user:password>
--proxy-user <user:password>
设置代理的用户名和密码;
数据
传输
-G
--get
【参考】
如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; 
-d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
【参考】
(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST数据;
  --data-ascii:HTTP方式POST ascii数据;
  --data-binary:HTTP方式POST二进制数据;
  --data-urlencode:HTTP方式POST数据(进行urlencode);
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;
-F name=@file
-F name=<file
-F name=content
--form name=content
【参考】
(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。

如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;
--form-string <key=value>(HTTP)类似于“--form”,但是“@”、“<”无特殊含义;
-T file
--upload-file file
通过“put”的方式将文件传输到远程网址;

选项参数只使用字符"-",将通过stdin读入文件内容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此参数也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com
断点
续传
-C <offset>
--continue-at <offset>
断点续转,从文件头的指定位置开始继续下载/上传;
offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输;
-r <range>
--range <range>
(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
0-499:最前面500字节;
-500:最后面500字节;
9500-:最前面9500字节;
0-0,-1:最前面和最后面的1字节;
100-199,500-599:两个100字节;



认证
--basic(HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式;
--ntlm(HTTP)使用NTLM身份验证方式,用于HTTP协议;
一般用于IIS使用NTLM的网站;
--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
配合“-u/--user”选项,防止密码使用明文方式发送;
--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
它主要目的是为它的主要目的是为kerberos5认证提供支持支持;
--anyauth(HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式;
-u user:password
--user user:password
使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;

如果你只提供用户名,curl将要求你输入密码;

如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证;

此参数相当于设置http头“Authorization:”;
证书-E <证书[:密码]>
--cert <证书[:密码]>
(SSL)指定“PEM”格式的证书文件和证书密码;
--cert-type <type>(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
默认为“PEM”;
--cacert <CA证书>(SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式;
--capath <CA证书路径>(SSL)告诉curl所以指定目录下的CA证书用来验证;
这些证书必须是“PEM”格式;
--crlfile <file>(HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表;
-k
--insecure
(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。
SSL
其他
--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;
--engine <name>设置一个OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;
--random-file(SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为;
--egd-file <file>(SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名;
-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3
(SSL)使用TLS版本2与远程服务器通讯;
(SSL)使用TLS 1.0版本与远程服务器通讯;
(SSL)使用TLS 1.1版本与远程服务器通讯;
(SSL)使用TLS 1.2版本与远程服务器通讯;
(SSL)使用SSL版本2与远程服务器通讯;
(SSL)使用SSL版本3与远程服务器通讯;
私钥
公钥
--key <key>(SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;
--key-type <type>(SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM;
--pass <phrase>(SSL/SSH)指定私钥文件的密码;
--pubkey <key>(SSH)使用指定文件提供的您公钥;
FTP-P
--ftp-port <接口>
(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡:eth1
IP:8.8.8.8
主机名:aiezu.com
可以加端口号:eth1:20000-21000;
--crlf(FTP)上传时将换行符(LF)转换为回车换行(CRLF);
--ftp-account [data](FTP)ftp帐号信息;
--ftp-method [method](FTP)可选值:multicwd/nocwd/singlecwd;
--ftp-pasv(FTP)使用使用PASV(被动)/EPSV模式;
--ftp-skip-pasv-ip(FTP)使用PASV的时,跳过指定IP;
--ftp-create-dirs(FTP)上传时自动创建远程目录;
-l
--list-only
(FTP)列出ftp文件列表;
-B
--use-ascii
(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。
--disable-epsv(FTP)告诉curl在PASV(被动模式)时不要使用EPSV;
--disable-eprt(FTP)告诉curl在主动模式时禁用EPRT和LPRT;
限速--limit-rate <speed>限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”;
-y
--speed-time <time>
If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.
-Y
--speed-limit <speed>
If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.
其他
选项
-0/--http1.0(HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1;
--interface <name>使用指定的网卡接口访问;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com
-X <command>
--request <command>
(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET;
--keepalive-time <seconds>设置keepalive时间
--no-keepalive关闭keepalive功能;
--no-buffer禁用对输出流缓冲;
--buffer启用输出流缓冲;
-L
--location
(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转)
--location-trusted(HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码;
--compressed(HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压;
--connect-timeout <seconds>指定最大连接超时,单位“秒”;
-m seconds
--max-time seconds
限制整个curl操作的最长时间,单位为秒;
-s
--silent
安静模式。不要显示进度表或错误消息;
-#
--progress-bar
显示进度条;
错误
选项
-f
--fail
(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”;
--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>
失败重试次数;
重试间隔时间;
最大重试时间;
-S
--show-error
安静模式下显示错误信息;
--stderr <file>错误信息保存文件;
输出-o file
--output file
将返回内容输出到文件。
如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  将保存为:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根据规则创建保存目录,参考:“--create-dirs”

指定“-”将定向到标准输出“如控制台”; 
-O
--remote-name
将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录);
--create-dirs与“-o”参数配合使用,创建必要的本地目录层次结构
-w
--write-out format
操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”

格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取;

格式参数可以使用“\n”、“\r”、“\t”等转义字符;
调试--trace <file>转储所有传入和传出的数据到文件,包括描述信息;
使用“-”作为文件名将输出发送到标准输出。
--trace-ascii file转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
使用“-”作为文件名将输出发送到标准输出。
这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项;
--trace-time转储文件中添加时间信息;
-K
--config <config file>
从配置文件中读取参数,参考:http://curl.haxx.se/docs/
-v
--verbose
显示更详细的信息,调试时使用;
帮助-M
--manual
显示完整的帮助手册;
-h
--help
linux curl用法帮助;
 
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。
退出码错误描述
1Unsupported protocol. This build of curl has no support for this protocol.
2Failed to initialize.
3URL malformed. The syntax was not correct.
5Couldn't resolve proxy. The given proxy host could not be resolved.
6Couldn't resolve host. The given remote host was not resolved.
7Failed to connect to host.
8FTP weird server reply. The server sent data curl couldn't parse.
9FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.
11FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.
13FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.
14FTP weird 227 format. Curl couldn't parse the 227-line the server sent.
15FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
17FTP couldn't set binary. Couldn't change transfer method to binary.
18Partial file. Only a part of the file was transferred.
19FTP couldn't download/access the given file, the RETR (or similar) command failed.
21FTP quote error. A quote command returned error from the server.
22HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.
23Write error. Curl couldn't write data to a local filesystem or similar.
25FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.
26Read error. Various reading problems.
27Out of memory. A memory allocation request failed.
28Operation timeout. The specified time-out period was reached according to the conditions.
30FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!
31FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.
33HTTP range error. The range "command" didn't work.
34HTTP post error. Internal post-request generation error.
35SSL connect error. The SSL handshaking failed.
36FTP bad download resume. Couldn't continue an earlier aborted download.
37FILE couldn't read file. Failed to open the file. Permissions?
38LDAP cannot bind. LDAP bind operation failed.
39LDAP search failed.
41Function not found. A required LDAP function was not found.
42Aborted by callback. An application told curl to abort the operation.
43Internal error. A function was called with a bad parameter.
45Interface error. A specified outgoing interface could not be used.
47Too many redirects. When following redirects, curl hit the maximum amount.
48Unknown TELNET option specified.
49Malformed telnet option.
51The peer's SSL certificate or SSH MD5 fingerprint was not ok.
52The server didn't reply anything, which here is considered an error.
53SSL crypto engine not found.
54Cannot set SSL crypto engine as default.
55Failed sending network data.
56Failure in receiving network data.
58Problem with the local certificate.
59Couldn't use specified SSL cipher.
60Peer certificate cannot be authenticated with known CA certificates.
61Unrecognized transfer encoding.
62Invalid LDAP URL.
63Maximum file size exceeded.
64Requested FTP SSL level failed.
65Sending the data requires a rewind that failed.
66Failed to initialize SSL Engine.
67The user name, password, or similar was not accepted and curl failed to log in.
68File not found on TFTP server.
69Permission problem on TFTP server.
70Out of disk space on TFTP server.
71Illegal TFTP operation.
72Unknown TFTP transfer ID.
73File already exists (TFTP).
74No such user (TFTP).
75Character conversion failed.
76Character conversion functions required.
77Problem with reading the SSL CA cert (path? access rights?).
78The resource referenced in the URL does not exist.
79An unspecified error occurred during the SSH session.
80Failed to shut down the SSL connection.
82Could not load CRL file, missing or wrong format (added in 7.19.0).
83Issuer check failed (added in 7.19.0).
XXMore error codes will appear here in future releases. The existing ones are meant to never change.

四、用法演示:
1、下载页面:
curl -o index.html http://aiezu.com
 
2、下载文件并显示简单进度条:
curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
 
3、断点续传:
#继续完成上次终止的未完成的下载
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso

4、伪造来源页面:
#告诉爱E族,我是从百度来的
curl -e http://baidu.com http://aiezu.com

 5、伪造代理设备:
#告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令) 
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com

#告诉爱E族,我用的是微信内置浏览器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com
 
6、http头:
# 看看本站的http头是怎么样的
curl -I http://aiezu.com
输出:
HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
 
6、设置http请求头:
curl -H "Cache-Control:no-cache"  http://aiezu.com

7、发送表单数据:
curl -F "pic=@logo.png" -F "site=aiezu"  http://aiezu.com/

8、发送cookie:
curl -b "domain=aiezu.com"  http://aiezu.com

Linux 常用 ls命令详解

Linuxlinyu520 发表了文章 • 0 个评论 • 257 次浏览 • 2016-11-22 16:06 • 来自相关话题

  ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息。
 
一、ls命令用法:
  ls命令运行在命令提示符终端,用法如下。其中【选项】和为可选参数,可以一零个或者多个选项;【文件】也为可选参数,可以为零个或者多个;如果未指定文件,默认为列出当前目录下的文件:用法:ls [选项]... [文件]... 
二、ls命令参数详解:
下面是爱E族(aiezu.com)收集整理的ls详细选项,如有错误的地方,欢迎指正:参数名描述-a
--all列出所有的文件和目录,包括以“.”号开头的;-A
--almost-all列出所有的文件和目录,包括以“.”号开头的(除了“.”和“..”);-b
--escape 将文件名中的不可见字符,使用“\”开头的八进制转换字符表示;--block-size=SIZE指定每块的大小,如果指定了此值,将显示块数,不再显示文件大小;
可能的值:
  数   字,如:50、1024、102400;
  数字+单位,如:1k、2m、5g、10t;-B
--ignore-backups不要显示以“~”结尾的文件;-c按文件修改时间排序,可以使用“-l”选项显示创建时间;-C使用列的顺序输出文件列表;--color[=WHEN]是否使用不同的颜色区分文件类型,可能的值:
  never:从不;
  always:总是;
  auto:自动。-d
--directory列出目录的信息,而不是列出命令里面的内容;-D
--diredGenerate output designed for Emacs' dired mode;-f 不排序, 使用“-aU”选项, 停用“-lst”选项;-F
--classify给文件名末尾添加一个标识符(*/=@|中的一个):
  “*”:可执行文件;
  “/”:目录;
  “=”:socket文件;
  “@”:符号链接(symbolic link)文件;
  “|”:FIFOs文件;--format=WORD设置输出的格式,可能的值:
  across:相当于“-x”;
  commas:相当于“-m”;
  horizontal:相当于“-x”;
  long:相当于“-l”;
  single-column:相当于“-1”;
  verbose:相当于“-l”;
  vertical:相当于“-C”;--full-time列出文件完整的修改日期和时间;-g(ignored)-G
--no-group不显示文件的用户组;-h
--human-readable自动将文件大小使用方便阅读的方式表示,如:1.23K, 2.4M, 9G;-H
--si单位转换使用1000,而不是1024;
如:1M = 1000K,而不是 1M = 1024K;--indicator-style=WORD按指定样式给文件名追加一个标识,可能的值:
  none:不添加,默认值;
  classify:相当于“-F”;
  file-type: 相当于“-p”;
  slash:目录添加斜杠;-i
--inode输出文件使用的index node;-I
--ignore=PATTERNDo not list implied entries matching shell PATTERN-k
--kilobytes以K为单位显示文件大小,相当于“--block-size=1024”;-l以长列表的形式显示文件的详细信息;-L
--dereference列出符号链接指向的条目,而不是列出符号链接;-m 所有的相连并使用“,”逗号分隔;-n
--numeric-uid-gid使用数字UIDs、GIDs来代替名字;-N
--literal输出原始名称,对特殊字符不做特别处理,如:控制字符;-o 使用没有组信息的长列表格式-p
--file-type根据文件类型,给文件名末尾添加一个标识符(/=@|中的一个);-q
--hide-control-chars以?号代替不可显示字符(默认);--show-control-chars显示控制字符,不使用?号代替;-Q
--quote-name给名称加上双引号;--quoting-style=WORD条目名称使用的引号样式,可选的值:literal、shell、shell-always、c、c-maybe、escape、clocale;-r
--reverse 使用反序排序;-R
--recursive递归列出目录和子目录的文件;-s
--size以块为单位输出文件大小;-S根据文件大小排序;--sort=WORD排序关键词,可能的值: "none", "time", "size", "extension", "version";--time=WORD显示文档的指定时间,而不是显示修改时间,可能的值:
  atime, access, use, ctime or status; 
如果“--sort=time”,也可以使用此时间作为排序键;-t使用修改时间排序;-T
--tabsize=COLS设置tab制表符的长度,而不是使用默认的8字符长度;-u 按最后访问时间排序; 使用“-l”显示最后访问时间;-U 不排序,使用目录的默认顺序;-v 按版本排序-w
--width=COLS指定屏幕宽度,而不是使用屏幕的实际宽度;-x按行的顺序显示,而不是按列的顺序;-X按字母顺序排序;-1每行显示一个文件;--help显示帮助信息;--version输出版本号; 
三、用法演示:
1、“-a”和“-A”选项的区别:[root@aiezu.com ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

[root@aiezu.com ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo
 2、“-b”和“--show-control-chars”选项演示:
  下面通过创建两个含不可显示字符“\001”和“\n”的文件名,来展示“-b”和“--show-control-chars”选项的区别:[root@aiezu.com mm]# touch "`echo -e "aiezu.com\001.txt"`"

[root@aiezu.com mm]# touch "`echo -e "aiezu\n.com.txt"`"

[root@aiezu.com mm]# ls
aiezu.com?.txt aiezu?.com.txt

[root@aiezu mm]# ls -b
aiezu.com\001.txt aiezu\n.com.txt

[root@aiezu.com mm]# ls --show-control-chars
aiezu.com.txt aiezu
.com.txt 
3、文件大小:[root@S2 opt]# ls -l aiezu.com.zip
-rw-r--r-- 1 root root 8007112 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -lh aiezu.com.zip
-rw-r--r-- 1 root root 7.7M Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -l --block-size=1k aiezu.com.zip
-rw-r--r-- 1 root root 7820 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -s aiezu.com.zip
7820 aiezu.com.zip 
4、ls命令“-F 参数”与“-p”参数演示:



5、文件创建时间、访问时间、修改时间:#文件的创建时间
[root@aiezu mm]# ls -lc aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:43 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=ctime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:43:23.572000000 +0800 aiezu.com.conf



#文件的修改时间:
[root@aiezu mm]# ls -l aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:41 aiezu.com.conf

[root@aiezu mm]# ls --full-time aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:41:55.575000000 +0800 aiezu.com.conf



#文件的访问时间:
[root@aiezu mm]# ls -lu aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:42 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=atime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:42:15.060000000 +0800 aiezu.com.conf 查看全部
  ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息。
 
一、ls命令用法:
  ls命令运行在命令提示符终端,用法如下。其中【选项】和为可选参数,可以一零个或者多个选项;【文件】也为可选参数,可以为零个或者多个;如果未指定文件,默认为列出当前目录下的文件:
用法:ls [选项]... [文件]...
 
二、ls命令参数详解:
下面是爱E族(aiezu.com)收集整理的ls详细选项,如有错误的地方,欢迎指正:
参数名描述
-a
--all
列出所有的文件和目录,包括以“.”号开头的;
-A
--almost-all
列出所有的文件和目录,包括以“.”号开头的(除了“.”和“..”);
-b
--escape 
将文件名中的不可见字符,使用“\”开头的八进制转换字符表示;
--block-size=SIZE指定每块的大小,如果指定了此值,将显示块数,不再显示文件大小;
可能的值:
  数   字,如:50、1024、102400;
  数字+单位,如:1k、2m、5g、10t;
-B
--ignore-backups
不要显示以“~”结尾的文件;
-c按文件修改时间排序,可以使用“-l”选项显示创建时间;
-C使用列的顺序输出文件列表;
--color[=WHEN]是否使用不同的颜色区分文件类型,可能的值:
  never:从不;
  always:总是;
  auto:自动。
-d
--directory
列出目录的信息,而不是列出命令里面的内容;
-D
--dired
Generate output designed for Emacs' dired mode;
-f 不排序, 使用“-aU”选项, 停用“-lst”选项;
-F
--classify
给文件名末尾添加一个标识符(*/=@|中的一个):
  “*”:可执行文件;
  “/”:目录;
  “=”:socket文件;
  “@”:符号链接(symbolic link)文件;
  “|”:FIFOs文件;
--format=WORD设置输出的格式,可能的值:
  across:相当于“-x”;
  commas:相当于“-m”;
  horizontal:相当于“-x”;
  long:相当于“-l”;
  single-column:相当于“-1”;
  verbose:相当于“-l”;
  vertical:相当于“-C”;
--full-time列出文件完整的修改日期和时间;
-g(ignored)
-G
--no-group
不显示文件的用户组;
-h
--human-readable
自动将文件大小使用方便阅读的方式表示,如:1.23K, 2.4M, 9G;
-H
--si
单位转换使用1000,而不是1024;
如:1M = 1000K,而不是 1M = 1024K;
--indicator-style=WORD按指定样式给文件名追加一个标识,可能的值:
  none:不添加,默认值;
  classify:相当于“-F”;
  file-type: 相当于“-p”;
  slash:目录添加斜杠;
-i
--inode
输出文件使用的index node;
-I
--ignore=PATTERN
Do not list implied entries matching shell PATTERN
-k
--kilobytes
以K为单位显示文件大小,相当于“--block-size=1024”;
-l以长列表的形式显示文件的详细信息;
-L
--dereference
列出符号链接指向的条目,而不是列出符号链接;
-m 所有的相连并使用“,”逗号分隔;
-n
--numeric-uid-gid
使用数字UIDs、GIDs来代替名字;
-N
--literal
输出原始名称,对特殊字符不做特别处理,如:控制字符;
-o 使用没有组信息的长列表格式
-p
--file-type
根据文件类型,给文件名末尾添加一个标识符(/=@|中的一个);
-q
--hide-control-chars
以?号代替不可显示字符(默认);
--show-control-chars显示控制字符,不使用?号代替;
-Q
--quote-name
给名称加上双引号;
--quoting-style=WORD条目名称使用的引号样式,可选的值:literal、shell、shell-always、c、c-maybe、escape、clocale;
-r
--reverse 
使用反序排序;
-R
--recursive
递归列出目录和子目录的文件;
-s
--size
以块为单位输出文件大小;
-S根据文件大小排序;
--sort=WORD排序关键词,可能的值: "none", "time", "size", "extension", "version";
--time=WORD显示文档的指定时间,而不是显示修改时间,可能的值:
  atime, access, use, ctime or status; 
如果“--sort=time”,也可以使用此时间作为排序键;
-t使用修改时间排序;
-T
--tabsize=COLS
设置tab制表符的长度,而不是使用默认的8字符长度;
-u 按最后访问时间排序; 使用“-l”显示最后访问时间;
-U 不排序,使用目录的默认顺序;
-v 按版本排序
-w
--width=COLS
指定屏幕宽度,而不是使用屏幕的实际宽度;
-x按行的顺序显示,而不是按列的顺序;
-X按字母顺序排序;
-1每行显示一个文件;
--help显示帮助信息;
--version输出版本号;
 
三、用法演示:
1、“-a”和“-A”选项的区别:
[root@aiezu.com ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

[root@aiezu.com ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

 2、“-b”和“--show-control-chars”选项演示:
  下面通过创建两个含不可显示字符“\001”和“\n”的文件名,来展示“-b”和“--show-control-chars”选项的区别:
[root@aiezu.com mm]# touch "`echo -e "aiezu.com\001.txt"`"

[root@aiezu.com mm]# touch "`echo -e "aiezu\n.com.txt"`"

[root@aiezu.com mm]# ls
aiezu.com?.txt aiezu?.com.txt

[root@aiezu mm]# ls -b
aiezu.com\001.txt aiezu\n.com.txt

[root@aiezu.com mm]# ls --show-control-chars
aiezu.com.txt aiezu
.com.txt
 
3、文件大小:
[root@S2 opt]# ls -l aiezu.com.zip 
-rw-r--r-- 1 root root 8007112 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -lh aiezu.com.zip
-rw-r--r-- 1 root root 7.7M Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -l --block-size=1k aiezu.com.zip
-rw-r--r-- 1 root root 7820 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -s aiezu.com.zip
7820 aiezu.com.zip
 
4、ls命令“-F 参数”与“-p”参数演示:
未标题-1.png

5、文件创建时间、访问时间、修改时间:
#文件的创建时间
[root@aiezu mm]# ls -lc aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:43 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=ctime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:43:23.572000000 +0800 aiezu.com.conf



#文件的修改时间:
[root@aiezu mm]# ls -l aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:41 aiezu.com.conf

[root@aiezu mm]# ls --full-time aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:41:55.575000000 +0800 aiezu.com.conf



#文件的访问时间:
[root@aiezu mm]# ls -lu aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:42 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=atime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:42:15.060000000 +0800 aiezu.com.conf

Linux忘记mysql root密码解决方法

Mysqllinyu520 发表了文章 • 0 个评论 • 356 次浏览 • 2016-11-20 15:52 • 来自相关话题

一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables
二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项) 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法 查看全部
一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:
[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables
保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:
/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables

二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges
  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:
[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead
 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 
  • 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;
  • 停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项)
 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法

Linux如何查看PHP版本号

回复

Linuxliuliangsong 回复了问题 • 1 人关注 • 1 个回复 • 432 次浏览 • 2016-10-24 17:51 • 来自相关话题

linux进程资源占用高原因分析命令

Linuxlinyu520 发表了文章 • 0 个评论 • 127 次浏览 • 2016-10-17 18:46 • 来自相关话题

1、查看进程的线程:ps -eLf|egrep 'httpd'
 2、跟踪线程调用:strace -p 15530
3、统计线程中函数的调用小号CPU时间:strace -p 16334 -c
strace -p 15530 -o out.file #输出到out.file文件
4、只显示recv函数的调用:strace -p 5314 -f -F -e recv
5、gdb调试线程:gdb -p pid
6、查看线程打开的文件描述符:lsof -p pid  查看全部
1、查看进程的线程:
ps -eLf|egrep 'httpd'

 2、跟踪线程调用:
strace -p 15530

3、统计线程中函数的调用小号CPU时间:
strace  -p 16334 -c
strace -p 15530 -o out.file #输出到out.file文件

4、只显示recv函数的调用:
strace  -p 5314 -f -F -e recv

5、gdb调试线程:
gdb -p pid

6、查看线程打开的文件描述符:
lsof -p pid
 

Linux curl命令详解

Linuxliuliangsong 发表了文章 • 0 个评论 • 2178 次浏览 • 2016-11-23 17:57 • 来自相关话题

  curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
 
一、curl命令语法:curl [options] [URL...] 
二、curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。参数组参数描述urlurl需要抓取的一到多个URLs;
多个下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt请

头-H "name: value"
--header "name: value"(HTTP)添加一个http header(http请求头);-H "name:"
--header "name:"(HTTP)移除一个http header(http请求头);-A "string"
--user-agent "string"
【参考】(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
也可以使用“-H”, “--header option”设置此选项;-e <URL>
--referer <URL>
【参考】(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;响

头-I
--head(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
用于HTTP服务时,获取页面的http头;
  (如:curl -I http://aiezu.com)
用于FTP/FILE时,将会获取文件大小、最后修改时间;
  (如:curl -I file://test.txt)-i
--include(HTTP)输出HTTP头和返回内容;-D <file>
--dump-header <file>(HTTP)转储http响应头到指定文件;cookie-b name=data
--cookie name=data
【参考】(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";

如果行中没有“=”,将把参数值当作cookie文件名;

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;-c filename
--cookie-jar file name
【参考】(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
指定参数值为“-”将定向到标准输出“如控制台”;-j
--junk-session-cookies(HTTP)告诉curl放弃所有的"session cookies";
相当于重启浏览器;代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
【参考】使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"-p
--proxytunnel将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp;--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
【参考】使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数;--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlmhttp代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm-U <user:password>
--proxy-user <user:password>设置代理的用户名和密码;数据
传输-G
--get
【参考】如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; -d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
【参考】(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST数据;
  --data-ascii:HTTP方式POST ascii数据;
  --data-binary:HTTP方式POST二进制数据;
  --data-urlencode:HTTP方式POST数据(进行urlencode);
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;-F name=@file
-F name=<file
-F name=content
--form name=content
【参考】(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。

如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;--form-string <key=value>(HTTP)类似于“--form”,但是“@”、“<”无特殊含义;-T file
--upload-file file通过“put”的方式将文件传输到远程网址;

选项参数只使用字符"-",将通过stdin读入文件内容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此参数也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com断点
续传-C <offset>
--continue-at <offset>断点续转,从文件头的指定位置开始继续下载/上传;
offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输;-r <range>
--range <range>(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
0-499:最前面500字节;
-500:最后面500字节;
9500-:最前面9500字节;
0-0,-1:最前面和最后面的1字节;
100-199,500-599:两个100字节;


认证--basic(HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式;--ntlm(HTTP)使用NTLM身份验证方式,用于HTTP协议;
一般用于IIS使用NTLM的网站;--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
配合“-u/--user”选项,防止密码使用明文方式发送;--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
它主要目的是为它的主要目的是为kerberos5认证提供支持支持;--anyauth(HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式;-u user:password
--user user:password使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;

如果你只提供用户名,curl将要求你输入密码;

如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证;

此参数相当于设置http头“Authorization:”;证书-E <证书[:密码]>
--cert <证书[:密码]>(SSL)指定“PEM”格式的证书文件和证书密码;--cert-type <type>(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
默认为“PEM”;--cacert <CA证书>(SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式;--capath <CA证书路径>(SSL)告诉curl所以指定目录下的CA证书用来验证;
这些证书必须是“PEM”格式;--crlfile <file>(HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表;-k
--insecure(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。SSL
其他--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;--engine <name>设置一个OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;--random-file(SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为;--egd-file <file>(SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名;-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3(SSL)使用TLS版本2与远程服务器通讯;
(SSL)使用TLS 1.0版本与远程服务器通讯;
(SSL)使用TLS 1.1版本与远程服务器通讯;
(SSL)使用TLS 1.2版本与远程服务器通讯;
(SSL)使用SSL版本2与远程服务器通讯;
(SSL)使用SSL版本3与远程服务器通讯;私钥
公钥--key <key>(SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;--key-type <type>(SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM;--pass <phrase>(SSL/SSH)指定私钥文件的密码;--pubkey <key>(SSH)使用指定文件提供的您公钥;FTP-P
--ftp-port <接口>(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡:eth1
IP:8.8.8.8
主机名:aiezu.com
可以加端口号:eth1:20000-21000;--crlf(FTP)上传时将换行符(LF)转换为回车换行(CRLF);--ftp-account [data](FTP)ftp帐号信息;--ftp-method [method](FTP)可选值:multicwd/nocwd/singlecwd;--ftp-pasv(FTP)使用使用PASV(被动)/EPSV模式;--ftp-skip-pasv-ip(FTP)使用PASV的时,跳过指定IP;--ftp-create-dirs(FTP)上传时自动创建远程目录;-l
--list-only(FTP)列出ftp文件列表;-B
--use-ascii(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。--disable-epsv(FTP)告诉curl在PASV(被动模式)时不要使用EPSV;--disable-eprt(FTP)告诉curl在主动模式时禁用EPRT和LPRT;限速--limit-rate <speed>限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”;-y
--speed-time <time>If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.-Y
--speed-limit <speed>If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.其他
选项-0/--http1.0(HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1;--interface <name>使用指定的网卡接口访问;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com-X <command>
--request <command>(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET;--keepalive-time <seconds>设置keepalive时间--no-keepalive关闭keepalive功能;--no-buffer禁用对输出流缓冲;--buffer启用输出流缓冲;-L
--location(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转)--location-trusted(HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码;--compressed(HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压;--connect-timeout <seconds>指定最大连接超时,单位“秒”;-m seconds
--max-time seconds限制整个curl操作的最长时间,单位为秒;-s
--silent安静模式。不要显示进度表或错误消息;-#
--progress-bar显示进度条;错误
选项-f
--fail(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”;--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>失败重试次数;
重试间隔时间;
最大重试时间;-S
--show-error安静模式下显示错误信息;--stderr <file>错误信息保存文件;输出-o file
--output file将返回内容输出到文件。
如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  将保存为:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根据规则创建保存目录,参考:“--create-dirs”

指定“-”将定向到标准输出“如控制台”; -O
--remote-name将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录);--create-dirs与“-o”参数配合使用,创建必要的本地目录层次结构-w
--write-out format操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”

格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取;

格式参数可以使用“\n”、“\r”、“\t”等转义字符;调试--trace <file>转储所有传入和传出的数据到文件,包括描述信息;
使用“-”作为文件名将输出发送到标准输出。--trace-ascii file转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
使用“-”作为文件名将输出发送到标准输出。
这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项;--trace-time转储文件中添加时间信息;-K
--config <config file>从配置文件中读取参数,参考:http://curl.haxx.se/docs/-v
--verbose显示更详细的信息,调试时使用;帮助-M
--manual显示完整的帮助手册;-h
--helplinux curl用法帮助; 
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。退出码错误描述1Unsupported protocol. This build of curl has no support for this protocol.2Failed to initialize.3URL malformed. The syntax was not correct.5Couldn't resolve proxy. The given proxy host could not be resolved.6Couldn't resolve host. The given remote host was not resolved.7Failed to connect to host.8FTP weird server reply. The server sent data curl couldn't parse.9FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.11FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.13FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.14FTP weird 227 format. Curl couldn't parse the 227-line the server sent.15FTP can't get host. Couldn't resolve the host IP we got in the 227-line.17FTP couldn't set binary. Couldn't change transfer method to binary.18Partial file. Only a part of the file was transferred.19FTP couldn't download/access the given file, the RETR (or similar) command failed.21FTP quote error. A quote command returned error from the server.22HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.23Write error. Curl couldn't write data to a local filesystem or similar.25FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.26Read error. Various reading problems.27Out of memory. A memory allocation request failed.28Operation timeout. The specified time-out period was reached according to the conditions.30FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!31FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.33HTTP range error. The range "command" didn't work.34HTTP post error. Internal post-request generation error.35SSL connect error. The SSL handshaking failed.36FTP bad download resume. Couldn't continue an earlier aborted download.37FILE couldn't read file. Failed to open the file. Permissions?38LDAP cannot bind. LDAP bind operation failed.39LDAP search failed.41Function not found. A required LDAP function was not found.42Aborted by callback. An application told curl to abort the operation.43Internal error. A function was called with a bad parameter.45Interface error. A specified outgoing interface could not be used.47Too many redirects. When following redirects, curl hit the maximum amount.48Unknown TELNET option specified.49Malformed telnet option.51The peer's SSL certificate or SSH MD5 fingerprint was not ok.52The server didn't reply anything, which here is considered an error.53SSL crypto engine not found.54Cannot set SSL crypto engine as default.55Failed sending network data.56Failure in receiving network data.58Problem with the local certificate.59Couldn't use specified SSL cipher.60Peer certificate cannot be authenticated with known CA certificates.61Unrecognized transfer encoding.62Invalid LDAP URL.63Maximum file size exceeded.64Requested FTP SSL level failed.65Sending the data requires a rewind that failed.66Failed to initialize SSL Engine.67The user name, password, or similar was not accepted and curl failed to log in.68File not found on TFTP server.69Permission problem on TFTP server.70Out of disk space on TFTP server.71Illegal TFTP operation.72Unknown TFTP transfer ID.73File already exists (TFTP).74No such user (TFTP).75Character conversion failed.76Character conversion functions required.77Problem with reading the SSL CA cert (path? access rights?).78The resource referenced in the URL does not exist.79An unspecified error occurred during the SSH session.80Failed to shut down the SSL connection.82Could not load CRL file, missing or wrong format (added in 7.19.0).83Issuer check failed (added in 7.19.0).XXMore error codes will appear here in future releases. The existing ones are meant to never change.
四、用法演示:
1、下载页面:curl -o index.html http://aiezu.com 
2、下载文件并显示简单进度条:curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso 
3、断点续传:#继续完成上次终止的未完成的下载
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
4、伪造来源页面:
#告诉爱E族,我是从百度来的
curl -e http://baidu.com http://aiezu.com
 5、伪造代理设备:#告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令)
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com

#告诉爱E族,我用的是微信内置浏览器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com 
6、http头:# 看看本站的http头是怎么样的
curl -I http://aiezu.com输出:HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8 
6、设置http请求头:curl -H "Cache-Control:no-cache" http://aiezu.com
7、发送表单数据:curl -F "pic=@logo.png" -F "site=aiezu" http://aiezu.com/
8、发送cookie:curl -b "domain=aiezu.com" http://aiezu.com 查看全部
  curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
 
一、curl命令语法:
curl [options] [URL...]
 
二、curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。
参数组参数描述
urlurl需要抓取的一到多个URLs;
多个下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt


-H "name: value"
--header "name: value"
(HTTP)添加一个http header(http请求头);
-H "name:"
--header "name:"
(HTTP)移除一个http header(http请求头);
-A "string"
--user-agent "string"
【参考】
(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
也可以使用“-H”, “--header option”设置此选项;
-e <URL>
--referer <URL>
【参考】
(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;


-I
--head
(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
用于HTTP服务时,获取页面的http头;
  (如:curl -I http://aiezu.com)
用于FTP/FILE时,将会获取文件大小、最后修改时间;
  (如:curl -I file://test.txt)
-i
--include
(HTTP)输出HTTP头和返回内容;
-D <file>
--dump-header <file>
(HTTP)转储http响应头到指定文件;
cookie-b name=data
--cookie name=data
【参考】
(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";

如果行中没有“=”,将把参数值当作cookie文件名;

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;
-c filename
--cookie-jar file name
【参考】
(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
指定参数值为“-”将定向到标准输出“如控制台”;
-j
--junk-session-cookies
(HTTP)告诉curl放弃所有的"session cookies";
相当于重启浏览器;
代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
【参考】
使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"
-p
--proxytunnel
将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp;
--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
【参考】
使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数;
--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlm
http代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm
-U <user:password>
--proxy-user <user:password>
设置代理的用户名和密码;
数据
传输
-G
--get
【参考】
如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; 
-d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
【参考】
(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST数据;
  --data-ascii:HTTP方式POST ascii数据;
  --data-binary:HTTP方式POST二进制数据;
  --data-urlencode:HTTP方式POST数据(进行urlencode);
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;
-F name=@file
-F name=<file
-F name=content
--form name=content
【参考】
(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。

如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;
--form-string <key=value>(HTTP)类似于“--form”,但是“@”、“<”无特殊含义;
-T file
--upload-file file
通过“put”的方式将文件传输到远程网址;

选项参数只使用字符"-",将通过stdin读入文件内容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此参数也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com
断点
续传
-C <offset>
--continue-at <offset>
断点续转,从文件头的指定位置开始继续下载/上传;
offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输;
-r <range>
--range <range>
(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
0-499:最前面500字节;
-500:最后面500字节;
9500-:最前面9500字节;
0-0,-1:最前面和最后面的1字节;
100-199,500-599:两个100字节;



认证
--basic(HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式;
--ntlm(HTTP)使用NTLM身份验证方式,用于HTTP协议;
一般用于IIS使用NTLM的网站;
--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
配合“-u/--user”选项,防止密码使用明文方式发送;
--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
它主要目的是为它的主要目的是为kerberos5认证提供支持支持;
--anyauth(HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式;
-u user:password
--user user:password
使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;

如果你只提供用户名,curl将要求你输入密码;

如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证;

此参数相当于设置http头“Authorization:”;
证书-E <证书[:密码]>
--cert <证书[:密码]>
(SSL)指定“PEM”格式的证书文件和证书密码;
--cert-type <type>(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
默认为“PEM”;
--cacert <CA证书>(SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式;
--capath <CA证书路径>(SSL)告诉curl所以指定目录下的CA证书用来验证;
这些证书必须是“PEM”格式;
--crlfile <file>(HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表;
-k
--insecure
(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。
SSL
其他
--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;
--engine <name>设置一个OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;
--random-file(SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为;
--egd-file <file>(SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名;
-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3
(SSL)使用TLS版本2与远程服务器通讯;
(SSL)使用TLS 1.0版本与远程服务器通讯;
(SSL)使用TLS 1.1版本与远程服务器通讯;
(SSL)使用TLS 1.2版本与远程服务器通讯;
(SSL)使用SSL版本2与远程服务器通讯;
(SSL)使用SSL版本3与远程服务器通讯;
私钥
公钥
--key <key>(SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;
--key-type <type>(SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM;
--pass <phrase>(SSL/SSH)指定私钥文件的密码;
--pubkey <key>(SSH)使用指定文件提供的您公钥;
FTP-P
--ftp-port <接口>
(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡:eth1
IP:8.8.8.8
主机名:aiezu.com
可以加端口号:eth1:20000-21000;
--crlf(FTP)上传时将换行符(LF)转换为回车换行(CRLF);
--ftp-account [data](FTP)ftp帐号信息;
--ftp-method [method](FTP)可选值:multicwd/nocwd/singlecwd;
--ftp-pasv(FTP)使用使用PASV(被动)/EPSV模式;
--ftp-skip-pasv-ip(FTP)使用PASV的时,跳过指定IP;
--ftp-create-dirs(FTP)上传时自动创建远程目录;
-l
--list-only
(FTP)列出ftp文件列表;
-B
--use-ascii
(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。
--disable-epsv(FTP)告诉curl在PASV(被动模式)时不要使用EPSV;
--disable-eprt(FTP)告诉curl在主动模式时禁用EPRT和LPRT;
限速--limit-rate <speed>限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”;
-y
--speed-time <time>
If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.
-Y
--speed-limit <speed>
If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.
其他
选项
-0/--http1.0(HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1;
--interface <name>使用指定的网卡接口访问;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com
-X <command>
--request <command>
(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET;
--keepalive-time <seconds>设置keepalive时间
--no-keepalive关闭keepalive功能;
--no-buffer禁用对输出流缓冲;
--buffer启用输出流缓冲;
-L
--location
(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转)
--location-trusted(HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码;
--compressed(HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压;
--connect-timeout <seconds>指定最大连接超时,单位“秒”;
-m seconds
--max-time seconds
限制整个curl操作的最长时间,单位为秒;
-s
--silent
安静模式。不要显示进度表或错误消息;
-#
--progress-bar
显示进度条;
错误
选项
-f
--fail
(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”;
--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>
失败重试次数;
重试间隔时间;
最大重试时间;
-S
--show-error
安静模式下显示错误信息;
--stderr <file>错误信息保存文件;
输出-o file
--output file
将返回内容输出到文件。
如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  将保存为:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根据规则创建保存目录,参考:“--create-dirs”

指定“-”将定向到标准输出“如控制台”; 
-O
--remote-name
将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录);
--create-dirs与“-o”参数配合使用,创建必要的本地目录层次结构
-w
--write-out format
操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”

格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取;

格式参数可以使用“\n”、“\r”、“\t”等转义字符;
调试--trace <file>转储所有传入和传出的数据到文件,包括描述信息;
使用“-”作为文件名将输出发送到标准输出。
--trace-ascii file转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
使用“-”作为文件名将输出发送到标准输出。
这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项;
--trace-time转储文件中添加时间信息;
-K
--config <config file>
从配置文件中读取参数,参考:http://curl.haxx.se/docs/
-v
--verbose
显示更详细的信息,调试时使用;
帮助-M
--manual
显示完整的帮助手册;
-h
--help
linux curl用法帮助;
 
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。
退出码错误描述
1Unsupported protocol. This build of curl has no support for this protocol.
2Failed to initialize.
3URL malformed. The syntax was not correct.
5Couldn't resolve proxy. The given proxy host could not be resolved.
6Couldn't resolve host. The given remote host was not resolved.
7Failed to connect to host.
8FTP weird server reply. The server sent data curl couldn't parse.
9FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.
11FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.
13FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.
14FTP weird 227 format. Curl couldn't parse the 227-line the server sent.
15FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
17FTP couldn't set binary. Couldn't change transfer method to binary.
18Partial file. Only a part of the file was transferred.
19FTP couldn't download/access the given file, the RETR (or similar) command failed.
21FTP quote error. A quote command returned error from the server.
22HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.
23Write error. Curl couldn't write data to a local filesystem or similar.
25FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.
26Read error. Various reading problems.
27Out of memory. A memory allocation request failed.
28Operation timeout. The specified time-out period was reached according to the conditions.
30FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!
31FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.
33HTTP range error. The range "command" didn't work.
34HTTP post error. Internal post-request generation error.
35SSL connect error. The SSL handshaking failed.
36FTP bad download resume. Couldn't continue an earlier aborted download.
37FILE couldn't read file. Failed to open the file. Permissions?
38LDAP cannot bind. LDAP bind operation failed.
39LDAP search failed.
41Function not found. A required LDAP function was not found.
42Aborted by callback. An application told curl to abort the operation.
43Internal error. A function was called with a bad parameter.
45Interface error. A specified outgoing interface could not be used.
47Too many redirects. When following redirects, curl hit the maximum amount.
48Unknown TELNET option specified.
49Malformed telnet option.
51The peer's SSL certificate or SSH MD5 fingerprint was not ok.
52The server didn't reply anything, which here is considered an error.
53SSL crypto engine not found.
54Cannot set SSL crypto engine as default.
55Failed sending network data.
56Failure in receiving network data.
58Problem with the local certificate.
59Couldn't use specified SSL cipher.
60Peer certificate cannot be authenticated with known CA certificates.
61Unrecognized transfer encoding.
62Invalid LDAP URL.
63Maximum file size exceeded.
64Requested FTP SSL level failed.
65Sending the data requires a rewind that failed.
66Failed to initialize SSL Engine.
67The user name, password, or similar was not accepted and curl failed to log in.
68File not found on TFTP server.
69Permission problem on TFTP server.
70Out of disk space on TFTP server.
71Illegal TFTP operation.
72Unknown TFTP transfer ID.
73File already exists (TFTP).
74No such user (TFTP).
75Character conversion failed.
76Character conversion functions required.
77Problem with reading the SSL CA cert (path? access rights?).
78The resource referenced in the URL does not exist.
79An unspecified error occurred during the SSH session.
80Failed to shut down the SSL connection.
82Could not load CRL file, missing or wrong format (added in 7.19.0).
83Issuer check failed (added in 7.19.0).
XXMore error codes will appear here in future releases. The existing ones are meant to never change.

四、用法演示:
1、下载页面:
curl -o index.html http://aiezu.com
 
2、下载文件并显示简单进度条:
curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
 
3、断点续传:
#继续完成上次终止的未完成的下载
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso

4、伪造来源页面:
#告诉爱E族,我是从百度来的
curl -e http://baidu.com http://aiezu.com

 5、伪造代理设备:
#告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令) 
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com

#告诉爱E族,我用的是微信内置浏览器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com
 
6、http头:
# 看看本站的http头是怎么样的
curl -I http://aiezu.com
输出:
HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
 
6、设置http请求头:
curl -H "Cache-Control:no-cache"  http://aiezu.com

7、发送表单数据:
curl -F "pic=@logo.png" -F "site=aiezu"  http://aiezu.com/

8、发送cookie:
curl -b "domain=aiezu.com"  http://aiezu.com

Linux 常用 ls命令详解

Linuxlinyu520 发表了文章 • 0 个评论 • 257 次浏览 • 2016-11-22 16:06 • 来自相关话题

  ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息。
 
一、ls命令用法:
  ls命令运行在命令提示符终端,用法如下。其中【选项】和为可选参数,可以一零个或者多个选项;【文件】也为可选参数,可以为零个或者多个;如果未指定文件,默认为列出当前目录下的文件:用法:ls [选项]... [文件]... 
二、ls命令参数详解:
下面是爱E族(aiezu.com)收集整理的ls详细选项,如有错误的地方,欢迎指正:参数名描述-a
--all列出所有的文件和目录,包括以“.”号开头的;-A
--almost-all列出所有的文件和目录,包括以“.”号开头的(除了“.”和“..”);-b
--escape 将文件名中的不可见字符,使用“\”开头的八进制转换字符表示;--block-size=SIZE指定每块的大小,如果指定了此值,将显示块数,不再显示文件大小;
可能的值:
  数   字,如:50、1024、102400;
  数字+单位,如:1k、2m、5g、10t;-B
--ignore-backups不要显示以“~”结尾的文件;-c按文件修改时间排序,可以使用“-l”选项显示创建时间;-C使用列的顺序输出文件列表;--color[=WHEN]是否使用不同的颜色区分文件类型,可能的值:
  never:从不;
  always:总是;
  auto:自动。-d
--directory列出目录的信息,而不是列出命令里面的内容;-D
--diredGenerate output designed for Emacs' dired mode;-f 不排序, 使用“-aU”选项, 停用“-lst”选项;-F
--classify给文件名末尾添加一个标识符(*/=@|中的一个):
  “*”:可执行文件;
  “/”:目录;
  “=”:socket文件;
  “@”:符号链接(symbolic link)文件;
  “|”:FIFOs文件;--format=WORD设置输出的格式,可能的值:
  across:相当于“-x”;
  commas:相当于“-m”;
  horizontal:相当于“-x”;
  long:相当于“-l”;
  single-column:相当于“-1”;
  verbose:相当于“-l”;
  vertical:相当于“-C”;--full-time列出文件完整的修改日期和时间;-g(ignored)-G
--no-group不显示文件的用户组;-h
--human-readable自动将文件大小使用方便阅读的方式表示,如:1.23K, 2.4M, 9G;-H
--si单位转换使用1000,而不是1024;
如:1M = 1000K,而不是 1M = 1024K;--indicator-style=WORD按指定样式给文件名追加一个标识,可能的值:
  none:不添加,默认值;
  classify:相当于“-F”;
  file-type: 相当于“-p”;
  slash:目录添加斜杠;-i
--inode输出文件使用的index node;-I
--ignore=PATTERNDo not list implied entries matching shell PATTERN-k
--kilobytes以K为单位显示文件大小,相当于“--block-size=1024”;-l以长列表的形式显示文件的详细信息;-L
--dereference列出符号链接指向的条目,而不是列出符号链接;-m 所有的相连并使用“,”逗号分隔;-n
--numeric-uid-gid使用数字UIDs、GIDs来代替名字;-N
--literal输出原始名称,对特殊字符不做特别处理,如:控制字符;-o 使用没有组信息的长列表格式-p
--file-type根据文件类型,给文件名末尾添加一个标识符(/=@|中的一个);-q
--hide-control-chars以?号代替不可显示字符(默认);--show-control-chars显示控制字符,不使用?号代替;-Q
--quote-name给名称加上双引号;--quoting-style=WORD条目名称使用的引号样式,可选的值:literal、shell、shell-always、c、c-maybe、escape、clocale;-r
--reverse 使用反序排序;-R
--recursive递归列出目录和子目录的文件;-s
--size以块为单位输出文件大小;-S根据文件大小排序;--sort=WORD排序关键词,可能的值: "none", "time", "size", "extension", "version";--time=WORD显示文档的指定时间,而不是显示修改时间,可能的值:
  atime, access, use, ctime or status; 
如果“--sort=time”,也可以使用此时间作为排序键;-t使用修改时间排序;-T
--tabsize=COLS设置tab制表符的长度,而不是使用默认的8字符长度;-u 按最后访问时间排序; 使用“-l”显示最后访问时间;-U 不排序,使用目录的默认顺序;-v 按版本排序-w
--width=COLS指定屏幕宽度,而不是使用屏幕的实际宽度;-x按行的顺序显示,而不是按列的顺序;-X按字母顺序排序;-1每行显示一个文件;--help显示帮助信息;--version输出版本号; 
三、用法演示:
1、“-a”和“-A”选项的区别:[root@aiezu.com ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

[root@aiezu.com ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo
 2、“-b”和“--show-control-chars”选项演示:
  下面通过创建两个含不可显示字符“\001”和“\n”的文件名,来展示“-b”和“--show-control-chars”选项的区别:[root@aiezu.com mm]# touch "`echo -e "aiezu.com\001.txt"`"

[root@aiezu.com mm]# touch "`echo -e "aiezu\n.com.txt"`"

[root@aiezu.com mm]# ls
aiezu.com?.txt aiezu?.com.txt

[root@aiezu mm]# ls -b
aiezu.com\001.txt aiezu\n.com.txt

[root@aiezu.com mm]# ls --show-control-chars
aiezu.com.txt aiezu
.com.txt 
3、文件大小:[root@S2 opt]# ls -l aiezu.com.zip
-rw-r--r-- 1 root root 8007112 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -lh aiezu.com.zip
-rw-r--r-- 1 root root 7.7M Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -l --block-size=1k aiezu.com.zip
-rw-r--r-- 1 root root 7820 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -s aiezu.com.zip
7820 aiezu.com.zip 
4、ls命令“-F 参数”与“-p”参数演示:



5、文件创建时间、访问时间、修改时间:#文件的创建时间
[root@aiezu mm]# ls -lc aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:43 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=ctime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:43:23.572000000 +0800 aiezu.com.conf



#文件的修改时间:
[root@aiezu mm]# ls -l aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:41 aiezu.com.conf

[root@aiezu mm]# ls --full-time aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:41:55.575000000 +0800 aiezu.com.conf



#文件的访问时间:
[root@aiezu mm]# ls -lu aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:42 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=atime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:42:15.060000000 +0800 aiezu.com.conf 查看全部
  ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息。
 
一、ls命令用法:
  ls命令运行在命令提示符终端,用法如下。其中【选项】和为可选参数,可以一零个或者多个选项;【文件】也为可选参数,可以为零个或者多个;如果未指定文件,默认为列出当前目录下的文件:
用法:ls [选项]... [文件]...
 
二、ls命令参数详解:
下面是爱E族(aiezu.com)收集整理的ls详细选项,如有错误的地方,欢迎指正:
参数名描述
-a
--all
列出所有的文件和目录,包括以“.”号开头的;
-A
--almost-all
列出所有的文件和目录,包括以“.”号开头的(除了“.”和“..”);
-b
--escape 
将文件名中的不可见字符,使用“\”开头的八进制转换字符表示;
--block-size=SIZE指定每块的大小,如果指定了此值,将显示块数,不再显示文件大小;
可能的值:
  数   字,如:50、1024、102400;
  数字+单位,如:1k、2m、5g、10t;
-B
--ignore-backups
不要显示以“~”结尾的文件;
-c按文件修改时间排序,可以使用“-l”选项显示创建时间;
-C使用列的顺序输出文件列表;
--color[=WHEN]是否使用不同的颜色区分文件类型,可能的值:
  never:从不;
  always:总是;
  auto:自动。
-d
--directory
列出目录的信息,而不是列出命令里面的内容;
-D
--dired
Generate output designed for Emacs' dired mode;
-f 不排序, 使用“-aU”选项, 停用“-lst”选项;
-F
--classify
给文件名末尾添加一个标识符(*/=@|中的一个):
  “*”:可执行文件;
  “/”:目录;
  “=”:socket文件;
  “@”:符号链接(symbolic link)文件;
  “|”:FIFOs文件;
--format=WORD设置输出的格式,可能的值:
  across:相当于“-x”;
  commas:相当于“-m”;
  horizontal:相当于“-x”;
  long:相当于“-l”;
  single-column:相当于“-1”;
  verbose:相当于“-l”;
  vertical:相当于“-C”;
--full-time列出文件完整的修改日期和时间;
-g(ignored)
-G
--no-group
不显示文件的用户组;
-h
--human-readable
自动将文件大小使用方便阅读的方式表示,如:1.23K, 2.4M, 9G;
-H
--si
单位转换使用1000,而不是1024;
如:1M = 1000K,而不是 1M = 1024K;
--indicator-style=WORD按指定样式给文件名追加一个标识,可能的值:
  none:不添加,默认值;
  classify:相当于“-F”;
  file-type: 相当于“-p”;
  slash:目录添加斜杠;
-i
--inode
输出文件使用的index node;
-I
--ignore=PATTERN
Do not list implied entries matching shell PATTERN
-k
--kilobytes
以K为单位显示文件大小,相当于“--block-size=1024”;
-l以长列表的形式显示文件的详细信息;
-L
--dereference
列出符号链接指向的条目,而不是列出符号链接;
-m 所有的相连并使用“,”逗号分隔;
-n
--numeric-uid-gid
使用数字UIDs、GIDs来代替名字;
-N
--literal
输出原始名称,对特殊字符不做特别处理,如:控制字符;
-o 使用没有组信息的长列表格式
-p
--file-type
根据文件类型,给文件名末尾添加一个标识符(/=@|中的一个);
-q
--hide-control-chars
以?号代替不可显示字符(默认);
--show-control-chars显示控制字符,不使用?号代替;
-Q
--quote-name
给名称加上双引号;
--quoting-style=WORD条目名称使用的引号样式,可选的值:literal、shell、shell-always、c、c-maybe、escape、clocale;
-r
--reverse 
使用反序排序;
-R
--recursive
递归列出目录和子目录的文件;
-s
--size
以块为单位输出文件大小;
-S根据文件大小排序;
--sort=WORD排序关键词,可能的值: "none", "time", "size", "extension", "version";
--time=WORD显示文档的指定时间,而不是显示修改时间,可能的值:
  atime, access, use, ctime or status; 
如果“--sort=time”,也可以使用此时间作为排序键;
-t使用修改时间排序;
-T
--tabsize=COLS
设置tab制表符的长度,而不是使用默认的8字符长度;
-u 按最后访问时间排序; 使用“-l”显示最后访问时间;
-U 不排序,使用目录的默认顺序;
-v 按版本排序
-w
--width=COLS
指定屏幕宽度,而不是使用屏幕的实际宽度;
-x按行的顺序显示,而不是按列的顺序;
-X按字母顺序排序;
-1每行显示一个文件;
--help显示帮助信息;
--version输出版本号;
 
三、用法演示:
1、“-a”和“-A”选项的区别:
[root@aiezu.com ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

[root@aiezu.com ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

 2、“-b”和“--show-control-chars”选项演示:
  下面通过创建两个含不可显示字符“\001”和“\n”的文件名,来展示“-b”和“--show-control-chars”选项的区别:
[root@aiezu.com mm]# touch "`echo -e "aiezu.com\001.txt"`"

[root@aiezu.com mm]# touch "`echo -e "aiezu\n.com.txt"`"

[root@aiezu.com mm]# ls
aiezu.com?.txt aiezu?.com.txt

[root@aiezu mm]# ls -b
aiezu.com\001.txt aiezu\n.com.txt

[root@aiezu.com mm]# ls --show-control-chars
aiezu.com.txt aiezu
.com.txt
 
3、文件大小:
[root@S2 opt]# ls -l aiezu.com.zip 
-rw-r--r-- 1 root root 8007112 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -lh aiezu.com.zip
-rw-r--r-- 1 root root 7.7M Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -l --block-size=1k aiezu.com.zip
-rw-r--r-- 1 root root 7820 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -s aiezu.com.zip
7820 aiezu.com.zip
 
4、ls命令“-F 参数”与“-p”参数演示:
未标题-1.png

5、文件创建时间、访问时间、修改时间:
#文件的创建时间
[root@aiezu mm]# ls -lc aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:43 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=ctime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:43:23.572000000 +0800 aiezu.com.conf



#文件的修改时间:
[root@aiezu mm]# ls -l aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:41 aiezu.com.conf

[root@aiezu mm]# ls --full-time aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:41:55.575000000 +0800 aiezu.com.conf



#文件的访问时间:
[root@aiezu mm]# ls -lu aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:42 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=atime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:42:15.060000000 +0800 aiezu.com.conf

Linux忘记mysql root密码解决方法

Mysqllinyu520 发表了文章 • 0 个评论 • 356 次浏览 • 2016-11-20 15:52 • 来自相关话题

一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables
二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项) 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法 查看全部
一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:
[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables
保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:
/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables

二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges
  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:
[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead
 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 
  • 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;
  • 停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项)
 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法

Linux如何查看PHP版本号

回复

Linuxliuliangsong 回复了问题 • 1 人关注 • 1 个回复 • 432 次浏览 • 2016-10-24 17:51 • 来自相关话题

Linux curl命令详解

Linuxliuliangsong 发表了文章 • 0 个评论 • 2178 次浏览 • 2016-11-23 17:57 • 来自相关话题

  curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
 
一、curl命令语法:curl [options] [URL...] 
二、curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。参数组参数描述urlurl需要抓取的一到多个URLs;
多个下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt请

头-H "name: value"
--header "name: value"(HTTP)添加一个http header(http请求头);-H "name:"
--header "name:"(HTTP)移除一个http header(http请求头);-A "string"
--user-agent "string"
【参考】(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
也可以使用“-H”, “--header option”设置此选项;-e <URL>
--referer <URL>
【参考】(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;响

头-I
--head(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
用于HTTP服务时,获取页面的http头;
  (如:curl -I http://aiezu.com)
用于FTP/FILE时,将会获取文件大小、最后修改时间;
  (如:curl -I file://test.txt)-i
--include(HTTP)输出HTTP头和返回内容;-D <file>
--dump-header <file>(HTTP)转储http响应头到指定文件;cookie-b name=data
--cookie name=data
【参考】(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";

如果行中没有“=”,将把参数值当作cookie文件名;

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;-c filename
--cookie-jar file name
【参考】(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
指定参数值为“-”将定向到标准输出“如控制台”;-j
--junk-session-cookies(HTTP)告诉curl放弃所有的"session cookies";
相当于重启浏览器;代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
【参考】使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"-p
--proxytunnel将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp;--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
【参考】使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数;--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlmhttp代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm-U <user:password>
--proxy-user <user:password>设置代理的用户名和密码;数据
传输-G
--get
【参考】如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; -d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
【参考】(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST数据;
  --data-ascii:HTTP方式POST ascii数据;
  --data-binary:HTTP方式POST二进制数据;
  --data-urlencode:HTTP方式POST数据(进行urlencode);
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;-F name=@file
-F name=<file
-F name=content
--form name=content
【参考】(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。

如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;--form-string <key=value>(HTTP)类似于“--form”,但是“@”、“<”无特殊含义;-T file
--upload-file file通过“put”的方式将文件传输到远程网址;

选项参数只使用字符"-",将通过stdin读入文件内容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此参数也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com断点
续传-C <offset>
--continue-at <offset>断点续转,从文件头的指定位置开始继续下载/上传;
offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输;-r <range>
--range <range>(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
0-499:最前面500字节;
-500:最后面500字节;
9500-:最前面9500字节;
0-0,-1:最前面和最后面的1字节;
100-199,500-599:两个100字节;


认证--basic(HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式;--ntlm(HTTP)使用NTLM身份验证方式,用于HTTP协议;
一般用于IIS使用NTLM的网站;--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
配合“-u/--user”选项,防止密码使用明文方式发送;--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
它主要目的是为它的主要目的是为kerberos5认证提供支持支持;--anyauth(HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式;-u user:password
--user user:password使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;

如果你只提供用户名,curl将要求你输入密码;

如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证;

此参数相当于设置http头“Authorization:”;证书-E <证书[:密码]>
--cert <证书[:密码]>(SSL)指定“PEM”格式的证书文件和证书密码;--cert-type <type>(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
默认为“PEM”;--cacert <CA证书>(SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式;--capath <CA证书路径>(SSL)告诉curl所以指定目录下的CA证书用来验证;
这些证书必须是“PEM”格式;--crlfile <file>(HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表;-k
--insecure(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。SSL
其他--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;--engine <name>设置一个OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;--random-file(SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为;--egd-file <file>(SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名;-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3(SSL)使用TLS版本2与远程服务器通讯;
(SSL)使用TLS 1.0版本与远程服务器通讯;
(SSL)使用TLS 1.1版本与远程服务器通讯;
(SSL)使用TLS 1.2版本与远程服务器通讯;
(SSL)使用SSL版本2与远程服务器通讯;
(SSL)使用SSL版本3与远程服务器通讯;私钥
公钥--key <key>(SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;--key-type <type>(SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM;--pass <phrase>(SSL/SSH)指定私钥文件的密码;--pubkey <key>(SSH)使用指定文件提供的您公钥;FTP-P
--ftp-port <接口>(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡:eth1
IP:8.8.8.8
主机名:aiezu.com
可以加端口号:eth1:20000-21000;--crlf(FTP)上传时将换行符(LF)转换为回车换行(CRLF);--ftp-account [data](FTP)ftp帐号信息;--ftp-method [method](FTP)可选值:multicwd/nocwd/singlecwd;--ftp-pasv(FTP)使用使用PASV(被动)/EPSV模式;--ftp-skip-pasv-ip(FTP)使用PASV的时,跳过指定IP;--ftp-create-dirs(FTP)上传时自动创建远程目录;-l
--list-only(FTP)列出ftp文件列表;-B
--use-ascii(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。--disable-epsv(FTP)告诉curl在PASV(被动模式)时不要使用EPSV;--disable-eprt(FTP)告诉curl在主动模式时禁用EPRT和LPRT;限速--limit-rate <speed>限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”;-y
--speed-time <time>If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.-Y
--speed-limit <speed>If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.其他
选项-0/--http1.0(HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1;--interface <name>使用指定的网卡接口访问;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com-X <command>
--request <command>(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET;--keepalive-time <seconds>设置keepalive时间--no-keepalive关闭keepalive功能;--no-buffer禁用对输出流缓冲;--buffer启用输出流缓冲;-L
--location(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转)--location-trusted(HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码;--compressed(HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压;--connect-timeout <seconds>指定最大连接超时,单位“秒”;-m seconds
--max-time seconds限制整个curl操作的最长时间,单位为秒;-s
--silent安静模式。不要显示进度表或错误消息;-#
--progress-bar显示进度条;错误
选项-f
--fail(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”;--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>失败重试次数;
重试间隔时间;
最大重试时间;-S
--show-error安静模式下显示错误信息;--stderr <file>错误信息保存文件;输出-o file
--output file将返回内容输出到文件。
如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  将保存为:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根据规则创建保存目录,参考:“--create-dirs”

指定“-”将定向到标准输出“如控制台”; -O
--remote-name将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录);--create-dirs与“-o”参数配合使用,创建必要的本地目录层次结构-w
--write-out format操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”

格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取;

格式参数可以使用“\n”、“\r”、“\t”等转义字符;调试--trace <file>转储所有传入和传出的数据到文件,包括描述信息;
使用“-”作为文件名将输出发送到标准输出。--trace-ascii file转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
使用“-”作为文件名将输出发送到标准输出。
这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项;--trace-time转储文件中添加时间信息;-K
--config <config file>从配置文件中读取参数,参考:http://curl.haxx.se/docs/-v
--verbose显示更详细的信息,调试时使用;帮助-M
--manual显示完整的帮助手册;-h
--helplinux curl用法帮助; 
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。退出码错误描述1Unsupported protocol. This build of curl has no support for this protocol.2Failed to initialize.3URL malformed. The syntax was not correct.5Couldn't resolve proxy. The given proxy host could not be resolved.6Couldn't resolve host. The given remote host was not resolved.7Failed to connect to host.8FTP weird server reply. The server sent data curl couldn't parse.9FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.11FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.13FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.14FTP weird 227 format. Curl couldn't parse the 227-line the server sent.15FTP can't get host. Couldn't resolve the host IP we got in the 227-line.17FTP couldn't set binary. Couldn't change transfer method to binary.18Partial file. Only a part of the file was transferred.19FTP couldn't download/access the given file, the RETR (or similar) command failed.21FTP quote error. A quote command returned error from the server.22HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.23Write error. Curl couldn't write data to a local filesystem or similar.25FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.26Read error. Various reading problems.27Out of memory. A memory allocation request failed.28Operation timeout. The specified time-out period was reached according to the conditions.30FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!31FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.33HTTP range error. The range "command" didn't work.34HTTP post error. Internal post-request generation error.35SSL connect error. The SSL handshaking failed.36FTP bad download resume. Couldn't continue an earlier aborted download.37FILE couldn't read file. Failed to open the file. Permissions?38LDAP cannot bind. LDAP bind operation failed.39LDAP search failed.41Function not found. A required LDAP function was not found.42Aborted by callback. An application told curl to abort the operation.43Internal error. A function was called with a bad parameter.45Interface error. A specified outgoing interface could not be used.47Too many redirects. When following redirects, curl hit the maximum amount.48Unknown TELNET option specified.49Malformed telnet option.51The peer's SSL certificate or SSH MD5 fingerprint was not ok.52The server didn't reply anything, which here is considered an error.53SSL crypto engine not found.54Cannot set SSL crypto engine as default.55Failed sending network data.56Failure in receiving network data.58Problem with the local certificate.59Couldn't use specified SSL cipher.60Peer certificate cannot be authenticated with known CA certificates.61Unrecognized transfer encoding.62Invalid LDAP URL.63Maximum file size exceeded.64Requested FTP SSL level failed.65Sending the data requires a rewind that failed.66Failed to initialize SSL Engine.67The user name, password, or similar was not accepted and curl failed to log in.68File not found on TFTP server.69Permission problem on TFTP server.70Out of disk space on TFTP server.71Illegal TFTP operation.72Unknown TFTP transfer ID.73File already exists (TFTP).74No such user (TFTP).75Character conversion failed.76Character conversion functions required.77Problem with reading the SSL CA cert (path? access rights?).78The resource referenced in the URL does not exist.79An unspecified error occurred during the SSH session.80Failed to shut down the SSL connection.82Could not load CRL file, missing or wrong format (added in 7.19.0).83Issuer check failed (added in 7.19.0).XXMore error codes will appear here in future releases. The existing ones are meant to never change.
四、用法演示:
1、下载页面:curl -o index.html http://aiezu.com 
2、下载文件并显示简单进度条:curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso 
3、断点续传:#继续完成上次终止的未完成的下载
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
4、伪造来源页面:
#告诉爱E族,我是从百度来的
curl -e http://baidu.com http://aiezu.com
 5、伪造代理设备:#告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令)
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com

#告诉爱E族,我用的是微信内置浏览器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com 
6、http头:# 看看本站的http头是怎么样的
curl -I http://aiezu.com输出:HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8 
6、设置http请求头:curl -H "Cache-Control:no-cache" http://aiezu.com
7、发送表单数据:curl -F "pic=@logo.png" -F "site=aiezu" http://aiezu.com/
8、发送cookie:curl -b "domain=aiezu.com" http://aiezu.com 查看全部
  curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
 
一、curl命令语法:
curl [options] [URL...]
 
二、curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。
参数组参数描述
urlurl需要抓取的一到多个URLs;
多个下面通配符的方式:
  1、http://{www,ftp,mail}.aiezu.com;
  2、http://aiezu.com/images/[001-999].jpg;
  3、http://aiezu.com/images/[1-999].html;
  4、ftp://aiezu.com/file[a-z].txt


-H "name: value"
--header "name: value"
(HTTP)添加一个http header(http请求头);
-H "name:"
--header "name:"
(HTTP)移除一个http header(http请求头);
-A "string"
--user-agent "string"
【参考】
(HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。
也可以使用“-H”, “--header option”设置此选项;
-e <URL>
--referer <URL>
【参考】
(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面;
-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;


-I
--head
(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。
用于HTTP服务时,获取页面的http头;
  (如:curl -I http://aiezu.com)
用于FTP/FILE时,将会获取文件大小、最后修改时间;
  (如:curl -I file://test.txt)
-i
--include
(HTTP)输出HTTP头和返回内容;
-D <file>
--dump-header <file>
(HTTP)转储http响应头到指定文件;
cookie-b name=data
--cookie name=data
【参考】
(HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2";

如果行中没有“=”,将把参数值当作cookie文件名;

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;
-c filename
--cookie-jar file name
【参考】
(HTTP)完成操作后将服务器返回的cookies保存到指定的文件;
指定参数值为“-”将定向到标准输出“如控制台”;
-j
--junk-session-cookies
(HTTP)告诉curl放弃所有的"session cookies";
相当于重启浏览器;
代理-x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port]
【参考】
使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;
-x "http_proxy://aiezu:123@aiezu.com:80"
-p
--proxytunnel
将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp;
--socks4 <host[:port]>
--socks4a <host[:port]>
--socks5 <host[:port]>
【参考】
使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数;
--proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlm
http代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm
-U <user:password>
--proxy-user <user:password>
设置代理的用户名和密码;
数据
传输
-G
--get
【参考】
如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; 
-d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
【参考】
(HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded")
  -d,--data:HTTP方式POST数据;
  --data-ascii:HTTP方式POST ascii数据;
  --data-binary:HTTP方式POST二进制数据;
  --data-urlencode:HTTP方式POST数据(进行urlencode);
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;
-F name=@file
-F name=<file
-F name=content
--form name=content
【参考】
(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。

如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com

如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;
--form-string <key=value>(HTTP)类似于“--form”,但是“@”、“<”无特殊含义;
-T file
--upload-file file
通过“put”的方式将文件传输到远程网址;

选项参数只使用字符"-",将通过stdin读入文件内容;
如:
cat test.txt|curl "http://aiezu.com/a.php" -T - 
curl "http://aiezu.com/a.php" -T - <test.txt

此参数也可以使用通配符:
curl -T "{file1,file2}" http://aiezu.com
curl -T "img[1-1000].png" http://aiezu.com
断点
续传
-C <offset>
--continue-at <offset>
断点续转,从文件头的指定位置开始继续下载/上传;
offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输;
-r <range>
--range <range>
(HTTP/FTP/SFTP/FILE) 只传输内容的指定部分:
0-499:最前面500字节;
-500:最后面500字节;
9500-:最前面9500字节;
0-0,-1:最前面和最后面的1字节;
100-199,500-599:两个100字节;



认证
--basic(HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式;
--ntlm(HTTP)使用NTLM身份验证方式,用于HTTP协议;
一般用于IIS使用NTLM的网站;
--digest(HTTP)使用HTTP Digest authentication加密,用于HTTP协议;
配合“-u/--user”选项,防止密码使用明文方式发送;
--negotiate(HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议;
它主要目的是为它的主要目的是为kerberos5认证提供支持支持;
--anyauth(HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式;
-u user:password
--user user:password
使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项;

如果你只提供用户名,curl将要求你输入密码;

如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证;

此参数相当于设置http头“Authorization:”;
证书-E <证书[:密码]>
--cert <证书[:密码]>
(SSL)指定“PEM”格式的证书文件和证书密码;
--cert-type <type>(SSL)告诉curl所提供证书的类型:PEM、DER、ENG等;
默认为“PEM”;
--cacert <CA证书>(SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式;
--capath <CA证书路径>(SSL)告诉curl所以指定目录下的CA证书用来验证;
这些证书必须是“PEM”格式;
--crlfile <file>(HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表;
-k
--insecure
(SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。
SSL
其他
--ciphers <list of ciphers>(SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”;
--engine <name>设置一个OpenSSL加密引擎用于加密操作;
使用“curl --engine list”查看支持的加密引擎列表;
--random-file(SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为;
--egd-file <file>(SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名;
-1/--tlsv1
--tlsv1.0
--tlsv1.1
--tlsv1.2
-2/--sslv2
-3/--sslv3
(SSL)使用TLS版本2与远程服务器通讯;
(SSL)使用TLS 1.0版本与远程服务器通讯;
(SSL)使用TLS 1.1版本与远程服务器通讯;
(SSL)使用TLS 1.2版本与远程服务器通讯;
(SSL)使用SSL版本2与远程服务器通讯;
(SSL)使用SSL版本3与远程服务器通讯;
私钥
公钥
--key <key>(SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”;
--key-type <type>(SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM;
--pass <phrase>(SSL/SSH)指定私钥文件的密码;
--pubkey <key>(SSH)使用指定文件提供的您公钥;
FTP-P
--ftp-port <接口>
(FTP)FTP主动模式时,设置一个地址等待服务器的连接,如:
网卡:eth1
IP:8.8.8.8
主机名:aiezu.com
可以加端口号:eth1:20000-21000;
--crlf(FTP)上传时将换行符(LF)转换为回车换行(CRLF);
--ftp-account [data](FTP)ftp帐号信息;
--ftp-method [method](FTP)可选值:multicwd/nocwd/singlecwd;
--ftp-pasv(FTP)使用使用PASV(被动)/EPSV模式;
--ftp-skip-pasv-ip(FTP)使用PASV的时,跳过指定IP;
--ftp-create-dirs(FTP)上传时自动创建远程目录;
-l
--list-only
(FTP)列出ftp文件列表;
-B
--use-ascii
(FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。
--disable-epsv(FTP)告诉curl在PASV(被动模式)时不要使用EPSV;
--disable-eprt(FTP)告诉curl在主动模式时禁用EPRT和LPRT;
限速--limit-rate <speed>限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”;
-y
--speed-time <time>
If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y.
This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option.
-Y
--speed-limit <speed>
If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set.
其他
选项
-0/--http1.0(HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1;
--interface <name>使用指定的网卡接口访问;
curl --interface eth0 http://aiezu.com
curl --interface 10.0.0.101 http://aiezu.com
-X <command>
--request <command>
(HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET;
--keepalive-time <seconds>设置keepalive时间
--no-keepalive关闭keepalive功能;
--no-buffer禁用对输出流缓冲;
--buffer启用输出流缓冲;
-L
--location
(HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面;
(在http响应码为3XX时使用,如301跳转、302跳转)
--location-trusted(HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码;
--compressed(HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压;
--connect-timeout <seconds>指定最大连接超时,单位“秒”;
-m seconds
--max-time seconds
限制整个curl操作的最长时间,单位为秒;
-s
--silent
安静模式。不要显示进度表或错误消息;
-#
--progress-bar
显示进度条;
错误
选项
-f
--fail
(HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”;
--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>
失败重试次数;
重试间隔时间;
最大重试时间;
-S
--show-error
安静模式下显示错误信息;
--stderr <file>错误信息保存文件;
输出-o file
--output file
将返回内容输出到文件。
如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如:
  curl "http://aiezu.com/{a,b}.txt" -o "#1.txt";
  将保存为:“a.txt”,“b.txt”;

  curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt";
  将保存为:a1.txt、a2.txt、a3.txt、b1.txt、b2.txt、b3.txt

  如果要根据规则创建保存目录,参考:“--create-dirs”

指定“-”将定向到标准输出“如控制台”; 
-O
--remote-name
将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录);
--create-dirs与“-o”参数配合使用,创建必要的本地目录层次结构
-w
--write-out format
操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-”

格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取;

格式参数可以使用“\n”、“\r”、“\t”等转义字符;
调试--trace <file>转储所有传入和传出的数据到文件,包括描述信息;
使用“-”作为文件名将输出发送到标准输出。
--trace-ascii file转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读;
使用“-”作为文件名将输出发送到标准输出。
这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项;
--trace-time转储文件中添加时间信息;
-K
--config <config file>
从配置文件中读取参数,参考:http://curl.haxx.se/docs/
-v
--verbose
显示更详细的信息,调试时使用;
帮助-M
--manual
显示完整的帮助手册;
-h
--help
linux curl用法帮助;
 
三、Linux curl命令退出码:
下面是linux curl命令的错误代码和她们的相应的错误消息,可能会出现在恶劣的环境。
退出码错误描述
1Unsupported protocol. This build of curl has no support for this protocol.
2Failed to initialize.
3URL malformed. The syntax was not correct.
5Couldn't resolve proxy. The given proxy host could not be resolved.
6Couldn't resolve host. The given remote host was not resolved.
7Failed to connect to host.
8FTP weird server reply. The server sent data curl couldn't parse.
9FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn't exist on the server.
11FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.
13FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.
14FTP weird 227 format. Curl couldn't parse the 227-line the server sent.
15FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
17FTP couldn't set binary. Couldn't change transfer method to binary.
18Partial file. Only a part of the file was transferred.
19FTP couldn't download/access the given file, the RETR (or similar) command failed.
21FTP quote error. A quote command returned error from the server.
22HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f/--fail is used.
23Write error. Curl couldn't write data to a local filesystem or similar.
25FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading.
26Read error. Various reading problems.
27Out of memory. A memory allocation request failed.
28Operation timeout. The specified time-out period was reached according to the conditions.
30FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!
31FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers.
33HTTP range error. The range "command" didn't work.
34HTTP post error. Internal post-request generation error.
35SSL connect error. The SSL handshaking failed.
36FTP bad download resume. Couldn't continue an earlier aborted download.
37FILE couldn't read file. Failed to open the file. Permissions?
38LDAP cannot bind. LDAP bind operation failed.
39LDAP search failed.
41Function not found. A required LDAP function was not found.
42Aborted by callback. An application told curl to abort the operation.
43Internal error. A function was called with a bad parameter.
45Interface error. A specified outgoing interface could not be used.
47Too many redirects. When following redirects, curl hit the maximum amount.
48Unknown TELNET option specified.
49Malformed telnet option.
51The peer's SSL certificate or SSH MD5 fingerprint was not ok.
52The server didn't reply anything, which here is considered an error.
53SSL crypto engine not found.
54Cannot set SSL crypto engine as default.
55Failed sending network data.
56Failure in receiving network data.
58Problem with the local certificate.
59Couldn't use specified SSL cipher.
60Peer certificate cannot be authenticated with known CA certificates.
61Unrecognized transfer encoding.
62Invalid LDAP URL.
63Maximum file size exceeded.
64Requested FTP SSL level failed.
65Sending the data requires a rewind that failed.
66Failed to initialize SSL Engine.
67The user name, password, or similar was not accepted and curl failed to log in.
68File not found on TFTP server.
69Permission problem on TFTP server.
70Out of disk space on TFTP server.
71Illegal TFTP operation.
72Unknown TFTP transfer ID.
73File already exists (TFTP).
74No such user (TFTP).
75Character conversion failed.
76Character conversion functions required.
77Problem with reading the SSL CA cert (path? access rights?).
78The resource referenced in the URL does not exist.
79An unspecified error occurred during the SSH session.
80Failed to shut down the SSL connection.
82Could not load CRL file, missing or wrong format (added in 7.19.0).
83Issuer check failed (added in 7.19.0).
XXMore error codes will appear here in future releases. The existing ones are meant to never change.

四、用法演示:
1、下载页面:
curl -o index.html http://aiezu.com
 
2、下载文件并显示简单进度条:
curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso
 
3、断点续传:
#继续完成上次终止的未完成的下载
curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso

4、伪造来源页面:
#告诉爱E族,我是从百度来的
curl -e http://baidu.com http://aiezu.com

 5、伪造代理设备:
#告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令) 
curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://aiezu.com

#告诉爱E族,我用的是微信内置浏览器
curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0" http://aiezu.com
 
6、http头:
# 看看本站的http头是怎么样的
curl -I http://aiezu.com
输出:
HTTP/1.1 200 OK
Date: Fri, 25 Nov 2016 16:45:49 GMT
Server: Apache
Set-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
 
6、设置http请求头:
curl -H "Cache-Control:no-cache"  http://aiezu.com

7、发送表单数据:
curl -F "pic=@logo.png" -F "site=aiezu"  http://aiezu.com/

8、发送cookie:
curl -b "domain=aiezu.com"  http://aiezu.com

Linux 常用 ls命令详解

Linuxlinyu520 发表了文章 • 0 个评论 • 257 次浏览 • 2016-11-22 16:06 • 来自相关话题

  ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息。
 
一、ls命令用法:
  ls命令运行在命令提示符终端,用法如下。其中【选项】和为可选参数,可以一零个或者多个选项;【文件】也为可选参数,可以为零个或者多个;如果未指定文件,默认为列出当前目录下的文件:用法:ls [选项]... [文件]... 
二、ls命令参数详解:
下面是爱E族(aiezu.com)收集整理的ls详细选项,如有错误的地方,欢迎指正:参数名描述-a
--all列出所有的文件和目录,包括以“.”号开头的;-A
--almost-all列出所有的文件和目录,包括以“.”号开头的(除了“.”和“..”);-b
--escape 将文件名中的不可见字符,使用“\”开头的八进制转换字符表示;--block-size=SIZE指定每块的大小,如果指定了此值,将显示块数,不再显示文件大小;
可能的值:
  数   字,如:50、1024、102400;
  数字+单位,如:1k、2m、5g、10t;-B
--ignore-backups不要显示以“~”结尾的文件;-c按文件修改时间排序,可以使用“-l”选项显示创建时间;-C使用列的顺序输出文件列表;--color[=WHEN]是否使用不同的颜色区分文件类型,可能的值:
  never:从不;
  always:总是;
  auto:自动。-d
--directory列出目录的信息,而不是列出命令里面的内容;-D
--diredGenerate output designed for Emacs' dired mode;-f 不排序, 使用“-aU”选项, 停用“-lst”选项;-F
--classify给文件名末尾添加一个标识符(*/=@|中的一个):
  “*”:可执行文件;
  “/”:目录;
  “=”:socket文件;
  “@”:符号链接(symbolic link)文件;
  “|”:FIFOs文件;--format=WORD设置输出的格式,可能的值:
  across:相当于“-x”;
  commas:相当于“-m”;
  horizontal:相当于“-x”;
  long:相当于“-l”;
  single-column:相当于“-1”;
  verbose:相当于“-l”;
  vertical:相当于“-C”;--full-time列出文件完整的修改日期和时间;-g(ignored)-G
--no-group不显示文件的用户组;-h
--human-readable自动将文件大小使用方便阅读的方式表示,如:1.23K, 2.4M, 9G;-H
--si单位转换使用1000,而不是1024;
如:1M = 1000K,而不是 1M = 1024K;--indicator-style=WORD按指定样式给文件名追加一个标识,可能的值:
  none:不添加,默认值;
  classify:相当于“-F”;
  file-type: 相当于“-p”;
  slash:目录添加斜杠;-i
--inode输出文件使用的index node;-I
--ignore=PATTERNDo not list implied entries matching shell PATTERN-k
--kilobytes以K为单位显示文件大小,相当于“--block-size=1024”;-l以长列表的形式显示文件的详细信息;-L
--dereference列出符号链接指向的条目,而不是列出符号链接;-m 所有的相连并使用“,”逗号分隔;-n
--numeric-uid-gid使用数字UIDs、GIDs来代替名字;-N
--literal输出原始名称,对特殊字符不做特别处理,如:控制字符;-o 使用没有组信息的长列表格式-p
--file-type根据文件类型,给文件名末尾添加一个标识符(/=@|中的一个);-q
--hide-control-chars以?号代替不可显示字符(默认);--show-control-chars显示控制字符,不使用?号代替;-Q
--quote-name给名称加上双引号;--quoting-style=WORD条目名称使用的引号样式,可选的值:literal、shell、shell-always、c、c-maybe、escape、clocale;-r
--reverse 使用反序排序;-R
--recursive递归列出目录和子目录的文件;-s
--size以块为单位输出文件大小;-S根据文件大小排序;--sort=WORD排序关键词,可能的值: "none", "time", "size", "extension", "version";--time=WORD显示文档的指定时间,而不是显示修改时间,可能的值:
  atime, access, use, ctime or status; 
如果“--sort=time”,也可以使用此时间作为排序键;-t使用修改时间排序;-T
--tabsize=COLS设置tab制表符的长度,而不是使用默认的8字符长度;-u 按最后访问时间排序; 使用“-l”显示最后访问时间;-U 不排序,使用目录的默认顺序;-v 按版本排序-w
--width=COLS指定屏幕宽度,而不是使用屏幕的实际宽度;-x按行的顺序显示,而不是按列的顺序;-X按字母顺序排序;-1每行显示一个文件;--help显示帮助信息;--version输出版本号; 
三、用法演示:
1、“-a”和“-A”选项的区别:[root@aiezu.com ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

[root@aiezu.com ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo
 2、“-b”和“--show-control-chars”选项演示:
  下面通过创建两个含不可显示字符“\001”和“\n”的文件名,来展示“-b”和“--show-control-chars”选项的区别:[root@aiezu.com mm]# touch "`echo -e "aiezu.com\001.txt"`"

[root@aiezu.com mm]# touch "`echo -e "aiezu\n.com.txt"`"

[root@aiezu.com mm]# ls
aiezu.com?.txt aiezu?.com.txt

[root@aiezu mm]# ls -b
aiezu.com\001.txt aiezu\n.com.txt

[root@aiezu.com mm]# ls --show-control-chars
aiezu.com.txt aiezu
.com.txt 
3、文件大小:[root@S2 opt]# ls -l aiezu.com.zip
-rw-r--r-- 1 root root 8007112 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -lh aiezu.com.zip
-rw-r--r-- 1 root root 7.7M Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -l --block-size=1k aiezu.com.zip
-rw-r--r-- 1 root root 7820 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -s aiezu.com.zip
7820 aiezu.com.zip 
4、ls命令“-F 参数”与“-p”参数演示:



5、文件创建时间、访问时间、修改时间:#文件的创建时间
[root@aiezu mm]# ls -lc aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:43 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=ctime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:43:23.572000000 +0800 aiezu.com.conf



#文件的修改时间:
[root@aiezu mm]# ls -l aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:41 aiezu.com.conf

[root@aiezu mm]# ls --full-time aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:41:55.575000000 +0800 aiezu.com.conf



#文件的访问时间:
[root@aiezu mm]# ls -lu aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:42 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=atime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:42:15.060000000 +0800 aiezu.com.conf 查看全部
  ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息。
 
一、ls命令用法:
  ls命令运行在命令提示符终端,用法如下。其中【选项】和为可选参数,可以一零个或者多个选项;【文件】也为可选参数,可以为零个或者多个;如果未指定文件,默认为列出当前目录下的文件:
用法:ls [选项]... [文件]...
 
二、ls命令参数详解:
下面是爱E族(aiezu.com)收集整理的ls详细选项,如有错误的地方,欢迎指正:
参数名描述
-a
--all
列出所有的文件和目录,包括以“.”号开头的;
-A
--almost-all
列出所有的文件和目录,包括以“.”号开头的(除了“.”和“..”);
-b
--escape 
将文件名中的不可见字符,使用“\”开头的八进制转换字符表示;
--block-size=SIZE指定每块的大小,如果指定了此值,将显示块数,不再显示文件大小;
可能的值:
  数   字,如:50、1024、102400;
  数字+单位,如:1k、2m、5g、10t;
-B
--ignore-backups
不要显示以“~”结尾的文件;
-c按文件修改时间排序,可以使用“-l”选项显示创建时间;
-C使用列的顺序输出文件列表;
--color[=WHEN]是否使用不同的颜色区分文件类型,可能的值:
  never:从不;
  always:总是;
  auto:自动。
-d
--directory
列出目录的信息,而不是列出命令里面的内容;
-D
--dired
Generate output designed for Emacs' dired mode;
-f 不排序, 使用“-aU”选项, 停用“-lst”选项;
-F
--classify
给文件名末尾添加一个标识符(*/=@|中的一个):
  “*”:可执行文件;
  “/”:目录;
  “=”:socket文件;
  “@”:符号链接(symbolic link)文件;
  “|”:FIFOs文件;
--format=WORD设置输出的格式,可能的值:
  across:相当于“-x”;
  commas:相当于“-m”;
  horizontal:相当于“-x”;
  long:相当于“-l”;
  single-column:相当于“-1”;
  verbose:相当于“-l”;
  vertical:相当于“-C”;
--full-time列出文件完整的修改日期和时间;
-g(ignored)
-G
--no-group
不显示文件的用户组;
-h
--human-readable
自动将文件大小使用方便阅读的方式表示,如:1.23K, 2.4M, 9G;
-H
--si
单位转换使用1000,而不是1024;
如:1M = 1000K,而不是 1M = 1024K;
--indicator-style=WORD按指定样式给文件名追加一个标识,可能的值:
  none:不添加,默认值;
  classify:相当于“-F”;
  file-type: 相当于“-p”;
  slash:目录添加斜杠;
-i
--inode
输出文件使用的index node;
-I
--ignore=PATTERN
Do not list implied entries matching shell PATTERN
-k
--kilobytes
以K为单位显示文件大小,相当于“--block-size=1024”;
-l以长列表的形式显示文件的详细信息;
-L
--dereference
列出符号链接指向的条目,而不是列出符号链接;
-m 所有的相连并使用“,”逗号分隔;
-n
--numeric-uid-gid
使用数字UIDs、GIDs来代替名字;
-N
--literal
输出原始名称,对特殊字符不做特别处理,如:控制字符;
-o 使用没有组信息的长列表格式
-p
--file-type
根据文件类型,给文件名末尾添加一个标识符(/=@|中的一个);
-q
--hide-control-chars
以?号代替不可显示字符(默认);
--show-control-chars显示控制字符,不使用?号代替;
-Q
--quote-name
给名称加上双引号;
--quoting-style=WORD条目名称使用的引号样式,可选的值:literal、shell、shell-always、c、c-maybe、escape、clocale;
-r
--reverse 
使用反序排序;
-R
--recursive
递归列出目录和子目录的文件;
-s
--size
以块为单位输出文件大小;
-S根据文件大小排序;
--sort=WORD排序关键词,可能的值: "none", "time", "size", "extension", "version";
--time=WORD显示文档的指定时间,而不是显示修改时间,可能的值:
  atime, access, use, ctime or status; 
如果“--sort=time”,也可以使用此时间作为排序键;
-t使用修改时间排序;
-T
--tabsize=COLS
设置tab制表符的长度,而不是使用默认的8字符长度;
-u 按最后访问时间排序; 使用“-l”显示最后访问时间;
-U 不排序,使用目录的默认顺序;
-v 按版本排序
-w
--width=COLS
指定屏幕宽度,而不是使用屏幕的实际宽度;
-x按行的顺序显示,而不是按列的顺序;
-X按字母顺序排序;
-1每行显示一个文件;
--help显示帮助信息;
--version输出版本号;
 
三、用法演示:
1、“-a”和“-A”选项的区别:
[root@aiezu.com ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

[root@aiezu.com ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc mysqlaccess.log .mysql_history .tcshrc .viminfo

 2、“-b”和“--show-control-chars”选项演示:
  下面通过创建两个含不可显示字符“\001”和“\n”的文件名,来展示“-b”和“--show-control-chars”选项的区别:
[root@aiezu.com mm]# touch "`echo -e "aiezu.com\001.txt"`"

[root@aiezu.com mm]# touch "`echo -e "aiezu\n.com.txt"`"

[root@aiezu.com mm]# ls
aiezu.com?.txt aiezu?.com.txt

[root@aiezu mm]# ls -b
aiezu.com\001.txt aiezu\n.com.txt

[root@aiezu.com mm]# ls --show-control-chars
aiezu.com.txt aiezu
.com.txt
 
3、文件大小:
[root@S2 opt]# ls -l aiezu.com.zip 
-rw-r--r-- 1 root root 8007112 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -lh aiezu.com.zip
-rw-r--r-- 1 root root 7.7M Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -l --block-size=1k aiezu.com.zip
-rw-r--r-- 1 root root 7820 Nov 22 21:45 aiezu.com.zip

[root@S2 opt]# ls -s aiezu.com.zip
7820 aiezu.com.zip
 
4、ls命令“-F 参数”与“-p”参数演示:
未标题-1.png

5、文件创建时间、访问时间、修改时间:
#文件的创建时间
[root@aiezu mm]# ls -lc aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:43 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=ctime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:43:23.572000000 +0800 aiezu.com.conf



#文件的修改时间:
[root@aiezu mm]# ls -l aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:41 aiezu.com.conf

[root@aiezu mm]# ls --full-time aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:41:55.575000000 +0800 aiezu.com.conf



#文件的访问时间:
[root@aiezu mm]# ls -lu aiezu.com.conf
-rw-r--r--. 1 root root 2 11月 22 22:42 aiezu.com.conf

[root@aiezu mm]# ls --full-time --time=atime aiezu.com.conf
-rw-r--r--. 1 root root 2 2016-11-22 22:42:15.060000000 +0800 aiezu.com.conf

Linux忘记mysql root密码解决方法

Mysqllinyu520 发表了文章 • 0 个评论 • 356 次浏览 • 2016-11-20 15:52 • 来自相关话题

一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables
二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项) 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法 查看全部
一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:
[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables
保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:
/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables

二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges
  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:
[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead
 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 
  • 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;
  • 停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项)
 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法

linux进程资源占用高原因分析命令

Linuxlinyu520 发表了文章 • 0 个评论 • 127 次浏览 • 2016-10-17 18:46 • 来自相关话题

1、查看进程的线程:ps -eLf|egrep 'httpd'
 2、跟踪线程调用:strace -p 15530
3、统计线程中函数的调用小号CPU时间:strace -p 16334 -c
strace -p 15530 -o out.file #输出到out.file文件
4、只显示recv函数的调用:strace -p 5314 -f -F -e recv
5、gdb调试线程:gdb -p pid
6、查看线程打开的文件描述符:lsof -p pid  查看全部
1、查看进程的线程:
ps -eLf|egrep 'httpd'

 2、跟踪线程调用:
strace -p 15530

3、统计线程中函数的调用小号CPU时间:
strace  -p 16334 -c
strace -p 15530 -o out.file #输出到out.file文件

4、只显示recv函数的调用:
strace  -p 5314 -f -F -e recv

5、gdb调试线程:
gdb -p pid

6、查看线程打开的文件描述符:
lsof -p pid