当前位置: 首页 > news >正文

基于ubuntu nc指令实现远程传输文件到嵌入式设备中

背景:

最近在使用nc进行远程文件传输的时候发现在文件传输完成时,没有正确的反馈,而是界面一直停留在传输阶段,加上使用nc传输需要设置一些诸如-l、 -p等参数,于是想将这些参数包裹在sh脚本中,一键执行脚本,方便快捷,具体如下:

一、本地端:

#!/bin/bash# 初始化ip地址变量为空
ip_address=""
file_name=""# 使用getopts处理-p和-f选项
while getopts p:f: option
docase "${option}"inp) ip_address=${OPTARG};;f) file_name=${OPTARG};;esac
done{ cat "$file_name"; printf '\nEOF\n'; } | nc "$ip_address" 12345

二、远程端:

file_name=" "
# 使用getopts处理-p和-f选项
while getopts f: option
docase "${option}"inf) file_name=${OPTARG};;esac
done
nc -l -p 12345 | while IFS= read -r line
doif [[ "$line" == *EOF* ]]; thenpkill ncelseecho "$line" >> $file_namefi
done
echo "file pass successfully!"

三、执行

1. 先远程端:sh receive.sh -f {文件名称}

2. 后本地端:sh server_send.sh -p {远程ip} -f {文件名称}

四、更新

上述的脚本在传输二进制文件的时候,由于cat指令会造成二进制文件的修改,因此在传输二进制文件的时候可能会出现文件传输不完整的情况,因此将脚本文件修改如下:

 一、本地端:
```powershell
#!/bin/bash# 初始化ip地址变量为空
ip_address=""
file_name=""# 使用getopts处理-p和-f选项
while getopts p:f: option
docase "${option}"inp) ip_address=${OPTARG};;f) file_name=${OPTARG};;esac
done# 使用nc命令传输文件
cat "$file_name" | nc -q 1 "$ip_address" 12345二、远程端:
file_name=" "
# 使用getopts处理-p和-f选项
while getopts f: option
docase "${option}"inf) file_name=${OPTARG};;esac
done
nc -l -p 12345 > $file_name
echo "file pass successfully!"剩余的按照第三步执行脚本就可以了,祝好
http://www.lryc.cn/news/256951.html

相关文章:

  • 蓝桥杯 day01 奇怪的数列 特殊日期
  • properties配置和读取
  • 如何利用人工智能+物联网技术实现自动化设备生产
  • STM32CubeMx+MATLAB Simulink串口输出实验
  • React中每次渲染都会传入一个新的props.children到子组件?
  • Qt 通过命令行编译程序
  • WireShark监控浏览器登录过程网络请求
  • 202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制
  • 智能优化算法应用:基于法医调查算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 使用MfgTool烧写工具烧写自制系统
  • react中使用react-konva实现画板框选内容
  • es6 相关面试总结
  • 【Hive】——数据仓库
  • 算法基础九
  • QT-在ui界面中给QWidget增加Layout布局的两种方法
  • 免费的网页数据抓取工具有哪些?【2024附下载链接】
  • 报错:Parsed mapper file: ‘file mapper.xml 导致无法启动
  • Linux驱动开发学习笔记2《LED驱动开发试验》
  • hive数据库查看参数/hive查看当前环境配置
  • ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。百度使用哪种方式?
  • STM32用flash保存参数实现平衡擦写的一种方法
  • Aho Corasick Algorithm
  • 用户管理 --汇总
  • Flutter视频播放器在iOS端和Android端都能实现全屏播放
  • 面试遇到的一些问题(二)
  • JDK8新特性:Lambda表达式规则及用法,方法引用
  • 【GIS】JDK版本升级到17后,GeoServer的图层无法通过openLayer预览
  • vue 批量下载文件,不走后端接口的方法
  • 科技云报道:AI+PaaS,中国云计算市场迎来新“变量”?
  • Windows Service Name重复问题