用nc实现两台主机间的文件传输(不需要输密码) 通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时性的任务,准备工作还是比较麻烦。 本笔记介绍一种简单的不用密码即可实现两台主机间的文件传输的技巧—借助Linux的nc工具,方便之处:1) Linux系统通常默认安装nc工具,不需额外安装;2) 传输文件时不需输入密码。不足之处:需要在两台机器上分别输入一条命令。^_^ 1. what is nc ? nc是netcat的简写,关于nc是什么,man如是说:arbitrary TCP and UDP connections and listens nc可以方便地实现任意TCP/UDP端口的侦听,连接的建立,端口的扫描,等等。也即,nc既可以作为server以TCP或UDP方式侦听指定端口,也可以作为client发起TCP连接或方式UDP包。下面要介绍的技巧就是借助其TCP连接来实现主机间文件传输的。 nc的控制参数不少,常用的几个参数如下所列: 1) -l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。 2) -p
nc -l -p 8210 > demo.txt # 在本机8210端口侦听TCP连接,将收到的数据写入文本文件
nc -l -p 8210 > demo.tar.bz2 # 在本机8210端口侦听TCP连接,将收到的数据写成压缩文件
2)在数据发送方机器上向指定地址(ip+port)以TCP方式发送数据
nc dest_ip 8210 < demo.txt # 向ip为dest_ip的机器的8210端口发送demo.txt文件
nc dest_ip 8210 < $(tar -jcvf demo.tar.bz2 demo.txt) # 压缩后发送
3)-v打印出错信息
接收方:nc -v -l -p 8210
发送方:nc -v dest_ip 8210
注意:使用nc传文件时,需注意操作次序,receiver先侦听端口,sender向receiver所在机器的该端口发送数据。否则发送失败。