Informationen zu SQLite in Remote Desktop
Remote Desktop sichert die gesammelten Informationen in einer SQLite-Datenbank.
Datenbank
Systeminformationen werden von Remote Desktop in der Tabelle „systeminformation“ erfasst. Hier werden keine Verlaufsdaten erfasst. Neue Werte überschreiben vorher erfasste Informationen, sobald Daten erfasst werden. Wenn du die alten Daten beibehalten möchten, kannst du die Daten in einer zweiten Datenbank erfassen. Die Daten in der Datenbank können auch nützlich für die macOS-Implementierung sein, weil Apps auf Computerdatensätze zugreifen oder computerspezifische Einstellungen basierend auf Werten in der Datenbank synchronisieren können.
Aus praktischen Gründen solltest du die Datenbank als Nur-Lesen-Objekt behandeln. Es kann vorkommen, dass die Datenbankstruktur geändert wird, um neueren Versionen von Remote Desktop Rechnung zu tragen, oder dass Remote Desktop unter bestimmten Bedingungen die Datenbank bereinigt, um einer Beschädigung zuvorzukommen.
Die SQLite-Datenbank befindet sich im Verzeichnis „/private/var/db/RemoteManagement/RMDB/rmdb.sqlite3“. Das RMDB-Verzeichnis kann nur von Daemonbenutzern verwendet werden, sodass für den Zugriff auf die Dateien Superuser-Rechte (sudo
) erforderlich sind. Wenn du den Befehlen sudo
voranstellst, wirst du aufgefordert, dein Adminpasswort einzugeben.
Daten mithilfe der Befehlszeile abrufen
Das Werkzeug sqlite3 wird im Verzeichnis „ /usr/bin/sqlite3“ installiert.
Das Werkzeug sqlite3 bietet Zugriff auf die Tabellen und Daten in der Remote Desktop-Datenbank. Eine SQL-Abfrage sendest du wie folgt an die Tabelle „systeminformation“.
sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
Im Folgenden siehst du ein Beispiel für die ersten Ausgabezeilen. Die Zeilen werden ggf. entsprechend der gewählten Schrift und Fenstergröße umbrochen.
00:0d:93:9c:0a:e4|Mac_HardDriveElement|DataDate|0|2008-12-11T23:05:58Z|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|Model|0|Hitachi HDS722580VLSA80|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|VolumeName|0|Server HD|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|JournalingIsActive|0|true|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastBackupDate|0|2008-09-05T18:13:22Z|2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastModificationDate|0|2008-12-11T23:05:57Z|2008-12-11T23:05:58Z
Ändere das Trennzeichen zwischen den Spalten mit dem Schalter „-separator
“. Das Beispiel verwendet ein Komma als Trennzeichen.
sudo sqlite3 -separator , /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
Zu anderen Schaltern gehören -html
, -line
, -list
und -column
. Weitere Details findest du auf der man-Seite für sqlite3
.
Dieser Befehl bewirkt eine Ausgabe in gut lesbare Spalten mit angezeigten Spaltenüberschriften.
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"select * from systeminformation"
ComputerID ObjectName PropertyName ItemSeq Value LastUpdated
----------------- -------------------- ------------ ---------- -------------------- --------------------
00:0d:93:9c:0a:e4 Mac_HardDriveElement DataDate 0 2008-12-11T23:05:58Z 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement Model 0 Hitachi HDS722580VLS 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement VolumeName 0 Server HD 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement JournalingIs 0 true 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement LastBackupDa 0 2008-09-05T18:13:22Z 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement LastModifica 0 2008-12-11T23:05:57Z 2008-12-11T23:05:58Z
00:0d:93:9c:0a:e4 Mac_HardDriveElement TotalSize 0 80287128.000000 2008-12-11T23:05:58Z
Das Feld ComputerID
entspricht der Ethernet-MAC-Adresse des Clients, der mit den Berichtsdaten geantwortet hat, und kann als eindeutiger Wert für deine SQL-Anfragen verwendet werden. Zur Anzeige aller ObjectName-Typen ändere den SQL-Code des Beispiels oben wie folgt:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"SELECT distinct objectname FROM systeminformation"
Ausgaben:
ObjectName
--------------------
Mac_HardDriveElement
Mac_NetworkInterface
Mac_SystemInfoElemen
Mac_RAMSlotElement
Mac_PCIBusElement
Mac_USBDeviceElement
Mac_FireWireDeviceEl
Für jeden ObjectName sind eine Reihe von PropertyName
-Werten möglich. Durch Ändern der Anfrage werden die verfügbaren ObjectName/PropertyName
-Paare bereitgestellt:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"SELECT distinct objectname, propertyname FROM systeminformation"
Ausgaben:
ObjectName PropertyName
-------------------- ------------
Mac_HardDriveElement DataDate
Mac_HardDriveElement Model
Mac_HardDriveElement VolumeName
Mac_HardDriveElement JournalingIs
Mac_HardDriveElement LastBackupDa
Mac_HardDriveElement LastModifica
Diese Eigenschaften lassen sich so kombinieren, dass du eine SQL-Abfrage formulieren kannst, die einen bestimmten Wert abruft. Zum Finden der Clientseriennummern kannst du zum Beispiel Folgendes verwenden:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "SELECT distinct computerid, propertyname, value FROM systeminformation WHERE propertyname = 'MachineSerialNumber'"
ComputerID PropertyName Value
----------------- ------------------- -----------
00:0d:93:9c:0a:e4 MachineSerialNumber QP4241FHPMZ
00:16:cb:a2:6d:1b MachineSerialNumber YM6090M9U39
00:16:cb:ca:81:52 MachineSerialNumber W862100NW92
00:17:f2:04:db:24 MachineSerialNumber G86492DVX68
00:14:51:22:28:38 MachineSerialNumber W854503QURC
00:17:f2:2b:b9:59 MachineSerialNumber 4H63861KVMM
Abrufen einer Liste der Computernamen (anstelle von Ethernet-IDs) und Werte mit der SQL-Abfrage:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "SELECT R1.value, R2.value FROM systeminformation R1, systeminformation R2 WHERE R1.computerid=R2.computerid AND R1.propertyname='ComputerName' AND R2.propertyName='MachineSerialNumber'"
Ausgaben:
Value Value
---------- -----------
mini X0XX234XYXYX
mini X01X23X4XXXX
NetBoot001 X01X0101XXX0
Server XX12345XXX6
Server2 PPYWWSSSEEER
Aga O X0XX123XY4XY
Automator mit dem Befehl „sqlite“ verwenden
Da Automator Shell-Befehle ausführen kann, kann er zum Sammeln von sqlite3
-Ausgaben und zum Senden dieser Daten an andere Apps verwendet werden. In diesem Beispiel werden Berichtsdaten gesammelt und an TextEdit gesendet:
on run {input, parameters}
return do shell script "/usr/bin/sqlite3 -separator " & quote & tab & quote & " /var/db/RemoteManagement/RMDB/rmdb.sqlite3 " & quote & input & quote with administrator privileges
end run
Der Ablauf beinhaltet die Aufforderung zur Eingabe eines SQL-Befehls und anschließend zur Erstellung eines Shell-Befehls mithilfe der Aktion „AppleScript ausführen“. In bestimmten Fällen wird dadurch ein Dialogfenster zur Authentifizierung geöffnet. Als Trennzeichen dient im Beispiel der Tabulator.
sqlite query items
Die folgenden Objekte können mit sqlite abgefragt werden:
Mac_SystemInfoElement
ActiveProcessorCount
AppleTalkIsActive
ATADeviceCount
ARDComputerInfo1
ARDComputerInfo2
ARDComputerInfo3
ARDComputerInfo4
BootROMVersion
BusDataSize
BusSpeed
BusSpeedString
ComputerName
DataDate
En0Address
FileSharingIsEnabled
FireWireDeviceCount
FTPIsEnabled
HasKeyboardConnected
HasLightsOutController
HasMouseConnected
HasVectorProcessingUnit
KernelVersion
Level2CacheSize
MachineClass
MachineModel
MachineSerialNumber
MainMonitorDepth
MainMonitorHeight
MainMonitorType
MainMonitorWidth
ModemCountryInfo
ModemDescription
ModemDriverInfo
ModemInstalled
ModemInterfaceType
OpticalDriveType
PCISlotsUsedCount
PhysicalMemorySize
PrimaryIPAddress
PrimaryNetworkCollisions
PrimaryNetworkFlags
PrimaryNetworkHardwareAddress
PrimaryNetworkInputErrors
PrimaryNetworkInputPackets
PrimaryNetworkOutputErrors
PrimaryNetworkOutputPackets
PrimaryNetworkType
PrinterSharingEnabled
ProcessorCount
ProcessorSpeed
ProcessorSpeedString
ProcessorType
RemoteAppleEventsEnabled
RemoteLoginEnabled
SCSIDeviceCount
SelectedPrinterName
SelectedPrinterPostScriptVersion
SelectedPrinterType
SleepDisplayWhenInactive
SleepWhenInactive
SpinDownHardDrive
SystemVersion
SystemVersionString
TotalFreeHardDriveSpace
TotalHardDriveSpace
TotalRAMSlots
TotalSwapFileSize
TrashSize
UnixHostName
UnusedRAMSlots
USBDeviceCount
UserMemorySize
WakeOnLanEnabled
WebSharingIsEnabled
WindowsFileSharingEnabled
WirelessCardFirmwareVersion
WirelessCardHardwareAddress
WirelessCardIsActive
WirelessCardInstalled
WirelessCardLocale
WirelessCardType
WirelessChannelNumber
WirelessIsComputerToComputer
WirelessNetworkAvailable
WirelessNetworkName
Mac_HardDriveElement
CreationDate
DataDate
FileSystemType
FreeSpace
GroupName
IsBootVolume
IsCasePreserving
IsCaseSensitive
IsDetachable
IsWritable
JournalingIsActive
LastBackupDate
LastConsistencyCheckDate
LastModificationDate
LogicalUnitNumber
Manufacturer
Model
OwnerName
PermissionModes
PermissionsAreEnabled
Protocol
RemovableMedia
Version
SerialNumber
SupportsJournaling
TotalFileCount
TotalFolderCount
TotalSize
UnixMountPoint
VolumeName
Mac_NetworkInterfaceElement
AllDNSServers
AllIPAddresses
ConfigurationName
ConfigurationType
DataDate
DomainName
EthernetAlignmentErrors
EthernetCarrierSenseErrors
EthernetChipSet
EthernetCollisionFrequencies
EthernetDeferredTransmissions
EthernetExcessiveCollisions
EthernetFCSErrors
EthernetFrameTooLongs
EthernetInternalMacRxErrors
EthernetInternalMacTxErrors
EthernetLateCollisions
EthernetMissedFrames
EthernetMultipleCollisionFrames
EthernetRxCollisionErrors
EthernetRxFrameTooShorts
EthernetRxInterrupts
EthernetRxOverruns
EthernetRxPHYTransmissionErrors
EthernetRxResets
EthernetRxResourceErrors
EthernetRxTimeouts
EthernetRxWatchdogTimeouts
EthernetSingleCollisionFrames
EthernetSQETestErrors
EthernetTxInterrupts
EthernetTxJabberEvents
EthernetTxPHYTransmissionErrors
EthernetTxResets
EthernetTxResourceErrors
EthernetTxTimeouts
EthernetTxUnderruns
HardwareAddress
InterfaceFlags
InterfaceName
IsActive
IsPrimary
NetworkCollisions
NetworkInputErrors
NetworkInputPackets
NetworkOutputErrors
NetworkOutputPackets
OutputQueueCapacity
OutputQueueDropCount
OutputQueueOutputCount
OutputQueuePeakSize
OutputQueueRetryCount
OutputQueueSize
OutputQueueStallCount
PrimaryDNSServer
PrimaryIPAddress
RouterAddress
Mac_USBDeviceElement
BusPower
DataDate
DeviceSpeed
ProductID
ProductName
SerialNumber
VendorID
Mac_FireWireDeviceElement
DataDate
DeviceSpeed
Manufacturer
Model
Mac_RAMSlotElement
DataDate
MemoryModuleSize
MemoryModuleSpeed
MemoryModuleSpeed
MemoryModuleSpeed
Mac_PCIBusElement
CardMemory
CardName
CardRevision
CardType
DataDate
DeviceID
RomRevision
SlotName
VendorID