我需要并行运行一些命令,包括SCP。为此,我使用GNU Parallel。问题是我不知道如何将密码传递给SCP。这是一条类似于我正在运行的那条线:
ls 2011_* | parallel scp {} user@domain
如果ls
找到3个文件,scp会同时询问3次密码,我只能输入密码到最后一个进程来提示。
我暂时解决了使用公钥连接的问题,但由于公司政策的原因,将来这不会是一个选项。我阅读了SCP手册,我找不到一个选项,但我非常确信Parallel应该有一个允许我输入密码的选项。
有人知道解决这个问题的方法吗?
编辑:我想知道是否有一种方法可以告诉parallel
密码,以便每次要求时都可以将密码提供给scp
。也许有这样的事情:
ls 2011_* | parallel scp {} user@domain < file_with_password.txt
但指定STDIN
的重定向适用于scp
,而不适用于ls
或parallel
。
答案 0 :(得分:4)
您需要查看ssh-agent
:拥有密码保护证书的好处,只需输入一次密码短语一次。
答案 1 :(得分:2)
parallel sshpass -p $PASS scp -P $PORT -rp {} ~/to_dir ::: $ADDRESS:~/from_dir/*