2013-05-16 2 views
2

몇 가지 스크립트를 업데이트 할 기계가 있습니다. 필자는 목록에서 IP를 읽고 scp를 호출하는 while 루프로 구성된 내 bash 스크립트로이 작업을 수행 할 수 있습니다. 그것은 잘 작동하지만, 루프에서 업데이트 된 스크립트를 실행하려고하면 루프가 깨지지만 실행 자체는 꽤 괜찮습니다.루프가 ssh 실행 스크립트 옆에 깨졌습니다.

#!/bin/bash 

cat ip_list.txt | while read i; do 
    echo ${i} 
    scp the_script [email protected]${i}:/usr/sbin/ # works ok 
    ssh [email protected]${i} /usr/sbin/the_script # works for a first IP, then breaks 
done 

어떻게 작동하나요? 그렇다면 어떻게 루프를 깨지 않고 ssh를 통해 원격으로 스크립트를 실행할 수 있습니까?

+0

합니까는/usr/빈/the_script 반환 같은 SSH 라인을 변경하거나 차단해야? 차단하면 루프가 세션이 닫힐 때까지 계속되지 않습니다. 필요한 기능에 따라 카피 스트라 노가 대안이 될 수 있습니다. – TeTeT

+0

수동으로'/ usr/sbin /'에 넣는 것은별로 좋지 않습니다. 스크립트를 패키징하고 repo (rpm, deb 또는 다른 것으로 ...)를 통해 스크립트를 제공한다고 생각해 봤습니까? – glglgl

+0

당연히 모든 것이 RPM을 통해 제대로 업데이트됩니다. 그것은 단지 한가지 일입니다. 나는 희망. – akalenuk

답변

7

사용이 다음 -n 옵션은 표준 입력에서 읽을 수 없습니다 ssh을 알려줍니다

ssh -n [email protected]${i} /usr/sbin/the_script # works for a first IP, then breaks 

. 그렇지 않으면 stdin을 읽고이를 네트워크 연결로 전달합니다. 그러면 나머지 입력 파이프가 소모됩니다.