`
xpp02
  • 浏览: 1071113 次
社区版块
存档分类
最新评论

推荐给开发人员的实用命令行工具

 
阅读更多
摘要:优秀的工具对于定位问题出在何处有着无可估量的价值,而且能在一开始就帮助我们阻止问题的出现,总的来说能使我们的工作更有效率。本文介绍了6个非常强大且灵活的工具,熟练使用这些工具能使你的生活变得更轻松一些。

作为一名Web开发者,当程序出现问题时日子总不是那么好过。问题可能无处不在,可能是你发送的请求出了错,可能是回复出了错,可能是你使用的某个第三方库出了问题,又或者是一个外部API调用失败了。优秀的工具对于定位问题出在何处有着无可估量的价值,而且能在一开始就帮助我们阻止问题的出现,总的来说能使我们的工作更有效率。命令行工具尤其有用,因为它们非常易于做自动化和脚本处理,能够以各种不同的方式进行组合和重用。本文介绍了6个非常强大且灵活的工具,熟练使用这些工具能使你的生活变得更轻松一些。

Curl

Curl是一个网络传输工具,同wget非常相似。主要的区别在于wget默认是保存到文件,而curl将输出定向到命令行上。这使得curl能非常方便的查看站点的内容。比如,我们可以从ifconfig.me站点得到我们本机的IP地址:

  1. $curlifconfig.me
  2. 93.96.141.93

Curl的-i(查看header)和-I(只显示header)选项使得调试HTTP响应以及查看服务器究竟发送给你了什么变得非常有用:

  1. $curl-Inews.ycombinator.com
  2. HTTP/1.1200OK
  3. Content-Type:text/html;charset=utf-8
  4. Cache-Control:private
  5. Connection:close

-L选项也很有用,能让curl自动跟踪重定向。Curl支持HTTP基本认证,cookies,手动设定headers以及更多有用的功能。

Ngrep

如果要分析网络数据包,我们有Wireshark,它有着上千种设定、过滤器以及配置选项。它还有一个命令行版本Tshark。如果只是针对简单的任务,我觉得Wireshark就太重量级了,所以除非我需要更强大的功能,一般情况下就用ngrep来处理了。Ngrep可以让你像类似grep处理文件的方式来处理网络封包。

针对Web流量,你几乎总是想要加上-W byline选项,这会保留换行符,而-q选项可以抑制某些非匹配数据包而产生的输出。下面是一个抓取所有包含有GET或POST请求数据包的例子:

  1. ngrep–q–Wbyline“^(GET|POST).*”

你也可以传入附加的报文过滤选项,比如限制匹配的报文只针对某个特定的主机,IP或端口。这里我们把所有流经Google的流量做一个过滤,只针对80端口且报文中包含“search”。

  1. ngrep–q–Wbyline“search”hostwww.google.comandport80

Netcat

Netcat或者叫nc,这是一个自称是网络中的瑞士军刀般的工具。它很简单但也非常强大和灵活,允许你创建任意的网络连接。这里我们来看看如何把它作为一个端口扫描器:

  1. $nc–zexample.com20-100
  2. Connectiontoexample.com22port[tcp/ssh]succeeded!
  3. Connectiontoexample.com80port[tcp/ssh]succeeded!

除了能够创建任意的连接,Netcat还能够监听传入的连接。这里我们利用nc的这个功能再配合tar来快速有效的在服务器之间拷贝文件。在服务器端,运行:

  1. $nc–l9090|tar–xzf–

在客户端运行:

  1. $tar–czfdir/|ncserver9090

我们可以使用Netcat把任何应用通过网络暴露出来,这里我们通过8080端口将shell暴露出来:

  1. $mkfifobackpipe
  2. $nc–l80800<backpipe|/bin/bash>backpipe

现在我们可以通过任意一台客户机来访问服务器了:Linode

  1. $ncexample.com8080
  2. uname–a
  3. Linuxli228-1622.6.39.1-linode34##1SMPTueJun2110:29:24EDT2011i686GNU/Linux

尽管后面这两个例子有些投机取巧的成分(现实中你应该使用类似rsync这样的工具来拷贝文件,用SSH来远程登录服务器),它们还是展示出了Netcat的强大和灵活,通过结合netcat和其它的应用你可以实现很多不同的事情。

Sshuttle

Sshuttle允许你通过任意一台可SSH访问的服务器来为你的流量建立安全的隧道。搭建和使用都非常简单,不需要你在服务器上安装任何软件或者修改任何本地代理设定。当你在非安全的公共WiFi或其他不受信任的网络中时,通过SSH让流量走安全隧道,这样就可避免类似Firesheepdsniff这样的工具的侵扰。所有的网络通讯,包括DNS请求都会发送到你的SSH服务器:

  1. $sshuttle–r<server>--dns0/0

如果你提供了—daemon参数,sshuttle会以守护进程的形式在后台运行。结合一些其他的选项,你可以使用别名形式来简单快速的启动和停止安全隧道:

  1. aliastunnel=’sshuttle–D–pidfile=/tmp/sshuttle.pid–r<server>--dns0/0’
  2. aliasstoptunnel=’[[-f/tmp/sshuttle.pid]]&&kill`cat/tmp/sshuttle.pid`’

你也可以使用sshuttle来解决一些基于IP的地理定位筛选的问题,如今有很多服务都在使用这种应用比如BBC的iPlayer就需要你在英国,还有Turntable,需要你在美国。要绕过这种限制,你需要访问到位于该国的某个服务器。Amazon在许多国家都有免费的E2C微实例,或者你也可以找一个便宜的vps,几乎世界上任何国家都有。

在这个例子中,我们不需要让所有的流量都走隧道,我们只需要针对目标服务的流量就行了。

不幸的是sshuttle只接受IP地址作为参数,不支持主机名,所以我们还得先用dig来解析出主机名。

  1. $sshuttle–r<server>`dig+short<hostname>`

Siege

Siege是一个HTTP基准测试工具。除了负载测试功能外,它还有一个很方便的-g选项,这非常类似于curl的-iL,只是这里Siege也会输出请求header。这里是针对Google的一个例子(为了简洁我拿掉了一些header)

  1. $siege-gwww.google.com
  2. GET/HTTP/1.1
  3. Host:www.google.com
  4. User-Agent:JoeDog/1.00[en](X11;I;Siege2.70)
  5. Connection:close
  6. HTTP/1.1302Found
  7. Location:http://www.google.co.uk/
  8. Content-Type:text/html;charset=UTF-8
  9. Server:gws
  10. Content-Length:221
  11. Connection:close
  12. GET/HTTP/1.1
  13. Host:www.google.co.uk
  14. User-Agent:JoeDog/1.00[en](X11;I;Siege2.70)
  15. Connection:close
  16. HTTP/1.1200OK
  17. Content-Type:text/html;charset=ISO-8859-1
  18. X-XSS-Protection:1;mode=block
  19. Connection:close

Siege真正在行的是服务器的负载测试。就像ab(一款Apache HTTP服务基准测试工具)一样,你可以向站点发送并发请求,并查看它如何处理流量。用下面的命令,我们会在30秒内向Google发起20个并发连接,最后会得到一个漂亮的测试报告。

  1. $siege-c20www.google.co.uk-b-t30s
  2. ...
  3. Liftingtheserversiege...done.
  4. Transactions:1400hits
  5. Availability:100.00%
  6. Elapsedtime:29.22secs
  7. Datatransferred:13.32MB
  8. Responsetime:0.41secs
  9. Transactionrate:47.91trans/sec
  10. Throughput:0.46MB/sec
  11. Concurrency:19.53
  12. Successfultransactions:1400
  13. Failedtransactions:0
  14. Longesttransaction:4.08
  15. Shortesttransaction:0.08

Siege最有用的一个特性是它可以把一个记录URL的文件作为输入,然后“点击”这些URL,而不是只处理一个单独的页面。这对于负载测试来说很有用,因为你可以对站点重现真实的流量并观察站点如何处理,而不必一遍又一遍重复点击同一个URL。下面是你用Siege来重现Apache对另一台服务器的日志记录,以做负载测试的例子:

  1. $cut-d''-f7/var/log/apache2/access.log>urls.txt
  2. $siege-c<concurrencyrate>-b-furls.txt

Mitmproxy

Mitmproxy是一个支持SSL的HTTP中间人代理工具,它允许你检查HTTP和HTTPS流量并支持直接改写请求。这个应用曾经在一些有关iOS应用的隐私丑闻中都出现过,包括Path的地址簿上传丑闻。它的直接改写请求的能力也被用来针对iOS平台,其应用包括在GameCenter中伪造一个虚假的高分数值

Mitmproxy可不只是用来查看移动应用发送了些什么内容或者是伪造几个高分数值那么简单。它同样可以为Web开发者解决很多问题。比如,之前我们需要不停点击F5键或者清除缓存才能保证看到最新的内容,现在你可以运行:

  1. $mitmproxy--anticache

这样将自动去掉缓存控制相关的header,并确保你总是获取到刷新后的内容。不幸的是,这并不会像sshuttle那样自动为你设定转发功能,所以启动mitmproxy之后你还需要修改全局或者特定于浏览器的代理设置。

mitmproxy另一个非常给力的功能是记录并重现HTTP的交互过程。官方文档给出了一个关于无线网络登录的例子。同样的技术也能够用来作为基本的Web测试框架。比如,为了确认你的用户注册流程是否正常工作,你可以开启记录会话:

  1. $mitmdump-wuser-signup

然后跑一遍用户注册流程,目前为止应该能如预期般的工作。用Ctrl+C来停止记录。在任意时刻我们都能重现刚刚记录到的交互过程,并检查200状态码:

  1. $mitmdump-cuser-signup|tail-n1|grep200&&echo"OK"||echo"FAIL"

如果注册流程中的任意一点出了问题,我们将看到FAIL消息而不是OK。你可以创建一整套这类测试套件,并经常执行这类测试以确保当站点突然出现故障时你会得到提示。

来自:伯乐在线

分享到:
评论

相关推荐

    一个用于开发和部署静态网页的node命令行工具

    这意味着开发人员可以利用Node.js的强大功能,同时享受到命令行工具带来的高效和便捷。命令行工具通常具有可配置性高、易于自动化和集成到工作流中的优点。 从压缩包子文件的文件名称“webon-master”来看,这可能...

    Windows超级命令行工具箱

    为了扩展命令行工具的功能,开发人员创建了各种增强版的命令行工具箱,其中“Windows超级命令行工具箱”就是这样一个神器。这个工具箱集合了一系列高效、实用的命令行工具,极大地提升了Windows用户在终端中的工作...

    甲骨文数据库用的命令行工具

    这种工具通常被称为SQL*Plus,它是Oracle数据库系统内置的一个命令行接口,允许数据库管理员(DBA)和开发人员执行SQL语句,管理数据库对象,以及运行PL/SQL程序块。 描述中的"非常全面,很有帮助"意味着甲骨文的...

    Go-pgreloaded是一个简单的命令行工具可以帮助开发人员定期恢复PostgreSQL数据库

    `Go-pgreloaded` 是一个专为PostgreSQL数据库设计的轻量级命令行工具,它为开发人员提供了一个方便的方式来定期执行数据库恢复操作。这个工具的出现,极大地简化了数据库管理流程,特别是在需要频繁测试、回滚或备份...

    colorquantizer+命令行工具

    总的来说,ColorQuantizer和TurePNG是两个强大的命令行图像压缩工具,对于需要批量处理图像或希望在开发流程中集成压缩步骤的IT专业人员来说,它们是非常有价值的资源。通过学习和熟练使用这些工具,不仅可以提高...

    sqlite加解密命令行工具(windows)

    总之,SQLCipher是一个强大的SQLite扩展,它为Windows环境下的开发人员提供了命令行工具,方便他们在加密数据库上进行各种操作。理解和熟练使用这些工具,对于保障数据安全和实现高效开发至关重要。在实际工作中,...

    DevCon 命令行实用工具

    DevCon命令行实用工具是微软开发的一个强大工具,主要用于设备管理。它允许用户在命令行环境中操作硬件设备,包括查询、启用、禁用、安装、卸载和更新设备驱动程序。这个工具对于系统管理员和开发者来说尤其有用,...

    putty命令行工具

    这款轻量级的命令行工具允许用户远程登录到服务器,进行安全的数据传输和管理任务。PuTTY的核心功能在于提供了一个安全的通信通道,使得管理员和开发人员可以在不安全的网络环境中执行命令,传输文件,甚至进行终端...

    Python-graphcli灵活的命令行工具可以从CSV数据创建图形

    在Python开发中,命令行工具往往具有高效、轻量级的特点,它们可以作为日常数据分析任务的快捷方式。graph-cli就是这样一个工具,它简化了数据可视化的过程,使得非程序员也能轻松上手。该工具可能基于Python的...

    基于Rust语言的Git项目信息查询命令行工具onefetch设计源码

    这种类型的工具非常适用于软件开发人员,因为它可以通过简单的命令来获取项目的版本历史、分支信息、作者贡献、代码统计等信息,从而帮助开发人员更好地管理项目并了解项目状态。 该项目的源码包含了大量的文件,...

    Node.js-一个定制的前端ftp上传命令行工具将jscssimages上传到ftp服务的指定目录

    标题中的“Node.js-一个定制的前端ftp上传命令行工具将jscssimages上传到ftp服务的指定目录”表明我们讨论的是一个使用Node.js编写的命令行工具,它专门设计用于前端开发人员,帮助他们便捷地将JavaScript(js)、...

    Go-ccheck-用于验证Kubernetes配置的命令行工具

    总之,`Go-ccheck` 是一个实用的 Kubernetes 配置验证工具,借助 Go 语言的强大性能和命令行工具的便捷性,为 Kubernetes 管理者提供了可靠的质量保障,有助于减少配置错误导致的问题,提高集群的稳定性和安全性。

    数据库_结构体自动生成_命令行工具_表结构转换_1741869944.zip

    本压缩包中的文件集,即数据库结构体自动生成的命令行工具,是数据结构学习者和专业开发人员不可多得的实用工具。 首先,该工具能够实现表结构的转换,这是数据处理中非常重要的一个环节。在数据库设计中,经常需要...

    cpp-Nicko一个简单的命令行工具和库用于识别流行的文件类型

    总之,Nicko 是一个实用的命令行工具,利用 C++ 的强大功能和 CLI 的简洁交互,为用户提供了一种识别流行文件类型的有效手段。无论是日常使用还是开发集成,Nicko 都能为处理文件类型问题带来便利。

    使用common-cli构建命令行工具,主要在windows下使用linux命令_tools-cli.zip

    特别地,对于Windows用户而言,能够在一个本质上不支持Linux命令的系统中运行Linux命令行工具,显得尤为实用。本篇内容将深入探讨如何使用common-cli工具在Windows环境下构建并使用Linux命令行工具。 首先,common-...

    基于C语言的curl网络请求命令行工具设计源码

    因此,该项目不仅对开发人员来说是一个重要的工具,对于网络数据的使用者而言,也是一个实用而强大的应用。 该项目的设计源码展示了一个网络请求工具的全面实现,它融合了多种编程语言和文件格式,支持多种网络协议...

    Mp3Wrap 0.5 MP3合并命令行工具

    **正文** 《Mp3Wrap 0.5:MP3合并利器》 ...无论是个人用户还是开发人员,都能从中找到满足需求的功能,提升音频处理的工作效率。在处理MP3文件时,不妨试试这款强大的命令行工具,你可能会发现它带给你的惊喜。

    Python-contributors命令行工具用来获得一个或是更多github仓库的贡献者

    总之,`python-contributors` 是一个实用的命令行工具,它简化了获取GitHub仓库贡献者信息的过程。对于Python开发者和开源社区的参与者来说,它是一个有价值的工具,能够帮助我们更好地理解和参与开源项目。

    Python-keep元命令行工具你的个人shell命令管理者

    总的来说,Python-keep元命令行工具是一款实用且高效的命令行助手,通过其独特的功能,帮助用户更有序地管理和利用shell命令,让日常工作更加流畅和高效。无论是个人还是团队,都可以从中受益。

    音乐处理_命令行工具_SpleeterMsvcExe_音频分_1741859602.zip

    标题中提到的“音乐处理_命令行工具_SpleeterMsvcExe_音频分”暗示了这是一款专门用于音频文件处理的命令行工具。从名称中可以推测,这个工具可能基于Spleeter这一音频分离技术,这通常用于将音乐中的不同音轨分离...

Global site tag (gtag.js) - Google Analytics