로그인하기 위해 텔넷에 사용자 이름과 비밀번호를 제공하면 다음 명령을 실행한 후 자동으로 닫힙니다.
echo password | telnet mymachine -l mysuername
콘솔 출력:
Connected to mymachine.
Connection closed by foreign host.
그런 다음 연결이 닫힙니다. 한 번 로그인할 때 사용자 이름과 비밀번호를 제공하면서 연결 상태를 유지할 수 있는 방법이 있습니까?
업데이트: 매번 사용자 이름과 비밀번호를 입력하지 않고도 로그인하기 위해 허용된 답변을 기반으로 별칭을 작성했습니다.
alias logon='rm loginscript; echo \#\!\/usr\/bin\/expect >> loginscript ; echo spawn telnet remotemachine -l username >> loginscript ; echo expect Password: >> loginscript ; echo send password"\\r" >> loginscript ; echo expect -- \{\$ \} >> loginscript ; echo interact >> loginscript; chmod 777 loginscript; ./loginscript'
답변1
대화형 세션을 계속하려는 경우 일반적인 방법은 다음을 expect
사용하여 로그인하는 것입니다.
#!/usr/bin/expect
spawn telnet mymachine -l myusername
expect Password:
send password\r
expect -- {$ }
interact
답변2
비밀번호를 보낸 후에도 세션과 계속 상호작용하고 싶다면 telnet
로컬 터미널에서 세션에 대한 입력을 제공해야 합니다.
(echo password; cat) | telnet -l user host
구현이 로컬 터미널과 상호 작용을 시도하는 방법에 따라 telnet
다음을 수행해야 할 수도 있습니다.
saved=$(stty -g); stty raw -echo
(echo password; cat) | telnet -l user host
stty "$saved"
심지어:
saved=$(stty -g); stty raw -echo
(echo password; cat) | telnet -l user host 2>&1 | cat
stty "$saved"
cat -u
(일부 시스템에서는 대체 해야 할 수도 있습니다 cat
)
또 다른 옵션은사용expect
파이프 대신 의사 터미널을 사용하여 애플리케이션과 상호 작용합니다( telnetd
다른 쪽 끝에서도 pty를 생성하므로 이 경우 추가 pty가 반드시 필요하지는 않습니다).