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を介してデータを移動するか、エスケープを
*
使用することを検討してください。変数をエスケープする必要はありません。たとえば、scp host:"path\ *" だけです。 2回エスケープする必要があります。\
""
たとえば、次のようにします\*
。
# 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:ここにパスワードを貼り付けないでください:-)。