我有一个包含 950 个 MongoDB VM 的列表
我希望收集所有 mongodb.log。日志文件的路径取决于数据库名称。
for i in $(cat /tmp/mongonodes.txt) ; do sshpass -p34dDgdWger@rg4fll434ef scp root@$i:/data/*replicaset/*replicaset*/mongodb.log /tmp/$i-mongodb.log; done
上面的命令不起作用。root@$i:/data/*replicaset/*replicaset*/mongodb.log
由于主机名可变,我无法单引号。
SSH 密钥不是一个选项。
答案1
逃脱 SSH:
- 考虑通过 SSH 移动数据,
*
使用\
or""
(引号)转义。您不需要转义变量,只需转义 scp host:"path\ *" 例如。您可能需要逃避它两次。
例如,使用\*
:
# On server (created a test log to replicate your scenario):
mkdir -p /data/TEST1replicasetTEST2/TEST3replicasetTEST4
touch /data/TEST1replicasetTEST2/TEST3replicasetTEST4/mongodb.log
# On client (I already have ssh keys, but sshpass will work all the same):
for i in $(cat /tmp/mongonodes.txt)
do
scp cmihai@$i:/data/\*replicaset\*/\*replicaset\*/mongodb.log \
/tmp/$i-mongodb.log
done
结果:
mongodb.log 100% 0 0.0KB/s 00:00
$ ls /tmp/*mongo*
/tmp/192.168.136.148-mongodb.log /tmp/mongonodes.txt
短期:
- 设置
SSH keys
并将它们分发到您的服务器(例如:ssh 复制 ID)
中期:
长期:
参考:
- http://jasonwilder.com/blog/2012/01/03/centralized-logging/
- http://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/
- http://www.howtogeek.com/66776/how-to-remotely-copy-files-over-ssh-without-entering-your-password/
PS:不要在此处粘贴您的密码:-)。