[gelöst] Wie bekomme ich den Computername unter Linux?
[gelöst] Wie bekomme ich den Computername unter Linux?
Hallo,
gibt es eine schnelle und zuverlässige PureBasic-Funktion, um unter Linux den Computernamen zu erhalten?
(Windows-API: GetComputerName_(), Linux-API: ???)
Danke,
Kukulkan
gibt es eine schnelle und zuverlässige PureBasic-Funktion, um unter Linux den Computernamen zu erhalten?
(Windows-API: GetComputerName_(), Linux-API: ???)
Danke,
Kukulkan
Zuletzt geändert von Kukulkan am 28.03.2011 16:51, insgesamt 1-mal geändert.
Re: Wie bekomme ich den Computername unter Linux?
Hast du mal unter den Umgebungsvariablen geguckt ?
Edit: Die Frage war so gemeint wie es da steht, also nicht rhetorisch ... also bitte mal gucken ...
Edit: Die Frage war so gemeint wie es da steht, also nicht rhetorisch ... also bitte mal gucken ...
Code: Alles auswählen
If ExamineEnvironmentVariables()
While NextEnvironmentVariable()
Debug EnvironmentVariableName() + " = " + EnvironmentVariableValue()
Wend
EndIf
Somit wäre auch die API überflüssig ...[...]
COMPUTERNAME = MARTIN
[...]
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Wie bekomme ich den Computername unter Linux?
Hallo,
das ist eine gute Idee. Werd ich mir Montag ansehen. Danke!
Kukulkan
das ist eine gute Idee. Werd ich mir Montag ansehen. Danke!
Kukulkan
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Wie bekomme ich den Computername unter Linux?
Bei mir gibt es keine Variable mit dem Namen "COMPUTERNAME" unter Ubuntu.
Re: Wie bekomme ich den Computername unter Linux?
Wie sieht es mit "$HOST"/"HOST" aus?
de.kioskea.net hat geschrieben:$HOST: Schickt den Namen des Computers zurück.
Re: Wie bekomme ich den Computername unter Linux?
Probier mal im Terminal
Denke mal -n ist das was du suchst.
Code: Alles auswählen
uname --help
OS: Windows 8.1 Pro
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Wie bekomme ich den Computername unter Linux?
Oder einfacher

hostname

Re: Wie bekomme ich den Computername unter Linux?
Hallo,
Das mit den Umgebungsvariablen war mir doch zu unsicher. Ich hab deshalb mal nach Linux Apis gegoogelt und hier im Forum gestöbert. Das ist bei rausgekommen:
Funktioniert hier einwandfrei!
PS. Meine Quelle war am Ende dann hier: http://www.gnu.org/software/libtool/man ... x.html#Top
Grüße,
Kukulkan
Das mit den Umgebungsvariablen war mir doch zu unsicher. Ich hab deshalb mal nach Linux Apis gegoogelt und hier im Forum gestöbert. Das ist bei rausgekommen:
Code: Alles auswählen
Procedure.s GetComputerName()
; get computer name (API)
Hostname.s = Space(255): Size.l = 255
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
gethostname_(@HostName.s, 255)
ProcedureReturn Trim(Hostname.s)
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
GetComputerName_(Hostname.s, @Size.l)
ProcedureReturn Left(Hostname.s, Size.l)
CompilerEndIf
EndProcedure
PS. Meine Quelle war am Ende dann hier: http://www.gnu.org/software/libtool/man ... x.html#Top
Grüße,
Kukulkan
Re: [gelöst] Wie bekomme ich den Computername unter Linux?
Hallo Kukulkan,
zuerst habe ich mich gefragt, warum Du das so kompliziert über API
machst, wenn PureBasic doch die Funktion Hostname() besitzt, wie
NicTheQuick schon angemerkt hatte:Allerdings habe ich festgestellt, daß diese Funktion unter MacOS X
anscheinend fehlerhaft arbeitet und dies auch bereits im englischen
MacOS Bug-Unterforum gemeldet. Daraufhin hat freak dazu angemerkt,
daß der Hostname nicht notwendigerweise dem Computernamen
entspricht. Bei meinen Tests war der Computername bei Windows 7 x86,
x64 und andLinux/Kubuntu 9.04 immer identisch mit der Ausgabe von
Hostname(). Nur auf meinem Mac gab es Unterschiede. Ich habe Dein
Code-Beispiel für meine Tests folgendermaßen umgestellt und für den
Mac erweitert:
zuerst habe ich mich gefragt, warum Du das so kompliziert über API
machst, wenn PureBasic doch die Funktion Hostname() besitzt, wie
NicTheQuick schon angemerkt hatte:
Code: Alles auswählen
InitNetwork()
Debug Hostname()
anscheinend fehlerhaft arbeitet und dies auch bereits im englischen
MacOS Bug-Unterforum gemeldet. Daraufhin hat freak dazu angemerkt,
daß der Hostname nicht notwendigerweise dem Computernamen
entspricht. Bei meinen Tests war der Computername bei Windows 7 x86,
x64 und andLinux/Kubuntu 9.04 immer identisch mit der Ausgabe von
Hostname(). Nur auf meinem Mac gab es Unterschiede. Ich habe Dein
Code-Beispiel für meine Tests folgendermaßen umgestellt und für den
Mac erweitert:
Code: Alles auswählen
EnableExplicit
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
ImportC ""
CFRelease(CFTypeRef.L)
CFStringGetCString(CFStringRef.L, *Buffer, BufferSize, Encoding.L)
CSCopyMachineName()
EndImport
CompilerEndIf
Procedure.s GetComputerName()
; ----- Get computer name (API)
Protected HostName.S = Space(255)
Protected Size.I = Len(HostName)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
gethostname_(@HostName, Size)
CompilerCase #PB_OS_MacOS
Protected HostNameRef.L
HostNameRef = CSCopyMachineName()
If HostNameRef
CFStringGetCString(HostNameRef, @HostName, Size, 0)
EndIf
CompilerCase #PB_OS_Windows
GetComputerName_(HostName, @Size)
CompilerEndSelect
ProcedureReturn HostName
EndProcedure
Debug GetComputerName()