Ă propos de SQLite et de Remote Desktop
Remote Desktop stocke les informations quâelle collecte dans une base de donnĂ©es SQLite.
à propos de la base de données
Remote Desktop capture les donnĂ©es des informations systĂšme dans un tableau nommĂ© « systeminformation ». Il ne conserve pas les donnĂ©es historiques. Les nouvelles valeurs Ă©crasent les informations prĂ©cĂ©demment capturĂ©es Ă chaque fois que des donnĂ©es sont collectĂ©es. Si vous souhaitez conserver les donnĂ©es historiques, vous pouvez capturer les donnĂ©es vers une deuxiĂšme base de donnĂ©es. Les donnĂ©es dans la base de donnĂ©es peuvent aussi faciliter le dĂ©ploiement de macOS, parce que les apps peuvent accĂ©der aux enregistrements dâordinateurs ou synchroniser les rĂ©glages spĂ©cifiques Ă un ordinateur en fonction des valeurs de la base de donnĂ©es.
Pour des raisons dâordre pratique, considĂ©rez la base de donnĂ©es comme Ă©tant en lecture seule. La structure de la base de donnĂ©es peut changer afin de rĂ©pondre aux besoins de versions plus rĂ©centes de Remote Desktop ou, dans certains cas, Remote Desktop purgera la base de donnĂ©es afin dâĂ©viter quâelle soit corrompue.
La base de donnĂ©es SQLite se trouve dans /private/var/db/RemoteManagement/RMDB/rmdb.sqlite3. Le rĂ©pertoire RMDB est limitĂ© Ă lâutilisateur dĂ©mon ; un accĂšs super-utilisateur (sudo
) est donc requis pour pouvoir accéder aux fichiers. Lorsque vous utilisez sudo
pour prĂ©facer les commandes, vous ĂȘtes invitĂ© Ă saisir votre mot de passe dâadministrateur.
Récupérer des données via la ligne de commande
Lâoutil sqlite3 est installĂ© dans /usr/bin/sqlite3.
Lâoutil sqlite3 offre un accĂšs aux tableaux et donnĂ©es de la base de donnĂ©es Remote Desktop. Lâinstruction suivante envoie une requĂȘte SQL dans le tableau « systeminformation », qui stocke vos donnĂ©es de rapport.
sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
Voici un exemple illustrant les premiĂšres lignes de la sortie. Selon la taille de la police et de celle de la fenĂȘtre, il est possible quâune ligne individuelle sâaffiche sur plusieurs lignes.
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
Utilisez lâargument -separator
pour modifier le dĂ©limiteur utilisĂ© entre les colonnes. Lâexemple suivant utilise la virgule comme dĂ©limiteur.
sudo sqlite3 -separator , /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
-html
, -line
, -list
et -column
sont dâautres arguments pratiques. Pour en savoir plus, consultez la page man sqlite3
.
Cette commande produit des sorties dans toutes les colonnes lisibles et affiche les en-tĂȘtes de colonne.
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
Le champ ComputerID
correspond Ă lâadresse MAC Ethernet du client ayant rĂ©pondu avec des donnĂ©es de rapport. Il peut faire office de valeur unique pour former vos requĂȘtes SQL. Affichez tous les types de noms dâobjets objectname en modifiant comme suit la requĂȘte SQL de lâexemple prĂ©cĂ©dent :
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"SELECT distinct objectname FROM systeminformation"
Sorties :
ObjectName
--------------------
Mac_HardDriveElement
Mac_NetworkInterface
Mac_SystemInfoElemen
Mac_RAMSlotElement
Mac_PCIBusElement
Mac_USBDeviceElement
Mac_FireWireDeviceEl
Pour chaque nom dâobjet objectname, il existe un certain nombre de valeurs de nom de propriĂ©tĂ© propertyname
possibles. La modification de votre requĂȘte affiche les paires objectname/propertyname
disponibles :
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \
"SELECT distinct objectname, propertyname FROM systeminformation"
Sorties :
ObjectName PropertyName
-------------------- ------------
Mac_HardDriveElement DataDate
Mac_HardDriveElement Model
Mac_HardDriveElement VolumeName
Mac_HardDriveElement JournalingIs
Mac_HardDriveElement LastBackupDa
Mac_HardDriveElement LastModifica
Ces propriĂ©tĂ©s se combinent pour vous aider Ă former une requĂȘte SQL rĂ©cupĂ©rant une valeur spĂ©cifique. Par exemple, pour trouver les numĂ©ros de sĂ©rie de clients, vous pouvez utiliser :
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
Faites en sorte que la requĂȘte SQL rĂ©cupĂšre une liste des noms (au lieu des ID Ethernet) et des valeurs des ordinateurs :
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'"
Sorties :
Value Value
---------- -----------
mini X0XX234XYXYX
mini X01X23X4XXXX
NetBoot001 X01X0101XXX0
Server XX12345XXX6
Server2 PPYWWSSSEEER
Aga O X0XX123XY4XY
Utiliser Automator avec la commande sqlite
Ătant donnĂ© quâAutomator peut exĂ©cuter des commandes shell, il peut ĂȘtre utilisĂ© pour collecter la sortie de sqlite3
et lâenvoyer Ă dâautres apps. Cet exemple collecte des donnĂ©es de rapport et les envoie Ă TextEdit :
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
Le processus invite Ă saisir une commande SQL, puis crĂ©e une commande shell utilisant lâaction « ExĂ©cuter un script AppleScript », qui peut afficher une zone de dialogue dâauthentification. Le dĂ©limiteur utilisĂ© dans lâexemple est une tabulation.
ĂlĂ©ments de requĂȘte sqlite
Les Ă©lĂ©ments suivants peuvent ĂȘtre consultĂ©s Ă lâaide de sqlite :
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
Fabricant
ModĂšle
OwnerName
PermissionModes
PermissionsAreEnabled
Protocole
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
Fabricant
ModĂšle
Mac_RAMSlotElement
DataDate
MemoryModuleSize
MemoryModuleSpeed
MemoryModuleSpeed
MemoryModuleSpeed
Mac_PCIBusElement
CardMemory
CardName
CardRevision
CardType
DataDate
DeviceID
RomRevision
SlotName
VendorID