linux -nc?linuxidc.com
大家好,感谢邀请,今天来为大家分享一下linux -nc的问题,以及和linuxidc.com的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
Linux nc命令详解 Linux nc命令怎么用
Linux中nc命令是一个功能强大的网络工具,全称是netcat。
语法:
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参数说明:
-g<网关>设置路由器跃程通信网关,最丢哦可设置8个。
-G<指向器数目>设置来源路由指向器,其数值为4的倍数。
-h在线帮助。
-i<延迟秒数>设置时间间隔,以便传送信息及扫描通信端口。
-l使用监听模式,管控传入的资料。
-n直接使用IP地址,而不通过域名服务器。
-o<输出文件>指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口>设置本地主机使用的通信端口。
-r乱数指定本地与远端主机的通信端口。
-s<来源位址>设置本地主机送出数据包的IP地址。
-u使用UDP传输协议。
-v显示指令执行过程。
-w<超时秒数>设置等待连线的时间。
-z使用0输入/输出模式,只在扫描通信端口时使用。
实例:
1、TCP端口扫描
# nc-v-z-w2 127.0.0.1 1-100
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Connection to 127.0.0.1 53 port [tcp/domain] succeeded!
Connection to 127.0.0.1 80 port [tcp/http] succeeded!
...
nc: connect to 127.0.0.1 port 100(tcp) failed: Connection refused
2、从192.168.1.2拷贝文件到192.168.1.3
首先在接收端192.168.1.3上: nc-l 1234> test.txt
然后在发送端192.168.1.2上: nc 192.168.1.3< test.txt
注意:先运行接收端,指定一个端口为1234,文件为test.txt,再执行发送端,并且发送端必须存在同名的文件test.txt
3、传输目录
从server1(192.168.16.233)拷贝nginx目录内容到server2(192.168.48.47)上。需要先在server2上,用nc激活监听,
server2上运行:# nc-l 1234| tar xzv-
server1上运行:# tar czv- nginx| nc 192.168.48.47 1234
4、简单聊天工具
在192.168.1.2上: nc-l 1234
在192.168.1.3上: nc 192.168.1.2 1234
这样,双方就可以相互交流了。使用ctrl+C(或D)退出
Linux系统中nc命令的基本用法掌握
功能说明:功能强大的网络工具( ̄▽ ̄),在网络工具中有瑞士军刀美誉,其有Windows和Linux的版本。因为它短小精悍,功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。
nc可以提供如下的网络功能:
1)监听特定端口,这时候nc就可以作为一个服务器,但是我发现这样使用nc生成的服务器仅仅是一个echo服务器而已,没有其他更加强大的功能.
2)连接特定端口,这时候nc就成为了一个客户端,同样的,也是一个简单的客户端,只能起echo的作用.
3)扫描端口,这可以作为查询某个机器上是否开启了某个端口.
几个具体的使用例子
例子1:
使用nc打开linux下的特定端口
nc-lp 23(即telnet)
netstat-an|grep 23(查看端口是否正常打开)
例子2:
使用nc进行文件传输,命令
ssh root@www.freetstar.com( nc-l 10003 destination 2/dev/null) cat source| nc www.freetstar.com 10003
前边ssh登录到远程主机www.freetstar.com上,用nc命令打开本地的10003端口,成为后台进程
后边,在本地机器上打开source文件,并将其重定向到www.freetstar.com的10003号端口,也就是让远程www.freetstar.com主机10003号端口接收source文件
例子3:
使用nc扫描linux下的特定端口
nc-v-z host.example.com 70-80
扫描端口(70到80),可指定范围。-v输出详细信息。
例子4:
克隆硬盘或分区
类似于例子2,只需要由dd获得硬盘或分区的数据,然后传输即可。
克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工具光盘)启动系统后
server1上执行:# nc-l-p 1234| dd of=/dev/sda
server1上执行1234号端口监听,将得到的文件保存到/dev/sda上
server2上执行:# dd if=/dev/sda| nc server1 1234
例子5:
保存Web页面
while true; do nc-l-p 80-q 1 somepage.html; done
例子6:
模拟HTTP Headers
[root@hatest1~]# nc www.huanxiangwu.com 80
GET/ HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
在nc命令后,输入红色部分的内容,然后按两次回车,即可从对方获得HTTP Headers内容。
例子7:
聊天
server1上监听1234端口[root@hatest2 tmp]# nc-lp 1234
server2上向server1的1234端口发送消息[root@hatest1~]# nc server1 1234
这样,双方就可以相互交流了。使用Ctrl+D正常退出。
更多的使用,查看man手册
nc example.host port打开与example.host主机的port的一个TCP链接.如果链接失败,不显示任何错误信息,仅仅退出
nc-p 31337-w 5 example.host 42打开与example。host主机的42号端口的一个TCP链接。用31337作为源端口,超时链接时间为5秒
nc-u example.host 53指定协议为udp协议
语法:nc [-hlnruz][-g网关...][-G指向器数目][-i延迟秒数][-o输出文件][-p通信端口][-s来源位址][-v...][-w超时秒数][主机名称][通信端口...]
参数:
-g网关设置路由器跃程通信网关,最多可设置8个。
-G指向器数目设置来源路由指向器,其数值为4的倍数。
-h在线帮助。
-i延迟秒数设置时间间隔,以便传送信息及扫描通信端口。
-l使用监听模式,管控传入的资料。
-n直接使用IP地址,而不通过域名服务器。
-o输出文件指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p通信端口设置本地主机使用的通信端口。
-r乱数指定本地与远端主机的通信端口。
-s来源位址设置本地主机送出数据包的IP地址。
-u使用UDP传输协议。
-v显示指令执行过程。
-w超时秒数设置等待连线的时间。
-z使用0输入/输出模式,只在扫描通信端口时使用。
来看下它的基本用法:
1.监听本地端口
复制代码
代码如下:
root@10.1.1.43:~# nc-l-p 1234
root@10.1.1.43:~# netstat-tunlp| grep 1234
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 15543/nc
2.端口扫描
复制代码
代码如下:
root@10.1.1.43:~# nc-v-w 10 10.1.1.180 80
(UNKNOWN) [10.1.1.180] 80(www) open
复制代码
代码如下:
root@10.1.1.43:~# nc-v-w 10 10.1.1.180-z 80-30000
(UNKNOWN) [10.1.1.180] 22000(?) open
(UNKNOWN) [10.1.1.180] 80(www) open
3.文件传出
源10.1.1.43 text.txt
目的 10.1.1.180
复制代码
代码如下:
root@10:~# nc-l-p 1234 test.txt#开10.1.1.180:1234端口监听,并将socket传输过来的数据重定向到test.txt文件 test 43 nc
root@10.1.1.43:~#cat test.txt
root@10.1.1.43:~# nc 10.1.1.180 1234 test.txt#连接远程的10.1.1.180,从test.txt的路径从定向到socket,从而将文件传输到远方。
root@10:~# cat test.txt
test 43 nc
4.目录传输
源10.1.1.43 python_program
目的 10.1.1.180
复制代码
代码如下:
root@10:~# nc-l-p 1234| tar xzvf-
root@10.1.1.43:~# tar czvf- python_program| nc 10.1.1.180 1234
python_program/
python_program/1.py
python_program/4.py
python_program/3.py
5.测试UDP端口
复制代码
代码如下:
root@172.16.211.34:web# netstat-tunlp
Active Internet connections(only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1111/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 887/dhclient
复制代码
代码如下:
root@172.16.211.35:~# nc-vuz 172.16.211.34 68
Connection to 172.16.211.34 68 port [udp/bootpc] succeeded!
linux nc命令
linux系统下nc命令可以实现任意TCP/UDP端口的侦听,nc命令可以作为server以TCP或UDP方式侦听指定端口,下面是nc命令内容的具体介绍:
1、nc命令简介:
nc命令全称是netcat,是网路工具,短小精悍被称为网络界的瑞士军刀。
2、nc命令功能:
实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口;
端口的扫描,nc可以作为client发起TCP或UDP连接;
机器之间传输文件;
机器之间网络测速。
3、语法:
nc [-hlnruz][-g网关...][-G指向器数目][-i延迟秒数][-o输出文件][-p通信端口][-s来源位址][-v...][-w超时秒数][主机名称][通信端口...]
4、参数:
-g网关:设置路由器跃程通信网关,最多可设置8个。
-G指向器数目:设置来源路由指向器,其数值为4的倍数。
-h:在线帮助。
-i延迟秒数:设置时间间隔,以便传送信息及扫描通信端口。
-l:监听模式,用于入站连接(监听本地端口)。
-n:直接使用IP地址,而不通过域名服务器。
-o输出文件:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p通信端口:设置本地主机使用的通信端口。
-r:随机指定本地与远端主机的通信端口。
-s来源位址:设置本地主机送出数据包的IP地址。
-u:使用UDP传输协议。
-v:显示指令执行过程。
-w超时秒数:设置等待连线的时间。
-z:使用0输入/输出模式,只在扫描通信端口时使用。
5、常见使用:
远程拷贝文件
从server1拷贝文件到server2上。需要先在server2上,用nc激活监听,server2上运行:
引用[root@hatest2 tmp]# nc-lp 1234 install.log
server1上运行:
引用[root@hatest1~]# ll install.log
-rw-r--r-- 1 root root 39693 12月 20 2007 install.log
[root@hatest1~]# nc-w 1 192.168.228.222 1234 install.log
克隆硬盘或分区
操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。
克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix
工具光盘)启动系统后,在server2上进行类似的监听动作:
# nc-l-p 1234| dd of=/dev/sda
server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务:
# dd if=/dev/sda| nc 192.168.228.222 1234
※完成上述工作的前提,是需要落实光盘的拯救模式支持服务器上的网卡,并正确配置IP。
端口扫描
可以执行:
引用# nc-v-w 1 192.168.228.222-z 1-1000
hatest2 [192.168.228.222] 22(ssh) open
保存Web页面
# while true; do nc-l-p 80-q 1 somepage.html; done
模拟HTTP Headers
引用[root@hatest1~]# nc.linuxfly.org 80
GET/ HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
HTTP/1.1 200 OK
Date: Tue, 16 Dec 2008 07:23:24 GMT
Server: Apache/2.2.6(Unix) DAV/2 mod_mono/1.2.1 mod_python/3.2.8 Python/2.4.3 mod_perl/2.0.2 Perl/v5.8.8
Set-Cookie: PHPSESSID=bbadorbvie1gn037iih6lrdg50; path=/
Expires: 0
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Cache-Control: private, post-check=0, pre-check=0, max-age=0
Set-Cookie: oWn_sid=xRutAY; expires=Tue, 23-Dec-2008 07:23:24 GMT; path=/
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html
[......]
在nc命令后,输入红色部分的内容,然后按两次回车,即可从对方获得HTTP Headers内容。
聊天
nc还可以作为简单的字符下聊天工具使用,同样的,server2上需要启动监听:
[root@hatest2 tmp]# nc-lp 1234
server1上传输:
[root@hatest1~]# nc 192.168.228.222 1234
这样,双方就可以相互交流了。使用Ctrl+D正常退出。
传输目录
从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上,用nc激活监听,server2上运行:
引用[root@hatest2 tmp]# nc-l 1234|tar xzvf-
server1上运行:
引用[root@hatest1~]# ll-d nginx-0.6.34
drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34
[root@hatest1~]# tar czvf- nginx-0.6.34|nc 192.168.228.222 1234