詳細:

詳細:

40日を過ぎたファイルをリモートからローカルホストに転送したいと思います。リモートサーバーに接続できますが、リモートサーバーからローカルサーバーにファイルを転送できません。そのファイルやディレクトリはありませんが、ファイルがリモートホストに存在するというエラーが発生します。

詳細:

file=`sshpass -p "password" ssh username@server_ip "find /arch -type f -ctime -40"`
sshpass -p "password" scp -r  username@server_ip:$file /arch
echo SCP Completed.

エラー情報:

cp: cannot stat ‘/arch/file1.xls’: No such file or directory

ベストアンサー1

次のいずれか1つに注意を払う必要があります。

  • 権限:ファイルを読み取るための正しい権限がない可能性があります。
  • 複数行の回答:クエリの結果として複数のファイルが提供されることがあります。

簡単に言えば、おそらくあなたの問題はsshpass

これから権限関連の問題はないと考えます。

あなたができることは次のとおりです。

files="$(sshpass -p "passwd" ssh -l username rhost "find /arch -type f -ctime -40")"
for file in ${files}; do
  if sshpass -p "passwd" scp "username@rhost:${file}" /arch; then
    printf "SCP Completed\n"
  fi
done

理論的には、アクセスできないファイル(フォルダ)に印刷される$filesため、スクラップできないコンテンツはないため、個別に管理する必要があります。findstderr

すべてのオプションの中で、ループ内で条件を結合してstderr追加したり、別の変数(またはファイル)にエラーを保存したり、別々にループを繰り返すことができます。stdoutfor

おすすめ記事