使用 nc/netcat 在主机之间方便地共享数据
使用复制文件的方式可以在多台不同的 Linux 之间复制纯文本/文件/数据。但有时候觉得创建文件再 scp文件 再打开文件 的方式有点繁琐。 这篇文章使用 nc/netcat 并采用 C/S 架构的方式实现少量文本在主机之间的传输。
nc 的 C/S 模式
nc 本身支持多种功能:打开端口、监听端口、扫描端口。
- 监听端口命令:
nc -l host port
- 打开端口命令:
nc host port
前者即可充当TCP服务端(Server),后者即可充当TCP客户端(Client)。
客户端将标准输入作为数据发送给服务端,服务端将接收的数据输出到标准输出。由于TCP是全双工工作的,所以反之亦然。
示例:输入即发送
假如有两台主机A和B,A可以连通B,并且B的IP地址为192.168.1.3。
那么,以下即可实现双向的数据数据发送与接收。
Client Server
+-----------------------------+--------------------------------+
| | |
| $ nc 192.168.1.3 6666 | $ nc -l 192.168.1.3 6666 |
| hello, I'm client. | hello, I'm client. |
| hello, I'm server. | hello, I'm server. |
| | |
+-----------------------------+--------------------------------+
示例:发送文件
使用重定向的方式即可发送/接收文件。
比如,客户端发送文件,服务端直接显示:
1
|
|
多个连接
nc作为服务端,默认只接收一个连接,如果此连接关闭,则nc也会退出。
如果想要nc接收任意数量的客户端连接,可以加上-k
参数。