Rechnername ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo.
Wie kann ich unter Python den Namen des aktuellen Rechners ausgeben?
Wäre wirklich gut das zu wissen.

Gruß sprudel
BlackJack

Was ist der "Name des Rechners"? Eine Eigenschaft des von Dir eingesetzten Betriebssystems?
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

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
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Code: Alles auswählen

import socket
socket.gethostname()
(kann sein, dass es auch einfacher geht.)
BlackJack

Der Name muss nicht existieren (auf jeder Plattform) und ein Rechner kann auch mehrere Namen haben.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

hmm, stimmt ...
was macht socket.gethostname() dann?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

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<<
Antworten