网站首页 > 技术教程 正文
Unix 哲学强调小而简单的工具,利用它们组合起来完成复杂的任务。Windows Subsystem for Linux (WSL) 为我们提供了一个可以在 Windows 上运行 Linux 工具的环境,从而让我们得以体验这种哲学。在这篇文章中,我们将从简单的消息通讯命令开始,逐步增加功能,探索如何通过 nc、tar 和 openssl 等命令行工具高效地实现文件传输,并体验 Unix 哲学的精髓。
从 nc 开始:简单的收发消息
nc(Netcat)是一个非常简洁且强大的命令行工具,通常用于网络调试,但它也可以用于消息传输。通过它,你可以轻松的在两台主机之间建立tcp连接,然后就可以利用这个连接进行消息通信,是一个入门级的工具来体验 Unix 哲学中的简洁与灵活性。
首先,我们需要有一台可以被访问的Linux服务器(如果没有就再开一个wsl窗口当作是服务器),在服务器端启动 nc,让它监听一个指定端口,准备接收来自Windows端的连接请求。假设监听端口 12345:
nc -l -p 12345
在Windows的WSL窗口中,我们使用 nc 命令连接服务器监听的端口12345,与服务器建立一个连接,这里假设服务器ip是192.168.1.100:
nc 192.168.1.100 12345
连接是双向的,现在任意一端都可以在键盘上输入文字,按回车后就可以发送到对方的屏幕上,按ctl+c停止连接。
使用 nc 进行简单的文件传输
linux下有个cat命令可以查看文件内容,把文件内容显示在屏幕上,竖线符号“|”是管道符可以把输出到屏幕上的内容传递给下一个程序,我们结合使用cat和nc命令,就可以把文件发送到另一台主机屏幕上进行显示。
假设我们需要传输一个文件 file.txt,首先需要在接收端(Linux 服务器)启动一个监听命令:
nc -l -p 12345
在发送端(WSL)发送文件:
cat file.txt | nc 192.168.1.100 12345
这样,文件的内容就会在 Linux 服务器的监听界面显示。
若要把文件保存下来,在服务器端使用输出重定向符号">",把打印到屏幕的内容重定向到文件就可以了:
nc -l -p 12345 > received_file.txt
如果想从服务器向wsl传输文件,仍然是先在服务器端启动监听命令:
cat file.txt | nc -N -l -p 12345
然后,再用wsl的终端命令去连接这个端口接收文件:
nc -d 192.168.1.100 12345 > received_file.txt
注意:在新的命令里我新增加了-N和-d参数,这是为了在文件传输结束后自动断开连接。-N加在发送数据的一方,-d加在nc不是监听状态前面又没有管道符的情况。
使用 tar 传输整个目录
虽然 nc 非常适合传输单个文件,但如果需要传输整个目录,使用 tar 来打包并压缩目录是一个非常好的选择。通过管道将 tar 和 nc 结合,可以实现高效的目录传输。
在Linux 服务器端,我们同样使用 nc 来监听端口,根据是想上传文件还是下载文件执行以下命令:
把整个文件目录上传到服务器:
nc -l -p 12345 | tar -zxvf - -C /path/to/destination/
将服务器上的某个目录下载到WSL端:
tar -zcvf - -C /path/to/ destination | nc -N -l -p 12345
tar -xvf -:通过 tar 解包从标准输入接收到的数据。
tar -cvf -:将目录/path/to/下的destination打包成 tar 文件,输出到标准输出。
-C /path/to/destination/:指定打包或解包的目标目录。
在WSL端执行与服务端所使用的对应命令:
把整个文件目录上传到服务器:
tar -zcvf - -C /path/to/ destination | nc -N 192.168.1.100 12345
将服务器上的某个目录下载到WSL端:
nc -d 192.168.1.100 12345 | tar -zxvf - -C /path/to/destination/
这个操作可以高效地将整个目录在远程服务器上传或下载,并且只需要有一方的IP是可访问的。
使用 openssl 进行加密传输
尽管 nc 非常方便,但它本身并不加密数据。因此,在网络不安全或传输敏感数据时,我们需要使用加密工具来确保数据的安全性,openssl 是一个非常强大的加密工具。
假设我们要使用 AES 加密传输文件或目录,我们只需要把加密和解密的命令放在tar和nc命令中间即可,例如:
在发送方增加加密操作:tar -zcvf - -C /path/to/ destination | openssl aes-256-cbc -e -k "password" | nc -N 192.168.1.100 12345
openssl aes-256-cbc -e -k "password":使用 AES-256-CBC 加密数据。
在接收方增加解密操作:nc -l -p 12345 | openssl aes-256-cbc -d -k "password" | tar -zxvf - -C /path/to/destination/
openssl aes-256-cbc -d -k "password":使用 AES-256-CBC 解密数据,-k 参数后跟密码。
这个过程确保了文件在传输过程中的安全性,只有持有密码的接收方才能解密数据。
Unix 哲学的体验
通过结合使用 nc、tar 和 openssl,我们能够实现一个从简单到复杂的文件传输流程,每个工具都专注于一个明确的任务,通过管道和组合将它们巧妙地组合起来,完成了一个更复杂的任务。这正是 Unix 哲学的核心思想:“做一件事,并做好它。”
如果你还没有体验过这种方法,强烈建议你在 WSL 中实践一下,你会发现命令行工具的巨大潜力。
希望这篇文章对你有所帮助!如果你有任何问题,或者需要进一步的交流,请随时在评论区留言!
- 上一篇: Python也有“管道”操作,你知道吗?
- 下一篇: tidyverse使用推荐
猜你喜欢
- 2025-05-28 通过代码执行或命令执行写Shell
- 2025-05-28 安卓系统再曝ROM级木马“万蓝” 360手机卫士首家查杀
- 2025-05-28 常用液压元件符号
- 2025-05-28 Linux 的这几种搜索方式,你都会了吗?
- 2025-05-28 R语言——带有误差线和显著性标记的柱状图如何做?
- 2025-05-28 管道图纸上常用符号知多少?管网图常用符号大全!值得收藏备用!
- 2025-05-28 收藏 | 记住这些符号,你也能看懂消防工程图!
- 2025-05-28 「干货」Linux 中的零拷贝技术你居然还不知道?
- 2025-05-28 IT运维与网络工程师必会的30个网络抓包/调试工具
- 2025-05-28 linux 系统中正则表达式的使用
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)