cat hosts.txt | while read h; do telnet $h; done
내가 이것을 실행하면 연결을 거부 첫번째 호스트로 텔넷 접속하지만 대신 파일에서 다른 호스트에 걸쳐 반복의 종료 후 종료합니다. 첫 번째 호스트 이후에 루프가 종료되는 이유는 무엇입니까? 어떻게 해결할 수 있습니까?루프는 첫 번째 반복
감사합니다.
cat hosts.txt | while read h; do telnet $h; done
내가 이것을 실행하면 연결을 거부 첫번째 호스트로 텔넷 접속하지만 대신 파일에서 다른 호스트에 걸쳐 반복의 종료 후 종료합니다. 첫 번째 호스트 이후에 루프가 종료되는 이유는 무엇입니까? 어떻게 해결할 수 있습니까?루프는 첫 번째 반복
감사합니다.
텔넷은 대화 형입니다. 너는 실제로 무엇을하고 싶니? 당신이 "텔넷"세션을 자동화하려는 경우, 당신은 내 bash
에서 잘 작동 SSH
while read -r host
do
ssh <options> <commands> "$host"
done <"hosts.txt"
를 사용할 수 있습니다
$ cat hosts.txt
machine1
machine3
$ cat hosts.txt | while read h; do telnet $h; done
Trying 9.190.123.47...
telnet: Unable to connect to remote host: Connection refused
Trying 9.190.123.61...
telnet: Unable to connect to remote host: Connection refused
을하지만, 나는 컴퓨터에 연결할 때 이하지 않는 것을 연결을 거부, 내가 얻을 : 나는 실제로 성공적으로 를 연결하고 있습니다 때문에
$ cat hosts.txt
machine2
machine1
machine3
$ cat hosts.txt | while read h; do telnet $h; done
Trying 9.190.123.48...
Connected to machine2.
Escape character is '^]'.
Connection closed by foreign host.
의 그이고 다른 모든 호스트 이름은 telnet
세션으로 전송됩니다. 이들은 로그인을 시도하는 데 의심의 여지가 없으며 나머지 호스트 이름은 사용자/암호로 유효하지 않으므로 세션은 그로 인해 닫혀 있습니다.
당신은 단지 각 시스템에 대화 형으로 로그인 할 경우
, 당신은 사용할 수 있습니다for h in $(cat hosts.txt); do telnet $h 1023; done
최초의 성공적인 세션에 호스트 이름의 나머지 부분을 캡처하지 것이다.
텔넷 세션을 실제로 자동화하려면 expect
과 같은 도구를 보거나 rsh
과 같은 원격 UNIX 도구 중 하나를 사용해야합니다.
rsh (원격 쉘)에는 보안이 설정되지 않은 기록이 있습니다. ssh를 권하고 싶습니다. – ghostdog74
앞서 언급했듯이 텔넷은 입력을 필요로하는 대화 형 프로그램입니다.
첫 번째 이후의 모든 호스트는 첫 번째 텔넷에 의해 입력으로 소비됩니다.
스크립트가 무엇을하려하는지 명확하지 않습니다. 아마도 당신은 당신이하려고하는 것에 대해 더 명확해야합니다.
그 밖의 스크립트에는 무엇이 있습니까? 특히 "set -e"가 있습니까? –