SQLite

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 Sie die alten Daten beibehalten möchten, können Sie die Daten in einer zweiten Datenbank erfassen. Die Daten in der Datenbank können auch nützlich für die OS X-Implementierung sein, weil Apps auf Computerdatensätze zugreifen oder computerspezifische Einstellungen basierend auf Werten in der Datenbank synchronisieren können.

Aus praktischen Gründen sollten Sie 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 Sie den Befehlen sudo voranstellen, werden Sie aufgefordert, Ihr Administratorpasswort 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 senden Sie wie folgt an die Tabelle „systeminformation“.

sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"

Im Folgenden sehen Sie 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:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|Model|0|Hitachi HDS722580VLSA80|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|VolumeName|0|Server HD|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|JournalingIsActive|0|true|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastBackupDate|0|2008-09-05T18:13:22Z|2008-12-11T23:05:58Z00:0d:93:9c:0a:e4|Mac_HardDriveElement|LastModificationDate|0|2008-12-11T23:05:57Z|2008-12-11T23:05:58Z

Ändern Sie 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 finden Sie 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:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement Model 0 Hitachi HDS722580VLS 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement VolumeName 0 Server HD 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement JournalingIs 0 true 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement LastBackupDa 0 2008-09-05T18:13:22Z 2008-12-11T23:05:58Z00:0d:93:9c:0a:e4 Mac_HardDriveElement LastModifica 0 2008-12-11T23:05:57Z 2008-12-11T23:05:58Z00: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 Ihre SQL-Anfragen verwendet werden. Zur Anzeige aller ObjectName-Typen ändern Sie 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_HardDriveElementMac_NetworkInterfaceMac_SystemInfoElemenMac_RAMSlotElementMac_PCIBusElementMac_USBDeviceElementMac_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 DataDateMac_HardDriveElement ModelMac_HardDriveElement VolumeNameMac_HardDriveElement JournalingIsMac_HardDriveElement LastBackupDaMac_HardDriveElement LastModifica

Diese Eigenschaften lassen sich so kombinieren, dass Sie eine SQL-Abfrage formulieren können, die einen bestimmten Wert abruft. Zum Finden der Clientseriennummern können Sie 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 QP4241FHPMZ00:16:cb:a2:6d:1b MachineSerialNumber YM6090M9U3900:16:cb:ca:81:52 MachineSerialNumber W862100NW9200:17:f2:04:db:24 MachineSerialNumber G86492DVX6800:14:51:22:28:38 MachineSerialNumber W854503QURC00: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---------- -----------Xserve QP4241FHPMZmini YM6090M9U39NetBoot001 W862100NW92Server G86492DVX68Server2 W854503QURCWendy G 4H63861KVMM

Automator mit dem Befehl „sqlite“ verwenden

Da Automator Shell-Befehle ausführen kann, kann er zum Sammeln von sqlite3-Ausgaben und zum Senden dieser 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 privilegesend 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.

Bildschirmfoto eines Automator-Arbeitsablaufs, der eine SQL-Abfrage abruft und sie ausführt.

sqlite query items

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

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_SystemInfoElement

ActiveProcessorCount

AppleTalkIsActive

ATADeviceCount

BootROMVersion

BusDataSize

BusSpeed

BusSpeedString

ComputerName

DataDate

En0Address

FileSharingIsEnabled

FireWireDeviceCount

FTPIsEnabled

HasKeyboardConnected

HasLightsOutController

HasMouseConnected

HasVectorProcessingUnit

KernelVersion

Level2CacheSize

MachineClass

MachineIsNetBooted

MachineModel

MachineSerialNumber

MainMonitorDepth

MainMonitorHeight

MainMonitorType

MainMonitorWidth

ModemDescription

ModemDriverInfo

ModemInstalled

ModemInterfaceType

OpticalDriveType

PCISlotsUsedCount

PhysicalMemorySize

PrimaryIPAddress

PrimaryNetworkCollisions

PrimaryNetworkFlags

PrimaryNetworkHardwareAddress

PrimaryNetworkInputErrors

PrimaryNetworkInputPackets

PrimaryNetworkOutputErrors

PrimaryNetworkOutputPackets

PrimaryNetworkType

PrinterSharingEnabled

ProcessorCount

ProcessorSpeed

ProcessorSpeedString

ProcessorType

RemoteAppleEventsEnabled

RemoteLoginEnabled

SCSIDeviceCount

SleepDisplayWhenInactive

SleepWhenInactive

SpinDownHardDrive

SystemVersion

SystemVersionString

TotalFreeHardDriveSpace

TotalHardDriveSpace

TotalRAMSlots

TotalSwapFileSize

TrashSize

UnixHostName

UnusedRAMSlots

USBDeviceCount

UserMemorySize

WakeOnLanEnabled

WebSharingIsEnabled

WindowsFileSharingEnabled

WirelessCardInstalled

Mac_RAMSlotElement

DataDate

MemoryModuleSize

MemoryModuleSpeed

MemoryModuleType

SlotIdentifier

Mac_PCIBusElement

CardMemory

CardName

CardRevision

CardType

DataDate

DeviceID

RomRevision

SlotName

VendorID

Mac_NetworkInterfaceElement

DomainName

Mac_SystemInfoElement

WirelessCardFirmwareVersion

WirelessCardHardwareAddress

WirelessCardIsActive

WirelessCardLocale

WirelessCardType

Mac_USBDeviceElement

BusPower

DataDate

DeviceSpeed

ProductID

ProductName

SerialNumber

VendorID

Mac_SystemInfoElement

WirelessNetworkAvailable

Mac_FireWireDeviceElement

DataDate

DeviceSpeed

Manufacturer

Model

Mac_SystemInfoElement

ARDComputerInfo1

ARDComputerInfo2

ARDComputerInfo3

ARDComputerInfo4

ModemCountryInfo

SelectedPrinterName

SelectedPrinterPostScriptVersion

SelectedPrinterType

WirelessChannelNumber

WirelessIsComputerToComputer

WirelessNetworkName