2016-07-20 3 views
0

IP 주소 목록이 있습니다. 최종 목표는 각 주소로 ssh를 보내서 한 번에 하나씩 다시 설정하는 것입니다. 나는 리눅스/배쉬 (Linux/Bash)를 사용하도록 요청 받았는데, 나는 그다지 친숙하지 않다. 내 코드는 이제 목록에서 첫 번째 IP를 가져 와서 연결하지만 결코 그 지점을 지나서 이동하지는 않습니다. 문제가 read oneip3do 코드 사이에 있다고 생각합니다. 어떤 도움이라도 대단히 감사합니다. 다음과 같이bash를 사용하여 '읽는 동안'을 사용하여 목록을 반복합니다.

나는이 스크립트를 실행하는 방법은 다음과 같습니다 (I 별도의 텍스트 파일에 IP 주소 목록이있는) :

./runscript.txt ip_list.txt 


while read oneip3 
do 
(sleep 5 
echo "yes\r" 
sleep 3 
echo -e "password\r" 
sleep 3 
echo -e "reset\r" 
sleep 3 
echo -e "yes\r" 
sleep 20 
echo -e "\r" 
) | ssh -t -t -oHostKeyAlgorithms=+ssh-dss [email protected]$oneip3 
done < $1 
+1

첫 번째 'echo'옵션에 대해'-e' 옵션이 누락 된 것 같습니다. 그 외에도 원격 호스트에 연결할 때 어떤 프로그램이 실행되는지 알지 못하기 때문에 문제가 무엇인지 말할 수 없습니다. (당신이 그것에 파이핑하는 텍스트를 주면 쉘이 아닌 것 같습니다.) – chepner

+0

'ssh'가 여기에서 서브 쉘 그룹을 읽고 있기 때문에'read'로 공유되는 stdin이 아니라이 질문을 다시 열었습니다. 다른 질문. –

+1

@ValleyDigital 호스트 키 확인 또는 암호 프롬프트에 매달려 있습니까? 당신은 stdin에있는 것과 같은 대답을 파이프 할 수 없습니다. '-o StrictHostKeyChecking = no'를 사용하여 호스트 키 검사를 비활성화하고 인증을위한 키 쌍을 설정 한 다음 다시 시도하십시오. –

답변

0

당신은 SSH 인수를 제공하지 않았다. 따라서 대화식 셸이 열립니다. 이 (

것은 StrictHostKeyChecking 너무 좋은 솔기에 대해이 코멘트에

... | ssh -t -t -oHostKeyAlgorithms=+ssh-dss "[email protected]$oneip3" pwd 

다른 발언을 디버깅하려고 (아마도 ... 다른 이유가) 최초의 기계에 부착 할 좋은 이유 당신 경우 보안에 대해 정말로 우려하고 있습니다. 먼저 필요한 모든 키를 손으로 배포 할 수 있습니다.)

관련 문제