And you still get "Host is up" but, of course, the service you want isn't....


Err read the man page? -Pn assumes the host is up (skips the initial ping in case something drops that when you are interested in a port) so it will say the host is up in that  case - but we don't care about the host being up... we want the service so you need to parse the service output.