未使用 shell 脚本执行无密码 sftp 上传命令

未使用 shell 脚本执行无密码 sftp 上传命令

我使用 ssh -t key_gen 选项减少了 sftp 密码,并且不再出现输入密码的提示,但是当我在 shell 脚本中编写要在 sftp 会话上执行的命令(如下所示)并执行它时,它们不会被执行,而我只是得到 sftp 的提示

#!/bin/sh

username=$1
ipaddr=$2
external_path=$3
extension=$4

sftp $username@$ipaddr
cd $external_path
get *.$extension
exit 

Result

sftp>

仅此而已

你能告诉我这是如何实现的吗?我的机器上也有 expect 实用程序,但是 sftp 不支持 -b 选项

谢谢,Priyanka

答案1

sftp username@ipaddress 将使 sftp 进入交互模式。(这就是为什么您会得到 sftp 样式的提示)

sftp 手册页

由于您正在使用 sftp 可编程性,因此您希望在非交互模式下使用它。

sftp $username@$ipaddr:$external_path/filename
#this would work except you need your wildcard * to be expanded

echo "get *" | sftp $username@$ipaddr:$external_path/
#This will work since you are piping the command get * into sftp. 
#* gets expanded by sftp and matching files in $external_path
#Are transfered to your current directory.

相关内容