find /abc/companies/ -name 'ABC141*.csv' | while read fname
do
sftp ABC141@servername <<EOF
cd ../ABC141_01/
put $fname
quit
EOF
mv $fname ./archive/$(basename $fname)-$(date +%Y%m%d-%T)
done
我尝试使用 scp 命令,但它不起作用。我正在使用无密码登录 ssh 密钥。
答案1
如果问题中显示的缩进与实际脚本文件中的缩进相同,那么这可能是您的问题。您EOF
需要位于行首,或者您可以使用<<-EOF
and,这将允许您缩进结束EOF
但仅使用标签- 没有空格。
答案2
ABC141 是否使用公钥/私钥连接?如果没有,则sftp
当您尝试向其传递命令时,它会等待密码。只需将公钥安装到 中servername:~ABC141/.ssh/authorized_keys
,将私钥安装到 中~/.ssh/id_dsa
,然后~/.ssh/id_rsa
就sftp
可以干净地连接,而无需等待输入密码。