scp 명령을 실행하고 파일 이름을 바꿔야 합니다.
다음 코드를 시도했습니다.
HOST=lnx25
USERNAME=ngqa
PASSWORD=xxxxx
FILE=$1
FILE_NAME=`echo $FILE | awk 'BEGIN{FS="/"} {print $NF;}'`
todayDateVar=`date | awk 'BEGIN{FS=" ";OFS="_"} {print $2,$3,$6;}'`
REPORT_HOME="/dnbusr1/ngqa/scp_script/new/"
DES_PATH="/ngdata/nc_donotdelete/test_out_files/$FILE_NAME.$todayDateVar"
scp $FILE $USERNAME:"$PASSWORD"@$HOST:sys_config $DES_PATH
결과: (./scp.shsample.obj를 사용하여 실행)
/ngdata/nc_donotdelete/test_out_files/sample.obj.Sep_23_2014: No such file or directory
이 오류는 해당 이름으로 사용할 수 있는 디렉터리가 없음을 나타내는 것 같습니다. 하지만 파일 이름을 바꾸지 않고 시도할 때마다 정상적으로 작동한다는 의미입니다. 다음 코드는 파일 이름을 바꾸지 않고도 작동합니다.
DES_PATH="/ngdata/nc_donotdelete/test_out_files"
Sample.obj라는 파일을 대상 디렉터리에 복사합니다. 하지만 파일을 복사하고 이름을 바꿔야 합니다.
답변1
DES_PATH="/ngdata/nc_donotdelete/test_out_files/$FILE_NAME.$todayDateVar"
작동하지 않고 작동 DES_PATH="/ngdata/nc_donotdelete/test_out_files"
한다면 /ngdata/nc_donotdelete/test_out_files
그것은 존재하지 않는다는 것을 의미합니다.파일이 /ngdata/nc_donotdelete/test_out_files
다음 으로 저장됩니다./ngdata/nc_donotdelete/test_out_files/$1
(대상 경로는누구나디렉터리 또는 파일 이름이며 scp
존재하고 이미 디렉터리 또는 디렉터리 링크인 경우에만 디렉터리로 처리됩니다.) 대상 경로 끝에 슬래시를 추가하여 항상 파일이 아닌 디렉터리 디렉터리로 처리되도록 할 수 있습니다. .
답변2
파일에 순수한 비밀번호를 사용하는 것은 좋은 생각이 아닙니다. 나는 내 상자에 올라타는 것 외에는 선택의 여지가 없습니다 -p passwd
.
원격 호스트에 액세스할 수 있으므로 다음 명령을 사용하여 키(개인 및 공개)를 생성해야 합니다.
ssh-keygen
(모든 기본값을 수락하고 비밀번호를 사용하지 않음)
모든 사용자가 이 단계를 수행해야 합니다.
그러다가 한 번
ssh-copy-id ngqa@lnx25
이 단계는 각 사용자와 각 호스트에 대해 수행되어야 합니다.
그런 다음 셸에서 마지막 줄은 다음과 같아야 합니다.
scp $FILE $USERNAME@$HOST:$DEST_PATH