scp
서로 다른 두 위치와 다른 서버 에 있는 사용자 프롬프트의 날짜 파일을 가져오고 싶습니다 . 이것이 제가 지금까지 한 일입니다. 파일에서 상수를 읽고 if 조건을 사용하여 조건을 지정하려고 합니다.
- path1(
/nrtrdepath/
)에는 파일이 1개 있습니다. - 경로 2(
/dcs/arch_05/AUDIT_REPORT/SL_AUDIT_REPORT/
) 2개 파일
모든 파일은 scp
한 위치에 있어야 합니다.
고쳐 쓰다암호
#=================================
#description :This script will scp user prompted SL audit files to another SCP /tmp/SL_Audit_Report/ path .
#author :Prabash
#date :20170902
#================================
true > /home/cmb/SL__scripts/Prabash/list2.txt
read -p "Enter Date " n
ls -lrt /nrtrdepath/ | awk {'print $9'} | grep AuditReport_SL_nrtrde_$n.csv >> /home/cmb/SL__scripts/Prabash/list2.txt
ls -lrt /dcs/SL_AUDIT_REPORT/ | awk {'print $9'} | grep AuditReport_SL_ICT_$n.csv.gz >> /home/cmb/SL__scripts/Prabash/list2.txt
ls -lrt /dcs/SL_AUDIT_REPORT/ | awk {'print $9'} | grep AuditReport_SL_BI_$n.csv.gz >> /home/cmb/SL__scripts/Prabash/list2.txt
k=`cat /home/cmb/SL__scripts/Prabash/list2.txt`
while IFS= read -r k ; do
if [[ $k == AuditReport_SL_nrtrde* ]] ; then
scp /nrtrdepath/$k [email protected]:/tmp/SL_Audit_Report/
else
for i in $k; do scp /dcs/SL_AUDIT_REPORT/$i [email protected]:/tmp/SL_Audit_Report/
fi
done
답변1
당신이 원하는 것은 날짜 문자열을 기반으로 세 개의 파일을 선택하고 scp
해당 파일을 다른 위치에 저장하는 것 같습니다. 이는 다음을 통해 수행할 수 있습니다.
#!/bin/sh
thedate="$1"
scp "/nrtrdepath/AuditReport_SL_nrtrde_$thedate.csv" \
"/dcs/SL_AUDIT_REPORT/AuditReport_SL_ICT_$thedate.csv.gz" \
"/dcs/SL_AUDIT_REPORT/AuditReport_SL_BI_$thedate.csv.gz" \
[email protected]:/tmp/SL_Audit_Report/
당신은 이것을 실행할 것입니다
$ sh ./script "datestring"
datestring
파일 이름에서 날짜로 사용할 문자열은 어디에 있습니까?
. scp
처럼 여러 파일을 한 위치에 복사할 수 있기 때문에 이는 작동합니다 .cp
일부 오류 검사를 통해 다음을 수행합니다.
#!/bin/sh
thedate="$1"
if [ ! -f "/nrtrdepath/AuditReport_SL_nrtrde_$thedate.csv" ]; then
printf 'AuditReport_SL_nrtrde_%s.csv is missing\n' "$thedate" >&2
do_exit=1
fi
if [ ! -f "/dcs/SL_AUDIT_REPORT/AuditReport_SL_ICT_$thedate.csv.gz" ]; then
printf 'AuditReport_SL_ICT_%s.csv is missing\n' "$thedate" >&2
do_exit=1
fi
if [ ! -f "/dcs/SL_AUDIT_REPORT/AuditReport_SL_BI_$thedate.csv.gz" ]; then
printf 'AuditReport_SL_BI_%s.csv is missing\n' "$thedate" >&2
do_exit=1
fi
if [ "$do_exit" -eq 1 ]; then
echo 'Some files are missing, exiting' >&2
exit 1
fi
if ! scp "/nrtrdepath/AuditReport_SL_nrtrde_$thedate.csv" \
"/dcs/SL_AUDIT_REPORT/AuditReport_SL_ICT_$thedate.csv.gz" \
"/dcs/SL_AUDIT_REPORT/AuditReport_SL_BI_$thedate.csv.gz" \
[email protected]:/tmp/SL_Audit_Report/
then
echo 'Errors executing scp' >&2
else
echo 'Transfer is done.'
fi
답변2
파일에 변수 할당이 있는 경우 파일을 가져와 활성화할 수 있습니다.
source /path/to/config_file