柳州网站优化,开平网页设计,网站开发接私活的经理,百度推广平台登录背景#xff1a;
最近在使用nc进行远程文件传输的时候发现在文件传输完成时#xff0c;没有正确的反馈#xff0c;而是界面一直停留在传输阶段#xff0c;加上使用nc传输需要设置一些诸如-l、 -p等参数#xff0c;于是想将这些参数包裹在sh脚本中#xff0c;一键执行脚本…背景
最近在使用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!剩余的按照第三步执行脚本就可以了祝好