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: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
Puede 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: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
El 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_HardDriveElement
Mac_NetworkInterface
Mac_SystemInfoElemen
Mac_RAMSlotElement
Mac_PCIBusElement
Mac_USBDeviceElement
Mac_FireWireDeviceEl
Por 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 DataDate
Mac_HardDriveElement Model
Mac_HardDriveElement VolumeName
Mac_HardDriveElement JournalingIs
Mac_HardDriveElement LastBackupDa
Mac_HardDriveElement LastModifica
Estas 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 4H63861KVMM
Cree 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 X0XX123XY4XY
Usar 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 privileges
end run
El 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