我试图从安全服务器上获取文件列表,以比较它们(使用差异)到我修改的本地版本(不幸的是,我工作的公司不是使用颠覆,也没有Git)
我可以轻松获得文件列表:
find . -mtime -20 | grep "\.php\|\.js\|\.css" > changedfiles.log
我需要的是一个脚本,它将遍历这个列表并安全地将它们中的每一个(scp或rsync)复制到本地目录,保留相对path名。 我试过了:
for line in `cat changedfiles.log` do DIRPATH=`dirname "$line"` `mkdir -p myfiles/$DIRPATH` scp user@host:/remotepath/$line myfiles/$line done
但SCP不断要求我的密码(我不想设置密码为基础的密码为scp无密码)
我不允许ssh在远程服务器上,所以我不能在一个命令下拉列表并下载它们
是否有可能做一些input密码只有一次?
创build密码保护密钥,并使用ssh-agent确保每个作业只需input一次,而不是设置无密码密钥。
在生成你的密钥之后,用你的脚本加上这样的前缀:
# Start a new agent eval `ssh-agent -s` # add keys with a two-hour time limit ssh-add -t 7200 ~/.ssh/id_rsa
此时,系统会提示您input密码。 在你的脚本完成后,如果你不想让它继续运行,你可以自动终止ssh-agent:
# kill the agent ssh-agent -k