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

Code: Alles auswählen

import socket
socket.gethostname()
(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<<