我正在尝试创建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脚本,以及我不想升级复杂性。)
答案 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