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: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
Ä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: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 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_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 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 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
---------- -----------
Xserve QP4241FHPMZ
mini YM6090M9U39
NetBoot001 W862100NW92
Server G86492DVX68
Server2 W854503QURC
Wendy 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 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
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 |