Linux some tools in terminal (1) - WBowam/wbowam.github.com GitHub Wiki

Date: 2014-02-08 Title: Linux特别强大和灵活的命令行工具 (1) Tags: Linux Category: IT

! ياخشى نەرسە سېسىپ قالمىسۇن


Curl

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

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的。


sshuttle


Siege

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
⚠️ **GitHub.com Fallback** ⚠️