Überprüfen, ob Postgresql lauscht
Gegeben, eine IP-Adresse und port-Nummer, ist es möglich zu überprüfen, ob die Maschine mit dieser IP-Adresse auf die Postgresql lauscht auf dem angegebenen port? Wenn ja, wie?
Ich will einfach nur erhalten Sie einen boolean-Wert, ob Postgresql lauscht auf dem angegebenen port den angegebenen Maschine.
versuchen, eine Verbindung mit einem pg-client-Bibliothek und dem Versuch einer Anmeldung. wenn nichts hört, oder es ist nicht PG, erhalten Sie verschiedene Fehler. wenn es pg ist und ausgeführt wird, würde man mindestens bekommen permission denied/unknown user/whatever Fehler.
Danke für den Tipp, Marc. Ich bin versucht, zu automatisieren, diese Aufgabe als Teil einer windows-Installation. Ich überlege mir, das schreiben einige C# - code, dies zu erreichen. Sie kennen eine gute C# - Bibliothek, die ich könnte versuchen, eine Verbindung zu postgresql mit? Auch, wenn Sie helfen konnte aufzählen, welche Fehler deuten darauf hin, postgresql zuhört und die Fehler deuten darauf hin, sonst wäre auch hilfreich, Informationen.
Ich bin auf der Suche in die Verwendung von Npgsql
In Zukunft bitte ein wenig mehr hintergrund in der ursprünglichen Frage; "warum" zum "wie", Fragen Sie. Details wie Plattform und die Sprache sind sehr nützlich zu wissen. Immer auch Ihre PostgreSQL-version in Fragen zu.
Danke für den Tipp, Marc. Ich bin versucht, zu automatisieren, diese Aufgabe als Teil einer windows-Installation. Ich überlege mir, das schreiben einige C# - code, dies zu erreichen. Sie kennen eine gute C# - Bibliothek, die ich könnte versuchen, eine Verbindung zu postgresql mit? Auch, wenn Sie helfen konnte aufzählen, welche Fehler deuten darauf hin, postgresql zuhört und die Fehler deuten darauf hin, sonst wäre auch hilfreich, Informationen.
Ich bin auf der Suche in die Verwendung von Npgsql
In Zukunft bitte ein wenig mehr hintergrund in der ursprünglichen Frage; "warum" zum "wie", Fragen Sie. Details wie Plattform und die Sprache sind sehr nützlich zu wissen. Immer auch Ihre PostgreSQL-version in Fragen zu.
InformationsquelleAutor ksun | 2013-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie müssen definieren, was Sie versuchen zu erreichen besser. Willst du einfach nur wissen, ob alles ist das hören auf einen bestimmten Punkt? Wenn PostgreSQL lauscht auf einem bestimmten port? Wenn PostgreSQL läuft und eigentlich verbindungen? Wenn Sie eine Verbindung zu PostgreSQL, erfolgreich authentifizieren und Abfragen?
Einer option aufrufen
psql
zu verbinden und überprüfen Sie das Ergebnis-code. Versuchen Sie nicht zu analysieren, der Ausgabe-text, da das Thema der übersetzung in verschiedene Sprachen.Besser, verwenden Sie die client-Bibliothek für die Sprache Ihrer Wahl -
psycopg2
für Python, PgJDBC für Java, Pg-gem für RubyDBD::Pg
für Perl, nPgSQL für C#, etc. Dies ist der Ansatz, den ich empfehlen würde. Die SQLSTATE-oder exception-details aus keine Verbindung Fehler wird Ihnen sagen, mehr über, warum die Verbindung fehlgeschlagen - Sie werden in der Lage sein zu sagen, der Unterschied zwischen der server nicht zu hören, authentication failure, etc. auf diese Weise. Zum Beispiel in Python:Gibt es Ausnahmen-details in
ex.pgcode
(dieSQLSTATE
) zu Ihnen sagen, mehr über Fehler, die sind generiert der server-Seite, wie Authentifizierungsfehler; es werden leer sein, damit client-Seite Fehler.Wenn Sie nur wollen, um zu sehen, ob etwas ist das hören auf eine bestimmte IP-und TCP-port, den Sie verwenden können
netcat
(*nix), oder mit einem einfachen Skript in der Sprache Ihrer Wahl, erstellt einen socket und connect() schließt den socket wenn es bekommt eine erfolgreiche Antwort. Zum Beispiel, die folgende triviale Python-Skript:Gilt der gleiche Ansatz in einer beliebigen Programmiersprache, nur die details der socket-Bibliothek und Fehlerbehandlung unterscheiden.
Für einige Zwecke kann es auch nützlich sein, die Nutzung der
netstat
tool zu passiv Liste, welche Prozesse überwacht werden, die Netzwerk-sockets. Die built-innetstat
auf Windows ist ziemlich hirntot, so dass Sie mehr tun müssen Analyse der Leistung als mitnetstat
für andere Plattformen, aber es wird immer noch den job zu erledigen. Das Vorhandensein einer Steckdose innetstat
bedeutet nicht, dass die Verbindung zu es erfolgreich sein wird, obwohl, wenn der Prozess fehlgeschlagen ist, in irgendeiner Weise, dass die Blätter es gebrochen ist, aber immer noch laufen (Sie stecken in einer Endlosschleife, blockiert durch einen debuggerSIGSTOP
ed, etc) dann wird es nicht zu reagieren, um eine tatsächliche Verbindung versuchen.InformationsquelleAutor Craig Ringer
Können Sie verwenden, zum Beispiel, nmap tool:
Alternativ können Sie einfach "SELECT 1" mit psql, und überprüfen Sie, Ausgabe:
Ich denke
netstat
ist Teil von Windows. Es kann auch bestimmen, ob PostgreSQL überwacht wird.Eigentlich nur ein test lief mit postgres hören auf einem anderen Rechner und bei mir lief nmap fand ich, dass STATE=gefiltert. Aber ich denke, mit der psql-Befehl mit "Select 1" und prüfen einer Verbindung Fehler kann sein, dass die beste Lösung, die mir bisher begegnet sind.
Sherrill 'Pfeifen'" Mike, vielen Dank ich werde auch einen Blick in netstat.
nach einem kurzen Blick in netstat es scheint, dass, während es ist ein Teil von windows, und ist ein großes Werkzeug für die Auflistung alle ports sind hören oder eingerichteten verbindungen auf Ihrem Computer, den ich versuche zu sehen, ob postgres lauscht auf einem bestimmten port auf einem anderen host-Maschine. Gibt es eine Möglichkeit, dies zu tun mit netstat?
InformationsquelleAutor