从安全服务器获取文件列表

从安全服务器获取文件列表

我正在尝试从安全服务器获取文件列表,以便将它们(使用 diff)与我在本地版本上修改的文件进行比较(不幸的是,我所在的公司尚未使用 subversion 或 git)

我可以轻松获得文件列表:

find . -mtime -20 | grep "\.php\|\.js\|\.css" > changedfiles.log

我需要一个脚本来循环遍历此列表并将它们中的每一个安全复制(scp 或 rsync)到本地目录,并保留相对路径名。我试过:

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,所以我不能只压缩列表并通过一个命令下载它们

是否可以只输入一次密码?

答案1

不要设置无密码密钥,而是创建受密码保护的密钥并使用 ssh-agent 来确保每个作业只需输入一次。

生成密钥后,在脚本中添加如下前缀:

# Start a new agent
eval `ssh-agent -s`

# add keys with a two-hour time limit
ssh-add -t 7200 ~/.ssh/id_rsa

此时,系统会提示您输入密码。脚本完成后,如果您不想让 ssh-agent 继续运行,可以自动将其终止:

# kill the agent
ssh-agent -k

相关内容