Se você está rodando no RHEL ou no CentOS, o SELinux pode estar bloqueando os scripts de iniciar conexões de rede.
Confirme que você está executando com o SELinux no modo enforcing com getenforce
.
Teste que o problema desaparece ao configurar temporariamente o SELinux no modo permissivo: setenforce 0
Se você tentar novamente agora e seu script funcionar, você encontrará o culpado.
Restaure o SELinux setenforce 1
e tente se definir um dos valores booleanos do SELinux resolve seus problemas. No RHEL / CentOS, 6 setsebool -P httpd_can_network_connect=1
provavelmente é um deles.