脱出SSH:

脱出SSH:

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)

中期:

長い:

引用:

PS:ここにパスワードを貼り付けないでください:-)。

おすすめ記事