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命令,它不起作用。 我正在使用无密码loginssh密钥。
如果问题中显示的缩进与实际脚本文件中的缩进相同,则可能是您的问题。 你的EOF需要在行首,或者你可以使用<<-EOF ,这将允许你缩进closuresEOF 但只使用制表符 – 不是空格。
ABC141是否与公钥/私钥连接? 如果没有,那么当您尝试传递命令时, sftp正在等待密码。 只需servername:~ABC141/.ssh/authorized_keys一个公共密钥安装到servername:~ABC141/.ssh/authorized_keys ,并将私钥放入~/.ssh/id_dsa或~/.ssh/id_rsa ,然后sftp应该连接干净而不必等待input密码。