Seite 1 von 1
Rechnername ausgeben
Verfasst: Montag 12. März 2007, 15:48
von sprudel
Hallo.
Wie kann ich unter Python den Namen des aktuellen Rechners ausgeben?
Wäre wirklich gut das zu wissen.
Gruß sprudel
Verfasst: Montag 12. März 2007, 16:06
von BlackJack
Was ist der "Name des Rechners"? Eine Eigenschaft des von Dir eingesetzten Betriebssystems?
Verfasst: Montag 12. März 2007, 16:09
von sprudel
Eben dieser Name den der Rechner auch im Internet hat. Den den man bei Linux beispielsweise mit dem Befehl 'hostname' rauskriegt. Ich will ihn aber betriebssystemübergreifend ausgeben. Ich denk mal dafür gibt es irgendeinen Befehl
Verfasst: Montag 12. März 2007, 16:33
von Dill
(kann sein, dass es auch einfacher geht.)
Verfasst: Montag 12. März 2007, 16:33
von BlackJack
Der Name muss nicht existieren (auf jeder Plattform) und ein Rechner kann auch mehrere Namen haben.
Verfasst: Montag 12. März 2007, 16:34
von Dill
hmm, stimmt ...
was macht socket.gethostname() dann?
Verfasst: Dienstag 13. März 2007, 14:39
von Masaru
Dill hat geschrieben:...
was macht socket.gethostname() dann? ...
Code: Alles auswählen
socket_gethostname(PyObject *self, PyObject *unused)
{
char buf[1024];
int res;
Py_BEGIN_ALLOW_THREADS
res = gethostname(buf, (int) sizeof buf - 1);
Py_END_ALLOW_THREADS
if (res < 0)
return set_error();
buf[sizeof buf - 1] = '\0';
return PyString_FromString(buf);
}
Tjoa .. ruft die C Methode '
gethostname' [Zeile: 6] (in den entsprechenden Plattform spezifischen Bibliotheken: z.B. adressiert über die Header File
winsocket.h unter Windows, ...) auf.
Je nach Implementierung und Konfiguration (z.B. in Verbindung mit vorhandensein einer Netzwerkkarte, um überhaupt einen Computernamen einzutragen) fällt die Rückgabe unterschiedlich aus.
Wird z.B. das Windows Socket System angesprochen, so ist eine Bedingung von
gethostname, dass der ermittelte Name ein gültiger Wert sein muss, damit die Methoden
gethostbynameoder
WSAAsyncGetHostByNamediesen auflösen können (entsprechend also eine IP zurückliefern).
Zudem könnte es sein, dass eine Socket-Error eintritt, z.B. aufgrund eines nicht ordentlich gestarteten/unterbrochenen/etc. Netzwerk-Subsystems, so dass auch in diesem Falle kein eindeutiger Wert zur Ermittlung des Rechnernamens zurückgeliefert wird.
Gruß
>>Masaru<<