컴퓨터에 로그인 한 다음 종료하는 다음의 간단한 텔넷 스크립트를 실행하고 있습니다.텔넷 자동화 스크립트가 가끔씩 실패합니다.
하나의 Linux 서버에서 동일한 스크립트가 제대로 작동하지만 (1000 회 반복) 다른 Linux 서버에서 실패합니다 (200 회 시도 후에 실패합니다).
실패한 경우 실패하는 데 걸리는 반복 횟수는 다양하지만 실패는 지속됩니다. 클라이언트 시스템에서
: (SYS-007)
내가 잘못가는 상황을 확인하기 위해 다음과 같은 노력tcpdump -nvvv -w test.txt host <Server IP>
pattern match read eof at ./telnettest.pl line 15 (i.e, waitfor('/login: $/i'); Line)
:와
#!/usr/bin/perl use Net::Telnet; my $loop = 0; my $dumpfile = "dump.log"; my $inputfile = "input.log"; for ($loop =1; $loop <=1000; $loop++) { print "===============Loop: $loop =====================\n"; $telnet = new Net::Telnet (Timeout=>20, Errmode=>'die'); print "$telnet\n"; $telnet->open('sys-007'); $telnet->dump_log($dumpfile); $telnet->input_log($inputfile); $telnet->waitfor('/login: $/i'); $telnet->print('root'); $telnet->waitfor('/Password:$/i'); $telnet->print('007'); sleep 2; $telnet->print('exit'); print "=================================================\n"; }
스크립트 종료
문자열 :
성공적인 시도 로그 :
sys-007 (ttyp0)
^Fl$4
^!^Fl$
login:
^Fl$4
^Fl$4
root
^(^Fl*
root
bP"u
^Fl*4
bP5u
^.^Fl*
Password:
^Fl*4
^Fl*4
007
^7^Fl6
^Fl64
^9^Fl6
Terminal type? [xterm]
^Fl64
^Fl64
exit
^Fl<4
^Fl<
exit
^Fl<
실패 시도 :
sys-007 (ttyp0)
*^hn
+^hn
없음 로그인 : 프롬프트! 서버 시스템에서
: (리눅스 서버)
[[email protected]]~% netstat --inet -a | grep telnet | grep sys-007 There are no TIME_WAIT or CLOSE_WAIT sockets.
내가 잘못 무슨 일이 일어나고 있는지 알아 찾아야한다 무엇을 가르쳐주세요.
tcpdump는 단순히 서버에서 예상되는 프롬프트를받지 못한다는 것을 보여줍니다. 거기에 유용한 것이 있는지 서버의 로그를 확인해야합니다. 또한'strace -ff'를 사용하여 telnetd 프로세스에 연결하여 어떤 syscalls이 작성 중인지 확인할 수 있습니다. 이는 힌트를 줄 수 있습니다. –