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\ *" 만 있으면 됩니다. 두 번 이스케이프해야 할 수도 있습니다.\
""
예를 들어 다음을 사용합니다 \*
.
# 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: 여기에 비밀번호를 붙여넣지 마세요 :-).