[gelöst] Wie bekomme ich den Computername unter Linux?

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

[gelöst] Wie bekomme ich den Computername unter Linux?

Beitrag von Kukulkan »

Hallo,

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.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Wie bekomme ich den Computername unter Linux?

Beitrag von STARGÅTE »

Hast du mal unter den Umgebungsvariablen geguckt ?
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
[...]
COMPUTERNAME = MARTIN
[...]
Somit wäre auch die API überflüssig ...
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
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Wie bekomme ich den Computername unter Linux?

Beitrag von Kukulkan »

Hallo,

das ist eine gute Idee. Werd ich mir Montag ansehen. Danke!

Kukulkan
Benutzeravatar
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?

Beitrag von NicTheQuick »

Bei mir gibt es keine Variable mit dem Namen "COMPUTERNAME" unter Ubuntu.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wie bekomme ich den Computername unter Linux?

Beitrag von RSBasic »

Wie sieht es mit "$HOST"/"HOST" aus?
de.kioskea.net hat geschrieben:$HOST: Schickt den Namen des Computers zurück.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Re: Wie bekomme ich den Computername unter Linux?

Beitrag von iostream »

Probier mal im Terminal

Code: Alles auswählen

uname --help
Denke mal -n ist das was du suchst.
OS: Windows 8.1 Pro
Benutzeravatar
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?

Beitrag von NicTheQuick »

Oder einfacher
hostname
:wink:
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Wie bekomme ich den Computername unter Linux?

Beitrag von Kukulkan »

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:

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
Funktioniert hier einwandfrei!

PS. Meine Quelle war am Ende dann hier: http://www.gnu.org/software/libtool/man ... x.html#Top

Grüße,

Kukulkan
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: [gelöst] Wie bekomme ich den Computername unter Linux?

Beitrag von Shardik »

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:

Code: Alles auswählen

InitNetwork()
Debug Hostname()
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:

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