SQLite
Remote Desktop은 수집하는 정보를 SQLite 데이터베이스에 저장합니다.
데이터베이스에 관하여
Remote Desktop은 ‘systeminformation’이라는 표에 시스템 정보 데이터를 캡처합니다. 데이터 기록을 유지하지는 않습니다. 새로운 값은 데이터가 수집될 때마다 이전에 캡처된 정보를 덮어씁니다. 이력 데이터를 보존하고 싶다면 데이터를 두 번째 데이터베이스에 캡처할 수 있습니다. 데이터베이스에 있는 데이터는 OS X 배포를 도울 수도 있습니다. App이 컴퓨터 레코드에 접근하거나 데이터베이스의 값을 기반으로 한 기계에 한정적인 설정을 동기화할 수 있기 때문입니다.
연습 목적으로 사용 시 데이터베이스를 읽기 전용으로 사용해야 합니다. 데이터베이스 구조는 Remote Desktop의 새로운 버전에 맞게 변경될 수 있으며 일부 환경에서는 충돌을 방지하기 위해 Remote Desktop이 데이터베이스를 제거하기도 합니다.
SQLite 데이터베이스는 /private/var/db/RemoteManagement/RMDB/rmdb.sqlite3에 있습니다. RMDB 디렉토리는 데몬 사용자로 제한되며 파일에 접근하려면 슈퍼 유저(sudo
) 접근이 필요합니다. 명령어 앞에 sudo
를 사용할 경우 관리자 암호를 입력해야 합니다.
명령어 라인을 사용하여 데이터 검색하기
sqlite3 도구는 /usr/bin/sqlite3에 설치되어 있습니다.
sqlite3 도구는 Remote Desktop 데이터베이스의 표와 데이터에 대한 접근을 제공합니다. 다음은 ‘systeminformation’ 표(리포트 데이터가 저장되어 있는 표)에 있는 SQL 질의를 전송합니다.
sudo sqlite3 /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
다음은 출력의 처음 몇 줄에 대한 예입니다. 서체와 윈도우 크기에 따라 줄이 아래로 내려갈 수 있습니다.
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
-separator
스위치로 열 사이에 사용된 구분자를 조절할 수 있습니다. 다음 예제는 쉼표 구분자를 사용합니다.
sudo sqlite3 -separator , /var/db/RemoteManagement/RMDB/rmdb.sqlite3 "select * from systeminformation"
다른 유용한 스위치는 -html
, -line
, -list
및 -column
을 포함합니다. 더 자세한 내용은 sqlite3
에 대한 man 페이지를 참조하십시오.
이 명령은 매우 읽기 쉬운 열을 출력하고 해당 열 제목을 표시합니다.
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
ComputerID
필드는 리포트 데이터를 통해 응답하는 클라이언트의 이더넷 MAC 주소와 일치하고 SQL 질의를 구성하는 고유 값으로 사용될 수 있습니다. 위의 예제에서 SQL을 수정하여 모든 objectname 유형을 볼 수 있습니다.
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3
"SELECT distinct objectname FROM systeminformation"
출력:
ObjectName
--------------------
Mac_HardDriveElement
Mac_NetworkInterface
Mac_SystemInfoElemen
Mac_RAMSlotElement
Mac_PCIBusElement
Mac_USBDeviceElement
Mac_FireWireDeviceEl
각 objectname에 대해 다양한 propertyname 값을 사용할 수 있습니다. 질의를 수정하면 가능한 objectname/propertyname 쌍을 제공합니다.
sudo sqlite3 -header -column /var/db/RemoteManagement/RMDB/rmdb.sqlite3
"SELECT distinct objectname, propertyname FROM systeminformation"
출력:
ObjectName PropertyName
-------------------- ------------
Mac_HardDriveElement DataDate
Mac_HardDriveElement Model
Mac_HardDriveElement VolumeName
Mac_HardDriveElement JournalingIs
Mac_HardDriveElement LastBackupDa
Mac_HardDriveElement LastModifica
이러한 속성은 특정 값을 검색하는 SQL 질의를 구성하는데 도움이 되도록 결합합니다. 예를 들어, 클라이언트 일련 번호를 찾으려면 다음을 사용할 수 있습니다.
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
컴퓨터 이름(이더넷 ID 대신)과 값의 목록을 얻는 SQL 질의를 만들 수 있습니다.
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'"
출력:
Value Value
---------- -----------
Xserve QP4241FHPMZ
mini YM6090M9U39
NetBoot001 W862100NW92
Server G86492DVX68
Server2 W854503QURC
Wendy G 4H63861KVMM
sqlite 명령과 함께 Automator 사용하기
Automator는 셀 명령을 실행할 수 있기 때문에 sqlite3 출력을 수집하고 다른 App으로 전송하는 데 사용될 수 있습니다. 이 예제는 리포트 데이터를 수집하고 텍스트 편집기로 전송합니다.
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
작업흐름은 SQL 명령에 대해 프롬프트를 띄운 다음 AppleScript 실행 동작을 사용하여 셀 명령을 구축합니다. 그러면 인증 대화상자가 나타납니다. 예제에서 구분자는 탭입니다.
sqlite 질의 항목
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 |
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 |