Saltar al contenido

Compruebe si Postgresql está escuchando

Este grupo de trabajo ha estado mucho tiempo investigando para dar respuesta a tus interrogantes, te ofrecemos la respuesta por eso deseamos que te resulte de gran apoyo.

Solución:

Puede utilizar, por ejemplo, la herramienta nmap:

=$ sudo nmap -v -p 5930 127.0.0.1

Starting Nmap 6.00 ( http://nmap.org ) at 2013-06-25 19:28 CEST
Initiating SYN Stealth Scan at 19:28
Scanning localhost (127.0.0.1) [1 port]
Discovered open port 5930/tcp on 127.0.0.1
Completed SYN Stealth Scan at 19:28, 0.03s elapsed (1 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000045s latency).
PORT     STATE SERVICE
5930/tcp open  unknown

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
           Raw packets sent: 1 (44B) | Rcvd: 2 (88B)

Alternativamente, puede simplemente “SELECCIONAR 1” con psql y verificar la salida:

=$ psql -h 127.0.0.1 -p 5930 -c "select 1"
 ?column? 
----------
        1
(1 row)

=$ psql -h 127.0.0.1 -p 5940 -c "select 1"
psql: could not connect to server: Connection refused
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5940?

Creo que necesitas definir mejor lo que estás tratando de lograr. ¿Solo quieres saber si cualquier cosa está escuchando en cierto punto? Si PostgreSQL está escuchando en un puerto determinado? ¿Si PostgreSQL se está ejecutando y realmente acepta conexiones? ¿Si puede conectarse a PostgreSQL, autenticarse correctamente y realizar consultas?

Una opción es invocar psql para conectarse y comprobar el código de resultado. No intente analizar el texto de salida, ya que está sujeto a traducción a diferentes idiomas.

Mejor, utilice la biblioteca cliente para el idioma que elija: psycopg2 para Python, PgJDBC para Java, la gema Pg para Ruby, DBD::Pg para Perl, nPgSQL para C #, etc. Este es el enfoque que recomendaría. Los detalles de SQLSTATE o de la excepción de cualquier error de conexión le dirán más sobre por qué falló la conexión; podrá notar la diferencia entre el servidor no escucha, falla de autenticación, etc. de esta manera. Por ejemplo, en Python:

import psycopg2
try:
    conn = psycopg2.connect("host=localhost dbname=postgres")
    conn.close()
except psycopg2.OperationalError as ex:
    print("Connection failed: 0".format(ex))

Hay detalles de excepción en ex.pgcode (el SQLSTATE) para informarle más sobre los errores que se generan en el servidor, como fallas de autenticación; estará vacío para errores del lado del cliente.

Si solo quieres ver si algo está escuchando en un puerto IP y TCP determinado, puede usar netcat (* nix solamente), o un script simple en el idioma de su elección que crea un socket y hace un connect () luego cierra el socket si obtiene una respuesta exitosa. Por ejemplo, el siguiente script de Python trivial:

import socket                                                                                                                                                              
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect(('localhost',5432))
    s.close()
except socket.error as ex:
    print("Connection failed with errno 0: 1".format(ex.errno, ex.strerror))            

El mismo enfoque se aplica en cualquier lenguaje de programación, solo varían los detalles de la biblioteca de sockets y el manejo de errores.

Para algunos fines, también puede ser útil utilizar el netstat herramienta para enumerar pasivamente qué procesos están escuchando en qué sockets de red. El incorporado netstat en Windows tiene bastante muerte cerebral, por lo que debe hacer más análisis de la salida que con netstat para otras plataformas, pero seguirá funcionando. La presencia de un enchufe en netstat Sin embargo, no significa que la conexión tenga éxito; si el proceso ha fallado de alguna manera que lo deja roto pero aún en ejecución (atascado en un bucle infinito, bloqueado por un depurador, SIGSTOPed, etc.), entonces no responderá a un intento de conexión real.

En breve

En detalles

La forma más rápida es usar netcat alias nc con la capacidad de tiempo de espera como se comparte aquí

Los resultados como 0/1 significa que postgres funciona / no funciona

echo 'QUIT' | nc -w SECONDS YOUR_HOST PORT; echo $?
# eg
echo 'QUIT' | nc -w 1       localhost 5432; echo $?

Otra forma también más rápida que me funciona es usar telnet como se discute aquí.

echo -e 'x1dclosex0d' | telnet YOUR_HOST PORT
# eg
echo -e 'x1dclosex0d' | telnet localhost 5432

Te mostramos reseñas y puntuaciones

Recuerda difundir esta reseña si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *