IP 주소 목록이 있습니다. 최종 목표는 각 주소로 ssh를 보내서 한 번에 하나씩 다시 설정하는 것입니다. 나는 리눅스/배쉬 (Linux/Bash)를 사용하도록 요청 받았는데, 나는 그다지 친숙하지 않다. 내 코드는 이제 목록에서 첫 번째 IP를 가져 와서 연결하지만 결코 그 지점을 지나서 이동하지는 않습니다. 문제가 read oneip3
과 do
코드 사이에 있다고 생각합니다. 어떤 도움이라도 대단히 감사합니다. 다음과 같이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
첫 번째 'echo'옵션에 대해'-e' 옵션이 누락 된 것 같습니다. 그 외에도 원격 호스트에 연결할 때 어떤 프로그램이 실행되는지 알지 못하기 때문에 문제가 무엇인지 말할 수 없습니다. (당신이 그것에 파이핑하는 텍스트를 주면 쉘이 아닌 것 같습니다.) – chepner
'ssh'가 여기에서 서브 쉘 그룹을 읽고 있기 때문에'read'로 공유되는 stdin이 아니라이 질문을 다시 열었습니다. 다른 질문. –
@ValleyDigital 호스트 키 확인 또는 암호 프롬프트에 매달려 있습니까? 당신은 stdin에있는 것과 같은 대답을 파이프 할 수 없습니다. '-o StrictHostKeyChecking = no'를 사용하여 호스트 키 검사를 비활성화하고 인증을위한 키 쌍을 설정 한 다음 다시 시도하십시오. –