ファイルの名前を変更して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.sh sample.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として宛先ディレクトリにコピーしました。しかし、名前を変更してファイルをコピーする必要があります。
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
は、そのパスが存在し、すでにディレクトリまたはディレクトリへのリンクである場合にのみ、ディレクトリとして扱います)末尾にスラッシュを追加できます常にファイルではなくディレクトリとして扱われるようにする宛先パス。
ファイル内の単純なパスワードは悪い考えです。私の箱のほかに私には選択肢がありません-p passwd
。
リモートホストにアクセスできるため、次のコマンドを使用してキー(プライベートおよびパブリック)を生成します。
ssh-keygen
(すべてデフォルトを受け入れ、パスワードを使用しないでください)
この手順は、すべてのユーザーに対して実行する必要があります
その後、一度
ssh-copy-id ngqa@lnx25
この手順は、すべてのユーザーとすべてのホストに対して実行する必要があります。
あなたのシェルでは、最後の行は
scp $FILE $USERNAME@$Host:$DEST_PATH