Бывают разные случаи, когда полезно проверить подключен ли ноутбук к электросети.
Первый вариант, через VNC или Apple Remote Desktop загрузиться и посмотреть состояние в графическом режиме.
Но есть способ автоматизировать процесс.
В комплекте с MacOS идёт консольная утилита
system_profiler.
Если её запустить просто так, то будет выдана куча системной информации.
Чтобы выделить только нужное, существует набор фильтров.
С полным списком можно ознакомиться командой:
$ system_profiler -listDataTypes
Available Datatypes:
SPHardwareDataType
SPNetworkDataType
SPSoftwareDataType
SPParallelATADataType
SPAudioDataType
SPBluetoothDataType
SPCardReaderDataType
SPDiagnosticsDataType
SPDiscBurningDataType
SPEthernetDataType
SPFibreChannelDataType
SPFireWireDataType
SPDisplaysDataType
SPHardwareRAIDDataType
SPMemoryDataType
SPPCIDataType
SPParallelSCSIDataType
SPPowerDataType
SPPrintersDataType
SPSASDataType
SPSerialATADataType
SPUSBDataType
SPAirPortDataType
SPFirewallDataType
SPNetworkLocationDataType
SPModemDataType
SPNetworkVolumeDataType
SPWWANDataType
SPApplicationsDataType
SPDeveloperToolsDataType
SPExtensionsDataType
SPFontsDataType
SPFrameworksDataType
SPLogsDataType
SPManagedClientDataType
SPPrefPaneDataType
SPStartupItemDataType
SPSyncServicesDataType
SPUniversalAccessDataType
Нас интересует только подсистема питания SPPowerDataType.
Выполняем:
$ system_profiler SPPowerDataType
Power:
Battery Information:
Model Information:
Serial Number: 9G951015R4M1A
Manufacturer: DP
Device name: bq20z951
Pack Lot Code: 0000
PCB Lot Code: 0000
Firmware Version: 0042
Hardware Revision: 0001
Cell Revision: 0122
Charge Information:
Charge remaining (mAh): 8346
Fully charged: No
Charging: No
Full charge capacity (mAh): 11999
Health Information:
Cycle count: 99
Condition: Normal
Battery Installed: Yes
Amperage (mA): -3316
Voltage (mV): 7665
System Power Settings:
AC Power:
System Sleep Timer (Minutes): 60
Disk Sleep Timer (Minutes): 0
Display Sleep Timer (Minutes): 60
Automatic Restart On Power Loss: No
Wake On AC Change: No
Wake On Clamshell Open: Yes
Wake On LAN: Yes
Display Sleep Uses Dim: Yes
GPUSwitch: 2
Battery Power:
System Sleep Timer (Minutes): 10
Disk Sleep Timer (Minutes): 0
Display Sleep Timer (Minutes): 7
Wake On AC Change: No
Wake On Clamshell Open: Yes
Current Power Source: Yes
Display Sleep Uses Dim: Yes
GPUSwitch: 2
Reduce Brightness: Yes
Hardware Configuration:
UPS Installed: No
AC Charger Information:
Connected: No
Charging: No
Предпоследняя строчка
Connected: Yes
показывает, что подключен внешний источник питания.
И, наоборот,
Connected: No
говорит, что в настоящее время ноутбук работает от батареи.
А показатель
Charge remaining (mAh): 5893
уведомляет об оставшемся заряде. Зная
Full charge capacity (mAh): 12008
можно посчитать процент заряда.
Все необходимые нам индикаторы не составляет особого труда вычленить с помощью grep/awk, или, указав ключ
-xml, распарсить результат с помощью Scala/Groovy.
Можно использовать Automator, в нём имеется встроенный компонент "Профиль системы" с аналогичным функционалом.
Теперь, с помощью cron, того же Automator и т.п. можно настроить, чтобы при падении заряда ниже какого-то уровня, отправлялось смс, почта и другие уведомления для принятия мер: воткнуть вилку в розетку или усыпить машину, если невозможно первое.