telnet of all the possible ways is probably the least useful for this, as you can't set a timeout properly, nor get a meaningful, parseable output. Better would be
Installing nmap
If that's not possible using netcat/nc, installing it if possible
If that's not possible using the socket feature newer versions of bash support
And only if nothing of these is useable resort to telnet
Example of how easy it's with netcat/nc:
for port in {1000..1050}; do nc -z -w 3 1.2.3.4 $port && echo "Port $port open" || echo "Port $port closed"; done
Then try using /usr/sfw/bin/openssl s_client -connect HOST_NAME:PORT, this works much better than telnet in Production area, you can have script build around the range of ports that needs to be used with in the script.
If the session takes long, send hup signal and end the session, thats the better option, based on the exit code, term the port as closed or etc etc. But when port is closed , I have seen the command comes to prompt quickly, In your case, I need check why its not happening