Linux下的神奇指令——netcat

Netcat是一款功能强大的网络工具,能够模拟TCP客户端和服务端操作,并支持多种网络协议测试。

netcat  就像 cat  指令一樣,只是將簡單的  cat  功能完全「網路化」,好用與靈活的程度可說是很驚人,而在  Top 100 Network Security Tools  排行榜中還排行第四名呢!

netcat 除了可以當  TCP Client  工具以外,還可以當  TCP Server  的工具,以下我用幾個簡單的例子說明:

示範 netcat  如何當  TCP Client  工具

底下這段指令代表你要將 /etc  目錄整個打包並壓縮起來,並將資料傳送到  10.0.0.99  主機的  Port 3456 ,並指定若超過  30  秒沒有連上目的地或  30  秒沒有回應的話自動  Timeout

# tar -zcf - /etc | netcat -w 30 10.0.0.99 3456

示範 netcat  如何當  TCP Server  工具

如果拿以上的例子,你可能會想說那你還要自己寫一個 Server  接受這些封包啊!答案是:「只要用  netcat  就可以拿來當  Server  用了,一行程式也不用寫」,底下這段指令是假設從  10.0.0.99  主機執行的。

# netcat -l -p 3456 > /backup/my_etc_backup.tar.gz

-l 參數代表進入  Listen mode

-p 代表  Listen  的  Port  為  3456

之後的 > my_etc_backup.tar.gz  代表你要將從  TCP  傳入的所有資料都導入到  /backup/my_etc_backup.tar.gz  檔案中。

用以上兩個非常簡單的例子就可以知道,原來在網路之間傳輸資料可以如此的簡單。若知道  rsync  工具的人可能會笑說:「用 netcat  太麻煩了吧,用  rsync  同步或備份檔案才更好用吧」。是的,如果要「同步檔案」的話,當然用  rsync  比較好用,不過 netcat  還可以做的更多!

因為 netcat  可以模擬任何所有  TCP Protocol  的動作,就如同我們常用  telnet  測試  HTTP POP3 、或  SMTP  協定的時候一樣,只是使用  netcat  可以讓我們更自動化的做些測試,舉幾個例子如下:

1. 測試  HTTP  運作是否正常

首先,必須先建立要下的 HTTP  指令檔,假設叫  GET_tw.yahoo.com.txt ,內容如下:

GET / HTTP/1.0

Host: tw.yahoo.com

注意:在指令的最後面必須要有兩個「斷行」符號,所以你可以在文字檔後面加上兩行空白行。

然後就可以用以下指令取得 Yahoo!  奇摩 的首頁  HTML

# cat GET_tw.yahoo.com.txt | nc tw.yahoo.com 80

再透過一些指令或程式就可以將測試網頁是否還活著的偵測程式完成且自動化了。

2. 測試  SMTP  運作是否正常

測試 SMTP  的方式也跟  HTTP  一樣,就是先把指令都給先寫好,假設檔名是  SMTP_test.txt ,內容如下:

HELO localhost

MAIL FROM:<will@test.com>

RCPT TO:<will@test.com>

DATA

To: Will <will@test.com>

Subject: This is a test

This is first line

.

QUIT

然後就可以用以下指令將 SMTP Command  送到  smtp.test.com  了:

# cat SMTP_test.txt | nc smtp.test.com 25

執行的結果如下:

# cat SMTP_test.txt | nc smtp.test.com 25

220 smtp.test.com ESMTP Service ready Fri, 11 Jul 2008 19:13:17 +0800 (CST)

250 smtp.test.com

250 Sender <doggy@test.com> OK

250 Recipient <doggy@test.com> OK

354 Enter mail, end <CRLF>.<CRLF>

250 Message accepted for delivery

221 smtp.test.com

如何上述幾個簡單的範例之外,當然也可以測試包括 FTP, POP3, ...  等任何  TCP-based  的服務都可以。

netcat 幾乎在每一個  Linux distribution  中都有預設安裝,算是一個非常普及的工具。如果你要在  Windows  上使用  netcat  工具的話,可以到 這裡 下載。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值