비밀번호를 사용하고 파일 이름을 바꾸는 scp

비밀번호를 사용하고 파일 이름을 바꾸는 scp

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

관련 정보