Linux some tools in terminal (1) - WBowam/wbowam.github.com GitHub Wiki
Date: 2014-02-08 Title: Linux特别强大和灵活的命令行工具 (1) Tags: Linux Category: IT
Curl是一个网络传输工具,这是非常类似wget的,主要的区别在于,默认情况下,Wget的保存到一个文件,和curl的命令行输出。这使得它可以很简单,看一个网站的内容。这里举个例子,我们可以得到我们当前的IP从ifconfig.me网站:
curl ifconfig.me
93.96.141.93
Curl的-i(显示标题)和-I(只显示头)选项使其成为一个伟大的工具,调试HTTP响应,并找出到底什么是服务器发送到你的:
curl -I news.ycombinator.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: private
Connection: close
-L选项是非常方便的,curl自动跟踪重定向。curl支持HTTP基本身份验证,cookies,手动设定标题等。
netcat或nc被称为网络上的瑞士军刀。这是一个非常简单但也非常强大和灵活的应用程序,允许你创建任意的网络连接。在这里,我们看到它被用作一个端口扫描器:
nc -z example.com 20-100
Connection to example.com 22 port [tcp/ssh] succeeded!
Connection to example.com 80 port [tcp/http] succeeded!
除了 建立任意的连接,netcat的还可以侦听传入的连接。在这里,我们使用nc的这一特点,结合tar命令,非常迅速地和有效地在服务器之间复制文件。 在服务器上,运行以下命令:
nc -l 9090 |tar -xzf -
在客户端:
tar -czf dir/|nc service_ip 9090
我们可以使用netcat建立在网络上的任何应用程序。在这里,我们建立了一个8080端口的shell:
mkfifo backpipe
nc -l 8080 0 <backpipe | /bin/bash> backpipe
现在,我们可以从任何客户端访问服务器:
nc example.com 8080
uname-a
Linux li228-162 2.6.39.1-linode34 ##1 SMP Tue Jun 21 10:29:24 EDT 2011 i686 GNU/Linux
虽然最后的两个例子是有点做作的(在现实中,你会更容易使用的工具,如rsync复制文件和SSH远程访问服务器),也显示在所有的netcat的力量和灵活性,并暗示不同的事情,你可以通过与其他应用程序相结合的netcat的。
Siege是一个HTTP的基准测试工具。除了负载测试功能,它有一个方便的-g选项,这是非常类似于curl的-iL,显示你的请求报头。下面是一个例子(为简便起见,我删除了一些头文件):
siege -g www.google.com
GET / HTTP/1.1
Host: www.google.com
User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70) Connection: close
HTTP/1.1 302 Found
Location: http://www.google.co.uk/
Content-Type: text/html; charset=UTF-8
Server: gws
Content-Length: 221
Connection: close
GET / HTTP/1.1
Host: www.google.co.uk
User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
Connection: close
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
X-XSS-Protection: 1; mode=block
Connection: close
Siege是真正伟大的是服务器负载测试。就像ab(Apache的HTTP服务器基准测试工具),你可以向一个网站发送的并发请求数,看看它是如何处理的交通。用下面的命令,我们将测试 谷歌利用20个并发连接30秒,然后结束时得到一个很好的报告:
siege -c20 www.google.co.uk -b -t30s
…
Lifting the server siege… done.
Transactions: 1400 hits
Availability: 100.00 %
Elapsed time: 29.22 secs
Data transferred: 13.32 MB
Response time: 0.41 secs
Transaction rate: 47.91 trans/sec
Throughput: 0.46 MB/sec
Concurrency: 19.53
Successful transactions: 1400
Failed transactions: 0
Longest transaction: 4.08
Shortest transaction: 0.08
siege的最有用的功能之一是,它可以采取一个文件的URL作为输入,然后点击这些URL,而不仅仅是一个单一的页面。进行负载测试,这是伟大的,因为你可以重放实时交通对您的网站,看看它是如何执行的,而不是只打一遍又一遍相同的URL。在这里将教你如何使用siege在另一台服务器上实现Apache日志的重播:
cut -d ‘ ‘ -f7 /var/log/apache2/access.log > urls.txt
siege -c<concurrency rate> -b -f urls.txt