linux系统nc命令使用
Posted 李迟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统nc命令使用相关的知识,希望对你有一定的参考价值。
linux 系统 nc 命令使用。
安装
centos 系统安装命令:
sudo yum -y install nmap-ncat
一般使用如下:
服务端:nc -l <端口>
客户端:nc <IP> <端口>
命令说明
官方命令说明如下:
$ nc --help
Ncat 7.50 ( https://nmap.org/ncat )
Usage: ncat [options] [hostname] [port]
Options taking a time assume seconds. Append 'ms' for milliseconds,
's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).
-4 Use IPv4 only
-6 Use IPv6 only
-U, --unixsock Use Unix domain sockets only
-C, --crlf Use CRLF for EOL sequence
-c, --sh-exec <command> Executes the given command via /bin/sh
-e, --exec <command> Executes the given command
--lua-exec <filename> Executes the given Lua script
-g hop1[,hop2,...] Loose source routing hop points (8 max)
-G <n> Loose source routing hop pointer (4, 8, 12, ...)
-m, --max-conns <n> Maximum <n> simultaneous connections
-h, --help Display this help screen
-d, --delay <time> Wait between read/writes
-o, --output <filename> Dump session data to a file
-x, --hex-dump <filename> Dump session data as hex to a file
-i, --idle-timeout <time> Idle read/write timeout
-p, --source-port port Specify source port to use
-s, --source addr Specify source address to use (doesn't affect -l)
-l, --listen Bind and listen for incoming connections
-k, --keep-open Accept multiple connections in listen mode
-n, --nodns Do not resolve hostnames via DNS
-t, --telnet Answer Telnet negotiations
-u, --udp Use UDP instead of default TCP
--sctp Use SCTP instead of default TCP
-v, --verbose Set verbosity level (can be used several times)
-w, --wait <time> Connect timeout
-z Zero-I/O mode, report connection status only
--append-output Append rather than clobber specified output files
--send-only Only send data, ignoring received; quit on EOF
--recv-only Only receive data, never send anything
--allow Allow only given hosts to connect to Ncat
--allowfile A file of hosts allowed to connect to Ncat
--deny Deny given hosts from connecting to Ncat
--denyfile A file of hosts denied from connecting to Ncat
--broker Enable Ncat's connection brokering mode
--chat Start a simple Ncat chat server
--proxy <addr[:port]> Specify address of host to proxy through
--proxy-type <type> Specify proxy type ("http" or "socks4" or "socks5")
--proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server
--ssl Connect or listen with SSL
--ssl-cert Specify SSL certificate file (PEM) for listening
--ssl-key Specify SSL private key (PEM) for listening
--ssl-verify Verify trust and domain name of certificates
--ssl-trustfile PEM file containing trusted SSL certificates
--ssl-ciphers Cipherlist containing SSL ciphers to use
--version Display Ncat's version information and exit
See the ncat(1) manpage for full options, descriptions and usage examples
重点如下:
-l 设置侦听模式,此时为服务端
-p 指定源端口端口,实际中似乎不使用
-s 指定源地址,有多个网卡可用之(特别是虚拟机环境中)
-u 使用UDP协议,默认为TCP
-v 输出日志,可用于调试
-w 超时秒数,后面跟数字
-o 服务端用,将接收的数据存储到文件
-x 同上,但数据会转换为十六进制(对于一些协议数据特别有用)
实例演示
如果服务端有一个客户端连接,则无法再响应其它连接。
单独作为客户端
nc <IP> <端口>
服务端由其它程序实现,可用于服务端的调试。
收发数据/文件
服务端:
nc -l 1314 -o foo
客户端:
printf "hello" | nc 192.168.28.11 1314
或 nc 192.168.28.11 1214 < test (注:test为一个文件,其内容为 hello)
或 echo -n "hello" | nc 192.168.28.11 1314
本例中,服务端接收的数据会显示在终端,也会保存到foo文件,-o
为常规形式,-x
为十六进制数据,十六进制示例如下:
[0000] 68 65 6C 6C 6F hello
类似的,收发文件示例如下:
服务端: nc -l 1314 > foo
客户端:nc 192.168.28.11 1314 < /tmp/foo
注:使用重定向符实现
注:终端会显示接收的数据,如何隐藏,暂未找到方法。
模拟聊天工具(实际为收发数据)
服务端:
nc -l 1314
客户端:
nc 192.168.28.11 1314
注:在一终端输入字符,另一终端可接收到,反之亦然
测试网速
先安装dstat:
sudo yum install -y dstat
一机器执行:
nc -l 1314 > /dev/null
另一机器执行:
nc 192.168.28.11 1314 < /dev/zero
再执行:
dstat
以上是关于linux系统nc命令使用的主要内容,如果未能解决你的问题,请参考以下文章
linux系统ubuntu19.04使用nc命令开放(iptables以及ufw命令无效情况下)
linux怎么使用nc命令来发送一串使用udp协议的数据?或者不是NC也可以的命令