Informatie over SQLite in Remote Desktop
In Remote Desktop worden de verzamelde gegevens in een SQLite-database bewaard.
Informatie over de database
In Remote Desktop wordt de systeeminformatie vastgelegd in een tabel met de naam 'systeminformation'. Historische gegevens worden niet bewaard. Wanneer gegevens worden verzameld, worden eerder vastgelegde gegevens overschreven door de nieuwe waarden. Als u de historische gegevens wilt bewaren, kunt u de gegevens vastleggen in een tweede database. De gegevens in de database kunnen ook van pas komen bij de implementatie van macOS, omdat programma's toegang tot computerrecords kunnen krijgen of computerspecifieke instellingen kunnen synchroniseren op basis van de waarden in de database.
Om praktische redenen moet u de database gebruiken als alleen-lezendatabase. De databasestructuur kan veranderen om aan de vereisten van nieuwere versies van Remote Desktop te voldoen. In enkele gevallen wordt de database door Remote Desktop opgeschoond om beschadigingen te voorkomen.
De SQLite-database vindt u in '/private/var/db/RemoteManagement/RMDB/rmdb.sqlite3'. Aangezien de RMDB-directory is beperkt tot de daemon-gebruiker, is supergebruikerstoegang (sudo
) vereist om toegang tot de bestanden te kunnen krijgen. Wanneer u sudo
vóór de commando's plaatst, wordt u gevraagd uw beheerderswachtwoord in te voeren.
Gegevens ophalen met de commandoregel
De tool sqlite3 is geïnstalleerd in de map '/usr/bin/sqlite3'.
Via de tool sqlite3 hebt u toegang tot de tabellen en gegevens in de database van Remote Desktop. Met het volgende commando wordt een SQL-zoekactie uitgevoerd in de tabel 'systeminformation' (de tabel waarin uw rapportgegevens worden bewaard).
sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
Hieronder vindt u een voorbeeld van de eerste regels in de uitvoer. Afhankelijk van uw lettertype en het vensterformaat kunnen de regels teruglopen.
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
U kunt het scheidingsteken tussen de kolommen aanpassen met de schakeloptie -separator
. In dit voorbeeld wordt een komma als scheidingsteken gebruikt.
sudo sqlite3 -separator , /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
Andere handige schakelopties zijn -html
, -line
, -list
en -column
. Raadpleeg de man-pagina voor sqlite3
voor meer informatie.
De uitvoer van dit commando wordt in goed leesbare kolommen met kolomkoppen weergegeven.
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
Het veld ComputerID
komt overeen met het Ethernet-MAC-adres van de client die de rapportgegevens heeft verstuurd en kan als unieke waarde in uw SQL-zoekacties worden gebruikt. U kunt alle typen objectnamen weergeven door de SQL-zoekactie in het bovenstaande voorbeeld te wijzigen in:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"SELECT distinct objectname FROM systeminformation"
Uitvoer:
ObjectName
--------------------
Mac_HardDriveElement
Mac_NetworkInterface
Mac_SystemInfoElemen
Mac_RAMSlotElement
Mac_PCIBusElement
Mac_USBDeviceElement
Mac_FireWireDeviceEl
Voor elke objectnaam is een aantal waarden mogelijk voor propertyname
. Als u uw zoekactie wijzigt, kunt u alle beschikbare paren van objectname/propertyname
weergeven:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"SELECT distinct objectname, propertyname FROM systeminformation"
Uitvoer:
ObjectName PropertyName
-------------------- ------------
Mac_HardDriveElement DataDate
Mac_HardDriveElement Model
Mac_HardDriveElement VolumeName
Mac_HardDriveElement JournalingIs
Mac_HardDriveElement LastBackupDa
Mac_HardDriveElement LastModifica
Deze kenmerken worden gecombineerd, zodat u een SQL-zoekactie kunt samenstellen waarmee een bepaalde waarde wordt opgehaald. Als u bijvoorbeeld de serienummers van clients wilt opvragen, kunt u de volgende zoekactie opgeven:
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
U kunt met de SQL-zoekactie ook een lijst ophalen met de computernamen (in plaats van de Ethernet-ID's) en -waarden:
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'"
Uitvoer:
Value Value
---------- -----------
Xserve QP4241FHPMZ
mini YM6090M9U39
NetBoot001 W862100NW92
Server G86492DVX68
Server2 W854503QURC
Wendy G 4H63861KVMM
Het sqlite-commando uitvoeren met Automator
Omdat u met Automator shellcommando's kunt uitvoeren, kunt u het programma gebruiken om sqlite3
-uitvoer te verzamelen en naar andere programma's te versturen. In het volgende voorbeeld worden de rapportgegevens verzameld en naar Teksteditor verstuurd:
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
In de takenreeks wordt gevraagd om een SQL-commando en wordt vervolgens een shellcommando gemaakt via de actie 'Voer AppleScript uit', waarna een venster voor de identiteitscontrole kan worden weergegeven. In het voorbeeld wordt een tab als scheidingsteken gebruikt.
Onderdelen van sqlite-zoekactie
De volgende onderdelen kunnen met een sqlite-zoekactie worden opgevraagd:
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
Revision
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