Festplatten-Seriennummer per StarBasic unter Linux ermitteln

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Festplatten-Seriennummer per StarBasic unter Linux ermitteln

Beitrag von Stephan »

Hallo,

ich nutze unter MS Windows folgende StarBasic-Function zur Ermittlung der Seriennummer der Systemfestplatte:

Code: Alles auswählen

Function hdd_number()
	Dim oleService As Object
	Dim WSH As Object
	Dim vbs As String
	
	'the WSH must installed on the system
	oleService = createUnoService("com.sun.star.bridge.OleObjectFactory")
	WSH = oleService.createInstance("MSScriptControl.ScriptControl")
	WSH.Language = "VBScript"
	vbs = vbs + "Dim fso, drv" + CHR(10)
	vbs = vbs + "Set fso = CreateObject(""Scripting.FileSystemObject"")" + CHR(10)
	vbs = vbs + "Set drv = fso.Drives(""c:\"")" + CHR(10)
	vbs = vbs + "ergebnis = drv.SerialNumber"
	
	WSH.ExecuteStatement(vbs)
	hdd_number = WSH.CodeObject.ergebnis
End Function
Hat jemand eine Idee wie ich die Seriennummer der Festplatte mittels StarBasic auch unter Linux bestimmen kann?


Gruß
Stephan
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Festplatten-Seriennummer per StarBasic unter Linux ermitteln

Beitrag von F3K Total »

Hallo Stephan,
kannst du diesen Linux Befehl

Code: Alles auswählen

hdparm -i /dev/sda
ggf. per

Code: Alles auswählen

Shell()
aufrufen?
Gruß R
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Festplatten-Seriennummer per StarBasic unter Linux ermitteln

Beitrag von Karolus »

Hallo

`hdparm` benötigt root-Rechte, entweder du wechselst vorher zu `su` oder

Code: Alles auswählen

sudo hdparm -i /dev/sda | sed -ne '/SerialNo/{s/.*SerialNo=\s*\(.*\)/\1/ ; p}'

***/dev/sda ist auch nicht zwangsläufig die Systemplatte.

Nachtrag:
noch ein Befehl der ohne su|sudo geht:

Code: Alles auswählen

/sbin/udevadm info --query=property --name=sda | grep ID_SERIAL_SHORT= 
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Festplatten-Seriennummer per StarBasic unter Linux ermitteln

Beitrag von Stephan »

Hallo F3K Total,
Hallo Karolus,

danke, aber das nutzt mir wohl Beides nichts, weil ich nicht weiß wie ich diese Shell-Befehle in Basic einbinde.

Ich hörte von anderer Stelle hast es wohl Möglichkeiten gibt solcherart Code ähnlich ins Makro einzubinden wie des WSH-Code der in meinem Beispielmakro ist, aber ich weiß nicht wie.


Gruß
Stephan

P.S.
Worum geht es überhaupt?
Ich bin gefragt worden ob ich nicht eine Basic-Function für OO/LO formulieren könnte, die einen Rechner betriebsystemneutral eindeutig identifizieren kann. Die HDD-Nummer war nur mein erster Gedanke weil ich wusste das das in VBA geht und so habe ich das über den Umweg von WSH ins Basic gepackt.
Will heißen ginge es leichter mit der CPU-Nummer (ich glaube nur es gibt seit dem Skandal von vor einigen Jahren bei Intel keine ein-eindeutigen CPU-Nummern mehr) wäre es auch OK, es muss aber unter Windows. Linux und MacOS funktionieren, wobei ich annehme man muss in jedem Falle die 3 Systeme separat ansprechen, also die Function verzweigen.
Axel Richter
****
Beiträge: 159
Registriert: So, 17.10.2010 16:54

Re: Festplatten-Seriennummer per StarBasic unter Linux ermitteln

Beitrag von Axel Richter »

Hallo Stephan,

wenn es nur darum geht, wie man die Seriennummer von /dev/sda von einer linux bash in eine StarBasic-Variable bekommt, würde ich es einfach so machen:

Code: Alles auswählen

function hdd_number()

 sCommand = """/sbin/udevadm info --query=property --name=sda | grep ID_SERIAL_SHORT= > tmp.txt"""
 Shell("bash -c " & sCommand)
 
 WaitUntil Now + TimeValue("00:00:01")
 
 Open "tmp.txt" For Input As 1
 Line Input #1, sLine   
 
 Shell("bash -c ""rm tmp.txt""")
 
 hdd_number = sLine
 
end function 
Antworten