Acerca de SQLite en Remote Desktop
Remote Desktop almacena la información que recopila en una base de datos SQLite.
Acerca de la base de datos
Remote Desktop captura los datos sobre información del sistema en una tabla llamada “systeminformation”. No almacena datos históricos. Los valores nuevos sobrescriben la información obtenida anteriormente cada vez que se recopilan datos. Si desea conservar los datos históricos, puede guardarlos en una segunda base de datos. Los datos de la base de datos también pueden ayudar con la implementación de macOS, ya que las aplicaciones pueden acceder a los registros informáticos o sincronizar los ajuste específicos de la máquina en función de los valores que haya en la base de datos.
A efectos prácticos, la base de datos debería tratarse como de solo lectura. La estructura de la base de datos podría cambiar para satisfacer las necesidades de las nuevas versiones de Remote Desktop; en algunos casos, Remote Desktop purgará la base de datos para evitar su corrupción.
La base de datos SQLite se encuentra en /pivate/var/db/RemoteManagement/RMDB/rmdb.sqlite3. El directorio RMDB se limita al usuario daemon, por lo que se requiere acceso de superusario (sudo) para acceder a los archivos. Cuando utilice sudo para introducir los comandos, se le solicitará la contraseña de administrador.
Recuperar datos utilizando la línea de comandos
La herramienta sqlite3 está instalada en /usr/bin/sqlite3.
La herramienta sqlite3 proporciona acceso a las tablas y a los datos en la base de datos de Remote Desktop. El siguiente comando envía una consulta SQL a la tabla “systeminformation” (la tabla que almacena los datos de los informes).
sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"Aquí puede ver un ejemplo de las primeras líneas del resultado de la consulta. Las líneas pueden ajustarse dependiendo de su tipo de letra y los tamaños de las ventanas.
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:58ZPuede ajustar el delimitador utilizado entre columnas con el conmutador -separator. En este ejemplo, se utiliza un delimitador por comas.
sudo sqlite3 -separator , /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"Otros conmutadores útiles son -html, -line, -list y -column. Consulte la página “man” para sqlite3 para obtener más información.
Este comando genera unos resultados en columnas fácilmente legibles y muestra los encabezados de las columnas.
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:58ZEl campo ComputerID coincide con la dirección MAC Ethernet del cliente que respondió con datos de informes, y puede servir como un valor único para crear sus consultas SQL. Vea todos los tipos de objectname modificando la consulta SQL del ejemplo anterior para que quede del siguiente modo:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \    "SELECT distinct objectname FROM systeminformation"Da como resultado:
ObjectName -------------------- Mac_HardDriveElementMac_NetworkInterfaceMac_SystemInfoElemenMac_RAMSlotElementMac_PCIBusElementMac_USBDeviceElementMac_FireWireDeviceElPor cada objectname, hay varios valores posibles de propertyname. La modificación de la consulta proporciona las parejas objectname/propertyname disponibles:
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3 \    "SELECT distinct objectname, propertyname FROM systeminformation"Da como resultado:
ObjectName           PropertyName -------------------- ------------Mac_HardDriveElement DataDateMac_HardDriveElement ModelMac_HardDriveElement VolumeNameMac_HardDriveElement JournalingIsMac_HardDriveElement LastBackupDaMac_HardDriveElement LastModificaEstas propiedades se combinan para ayudarle a formar una consulta SQL que recupere un valor concreto. Por ejemplo, para buscar números de serie de clientes, puede utilizar:
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 4H63861KVMMCree la consulta SQL para obtener una lista de los nombres de los ordenadores (en lugar de los ID de Ethernet) y sus valores:
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'"Da como resultado:
Value      Value ---------- ----------- mini     X0XX234XYXYX mini       X01X23X4XXXX NetBoot001 X01X0101XXX0 Server     XX12345XXX6 Server2    PPYWWSSSEEER Aga O    X0XX123XY4XYUsar Automator con el comando sqlite
Puesto que Automator puede ejecutar comandos de shell, puede utilizarse para recopilar resultados de sqlite3 y enviarlos al resto de aplicaciones. En este ejemplo se recopilan datos de informes y se envían a 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 privilegesend runEl flujo de trabajo solicita un comando SQL y, a continuación, crea un comando de shell utilizando la acción “Ejecutar AppleScript”, lo cual hace aparecer un cuadro de diálogo de autenticación. El delimitador en este ejemplo es un tabulador.
Ítems de consulta de sqlite
Se puede utilizar sqlite para enviar consultas a los siguientes ítems:
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