한 줄에 하나씩 나열된 모든 서버 집합에서 특정 스크립트를 실행하기 위해 함께 데이지 체인으로 연결되는 몇 가지 간단한 스크립트가 있습니다.왜 bash 루프 배포 스크립트는 한 번만 작동하는 것처럼 보입니까?
단일 서버 배포 스크립트는 다음이 포함
1 #!/bin/bash
2
3 file=$1
4 host=$2
5
6 scp ${file} ${host}:/tmp/
7 USER=`whoami`
8 ssh -t -t [email protected]${host} /tmp/${file}
9
10 ssh "${host}" /bin/rm /tmp/${file}
11 exit
그것은 내가 냠가 공유 클래스 디렉토리에 바람둥이와 심볼릭 링크 하둡/HBase와의 CONFIGS를 설치하는 것이이 스크립트에서 잘 작동합니다.
1 #!/bin/bash
2
3 script=$1
4
5 cat dumbo-hosts | while read fileline
6 do
7 echo ${fileline}
8 ./deploy.sh ${script} ${fileline}
9
10 sleep 10
11 done
무엇 발생하면, 스크립트가 한 번 실행한다는 것입니다과 :
두 번째 주요 파일은 호스트 목록을 구문 분석하고 그들 모두에 배포 스크립트를 실행하도록하는 deploy-all.sh입니다 그래서 그것을 한 번 끊어지고 표준 입출력과 관련된 뭔가 추정 내가 주석 경우
$ ./deploy-all.sh setup-tomcat.sh
line is hadoop01.myhost
setup-tomcat.sh 100% 455 0.4KB/s 00:00
tcgetattr: Inappropriate ioctl for device
hadoop02.myhost
hadoop03.myhost
hadoop04.myhost
<succesful output of hadoop01 task>
...
Connection to hadoop01.myhost closed.
는 SSH 루프가 4 개 호스트를 통해 성공적으로 실행 명령 : 다음 for 루프가 고장 ... 나는 다음과 같은 출력과 같이있어 ssh가 발생합니다. 또한 tcgatattr 오류는 다소 우려됩니다.
어떻게이 문제를 해결할 수 있습니까? 정확하게 tcgetattr 오류를 일으키는 것은 무엇입니까 (관련이 있는지 확실하지 않습니다)? 셸 스크립트를 많이 사용하지 않아서 정말 미안하다면 정말 도움이 될만한 도움이 될 것입니다.
해결 된 문제입니다. 감사합니다. 아직도 점점 : tcgetattr : 장치에 부적절한 ioctl 오류가 있지만 스크립트가 올바르게 실행되고 있습니다. – juhanic
ssh에 '-t'옵션이 있다고 생각합니다. ssh의 최신 버전에는 더 이해하기 쉬운 오류 메시지가 있다고 생각합니다. – Petesh
'rsh'와 동일한 문제와 수정. – mustaccio