背景:
最近在使用nc进行远程文件传输的时候发现在文件传输完成时,没有正确的反馈,而是界面一直停留在传输阶段,加上使用nc传输需要设置一些诸如-l、 -p等参数,于是想将这些参数包裹在sh脚本中,一键执行脚本,方便快捷,具体如下:
一、本地端:
powershell
#!/bin/bash
# 初始化ip地址变量为空
ip_address=""
file_name=""
# 使用getopts处理-p和-f选项
while getopts p:f: option
do
case "${option}"
in
p) ip_address=${OPTARG};;
f) file_name=${OPTARG};;
esac
done
{ cat "$file_name"; printf '\nEOF\n'; } | nc "$ip_address" 12345
二、远程端:
powershell
file_name=" "
# 使用getopts处理-p和-f选项
while getopts f: option
do
case "${option}"
in
f) file_name=${OPTARG};;
esac
done
nc -l -p 12345 | while IFS= read -r line
do
if [[ "$line" == *EOF* ]]; then
pkill nc
else
echo "$line" >> $file_name
fi
done
echo "file pass successfully!"