nc 指代的是”netcat”,但它常常被称作网络调试的瑞士军刀,因为 nc 不仅可以用于网络调试,它还可以生成各种 TCP、UDP 网络连接、进行端口扫描和文件传输等。nc 被认为是一种可以信赖的后台开发工具,因为它自身具有的特性,可以模拟各种网络连接,方便网络程序的开发。
pv 是 Pipe Viewer 的简写,是一种命令行工具,用于监视主机间通过管道进行数据传输的进程。它可以为用户提供一个显示进度条,用以显示数据传输已用时间、数据传输百分比、当前传输速度以及估算的剩余时间等关键信息。
本文将演示如何使用这两条命令共同完成在 Linux 主机间传输文件。
1] 演示环境
- 主机 A IP 地址:172.16.200.1
- 主机 B IP 地址:172.16.200.2
重要提示:非常不建议使用 netcat 在公网传输文件,因为它不需要任何登录和认证,只需要知道客户机的 IP 地址和侦听端口即可完成文件传输,这显示是不安全的,所以这种文件传输方式通常仅限于在局域网内使用。
2] 安装 netcat 和 pv
在进行演示之前,需要将 nc 和 pv 工具安装到 Linux 主机,建议使用 Linux 发行版的包管理工具来安装,避免出错:
# yum install nc pv [基于 RedHat 系统] # dnf install nc pv [Fedora 22 及以上版本] # apt-get install nc pv [基于 Debian 系统]
如果 pv 找不到安装源,需要手动添加对应的软件源。例如 RHEL/CentOS 系统,创建”/etc/yum.repos.d/ivarch.repo”,内容如下:
[ivarch] name=RPMs from ivarch.com baseurl=http://www.ivarch.com/programs/rpms/$basearch/ enabled=1 gpgcheck=1之后再使用如下命令导入签名文件:
rpm --import http://www.ivarch.com/personal/public-key.txt完成之后,再使用之前的命令安装。
3] 使用 nc 和 pv 传输文件
假设我们想要传输主机 A 上的文件”CentOS-7-x86_64-Minimal-1810.iso”,则首先在主机 A 运行如下命令:
# tar -zcf - CentOS-7-x86_64-Minimal-1810.iso | pv | nc -l -p 5555 -w 5其中:
- tar -zcf – 为压缩工具,将之后的文件压缩传输,- 表示使用通信管理
- CentOS-7-x86_64-Minimal-1810.iso 为要压缩传输的文件
- pv 为显示网络传输情况
- nc 为网络传输工具,其中 -l 表示为侦听;-p 为侦听的端口,示例使用 5555;-w 为连接超时时限,示例为5秒
此时,就在主机 A 上启动了 nc,并且侦听 5555 端口等待连接进行文件传输。
之后,在主机 B 上运行如下命令连接 nc 主机并接收文件:
# nc 172.16.200.1 5555 | pv | tar -zxf -
现在,就可以直观的查看文件传输过程,并且正常接收文件了。
No comments:
Post a Comment