如何通过SFTP批量上传+输入密码?

时间:2015-07-16 17:42:06

标签: bash passwords sftp

我正在尝试创建upload.sh,让我通过SFTP上传多个文件:

upload.sh file1 file2 file3
upload.sh subfolder/*

在每种情况下,都应提示用户输入remoteFS密码。

可能看起来像这样:

ls -1 $*  > tmp.txt
sftp -b tmp.txt root@1.2.3.4:/remotefs/path/to/html/

上述内容并不正确,因为tmp.txt会包含一个文件名列表,并且应该包含一个sftp put foo/file.bar命令列表。

但即使我开始工作(目前我通过手动创建tmp.txt文件进行模拟),我遇到了这个问题:How to send password using sftp batch file

即。它不是sftp请求密码,而是失败。

有没有办法强迫它申请密码?

将密码存储在.sh中是不好的做法,此时我不想涉及SSH密钥(我使用此方案向数学学生演示shell脚本,以及我不想升级复杂性。)

1 个答案:

答案 0 :(得分:1)

试试这个:

#!/bin/bash

[[ ${#} -eq 0 ]] && exit 1

(
  echo "cd /remotefs/path/to/html";
  for file in "$@"; do
    echo "put '$file'"
  done
) | sftp root@1.2.3.4