У меня есть сотовый телефон, чей порт для зарядки плохо подключен, и я хочу получать уведомление, если он отключен. Я хочу, чтобы это работало, даже если телефон выключен и не монтируется в качестве файловой системы, поэтому мне нужно обнаружить утечку энергии. Я буду использовать notify-send для отправки предупреждения из сценария.
Похоже, notify-send , но он не поддается синтаксическому анализу и не может быть легко сгенерирован. Я вижу, что можно обнаружить использование мощности USB в других операционных системах.
Я нашел некоторую информацию о других операционных системах устройствах USB, но те, которые я пробовал, смонтированных файловых систем. Я также нашел инструкции по включению и выключению USB-устройств.
Вот что я сделал, чтобы понять это. Во-первых, я написал сценарий для сравнения вывода из некоторых системных информационных команд:
#!/bin/sh
write_logs(){
ls /dev/disk/by-uuid/ > uuids
lsusb -v > lsusb-v
lsusb -t > lsusb-t
ls -alh /sys/bus/usb/devices/ | sed -E 's/.+ -> //' | tail -n+4 > sysbus
}
echo "Insert plug and press ENTER."
mkdir a; cd a
read VAR; write_logs
echo "Remove plug and press ENTER."
mkdir ../b; cd ../b
read VAR; write_logs
cd ..
diff -r a b # Actually, I prefer meld, but this is portable.
Я не понял, что результат был каким-то другим, потому что для моей системы требуется несколько секунд, чтобы распознать подключено новое USB-устройство. Если вы запустите этот скрипт, подождите несколько секунд, прежде чем нажимать ENTER. Когда я это сделал, я понял, что результат для этих команд действительно изменился.
Для моего телефона я могу определить, подключен ли он к этому:
lsusb -v 2>/dev/null | grep 'Motorola PCS' >/dev/null \
&& echo phone is plugged in
I может обнаружить, что что-то подключено к определенному порту с помощью этого:
ls -alh /sys/bus/usb/devices/ | grep pci0000:00/0000:00:1d.7/usb2/2-6 >/dev/null \
&& echo Something is plugged into the left USB port.
Я нашел эти шаблоны grep, просто сравнив вывод с приведенным выше скриптом; вам может потребоваться изменить их для вашей собственной системы или вашего собственного телефона.
Мне все равно придется поиграть с тем, как активировать мою функцию обнаружения и периодически ее запускать, чтобы узнать, было ли устройство удалено ( вероятно, используя chron). Кроме того, я не понял, как определить, сколько энергии используется; это просто обнаруживает, что что-то связано или нет.
Вот что я сделал, чтобы понять это. Во-первых, я написал сценарий для сравнения вывода из некоторых системных информационных команд:
#!/bin/sh
write_logs(){
ls /dev/disk/by-uuid/ > uuids
lsusb -v > lsusb-v
lsusb -t > lsusb-t
ls -alh /sys/bus/usb/devices/ | sed -E 's/.+ -> //' | tail -n+4 > sysbus
}
echo "Insert plug and press ENTER."
mkdir a; cd a
read VAR; write_logs
echo "Remove plug and press ENTER."
mkdir ../b; cd ../b
read VAR; write_logs
cd ..
diff -r a b # Actually, I prefer meld, but this is portable.
Я не понял, что результат был каким-то другим, потому что для моей системы требуется несколько секунд, чтобы распознать подключено новое USB-устройство. Если вы запустите этот скрипт, подождите несколько секунд, прежде чем нажимать ENTER. Когда я это сделал, я понял, что результат для этих команд действительно изменился.
Для моего телефона я могу определить, подключен ли он к этому:
lsusb -v 2>/dev/null | grep 'Motorola PCS' >/dev/null \
&& echo phone is plugged in
I может обнаружить, что что-то подключено к определенному порту с помощью этого:
ls -alh /sys/bus/usb/devices/ | grep pci0000:00/0000:00:1d.7/usb2/2-6 >/dev/null \
&& echo Something is plugged into the left USB port.
Я нашел эти шаблоны grep, просто сравнив вывод с приведенным выше скриптом; вам может потребоваться изменить их для вашей собственной системы или вашего собственного телефона.
Мне все равно придется поиграть с тем, как активировать мою функцию обнаружения и периодически ее запускать, чтобы узнать, было ли устройство удалено ( вероятно, используя chron). Кроме того, я не понял, как определить, сколько энергии используется; это просто обнаруживает, что что-то связано или нет.