쉘 스크립트에서 이상한 문제가 있습니다. POP3 서버에 연결하고 사서함의 메시지 수를 세는 간단한 스크립트를 작성하려고합니다. 서버의 Bash 버전은 3.2.25 (1) -Linux 상자에 있습니다.Bash 스크립트를 사용하여 POP3 서버에 연결할 수 없습니다.
이렇게 수동으로 명령을 입력하면 작동합니다.
$ telnet <pop3 server ip> 110
Trying <pop3 server ip>...
Connected to <pop3 server ip>.
Escape character is '^]'.
+OK The Microsoft Exchange POP3 service is ready.
USER sadmin
+OK
PASS sadmin
+OK User successfully logged on.
STAT
+OK 1 10320
quit
+OK Microsoft Exchange Server 2010 POP3 server signing off.
Connection closed by foreign host.
이제 메시지 수를 확인하기 위해 아래 스크립트를 작성했습니다.
#!/bin/bash
exec 3<> /dev/tcp/<pop3 server ip>/pop3
read ok line <&3
echo $ok $line
echo USER sadmin >&3
read ok line <&3
echo aft userid entered:$ok $line
echo PASS sadmin1 >&3
echo STAT >&3
read num num1 <&3
echo $num $num1
echo quit >&3
exit
이 스크립트를 실행하면 출력이 다음과 같이 보입니다.
$ ./tcp.sh
+OK The Microsoft Exchange POP3 service is ready.
aft userid entered:-ERR Connection is closed. 12
$
나는 그것을 읽을 시간이 오래 걸립니다 다음은 "-ERR 연결이 닫혀"등의 메시지와 함께 다시 오는 3가 fd하기 위해 암호를 보낸 후.
내가 여기에없는 것을 알려주시겠습니까?
당신은 아마 CRLF하지 간단한 UNIX 줄 바꿈 필요는 마이크로 소프트 때문에
는 CR + LF 필요를 , LF만이 아닙니다. 일부 서버는 단순한 LF를 허용하고 다른 서버는 허용하지 않습니다. CR을 명시 적으로 추가하는 것이 좋습니다. –