탈출 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\ *" 만 있으면 됩니다. 두 번 이스케이프해야 할 수도 있습니다.\""

예를 들어 다음을 사용합니다 \*.

# 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: 여기에 비밀번호를 붙여넣지 마세요 :-).

관련 정보