Temos uma configuração Nagios
+ check_mk
no servidor Ubuntu 12.04 LTS com smstools
para enviar notificações de mensagem de texto. Estamos usando um telefone Nokia 6230 antigo conectado por um cabo USB, embora eu não me lembre do símbolo do fornecedor do cabo. Ocasionalmente, o dispositivo deixa de responder - aparentemente, o endereço do dispositivo tty
muda de /dev/ttyACM0
para /dev/ttyACM1
ou vice-versa.
De acordo com o smstools
log:
2013-05-28 16:51:16,3, GSM1: Could not send character A, cause: Input/output error
2013-05-28 16:51:18,3, GSM1: Could not send character A, cause: Input/output error
e nada mais, na verdade (eu não usei o modo de depuração completa embora).
Após o reinício do serviço smstools
:
2013-05-28 22:29:09,3, GSM1: Cannot open serial port /dev/ttyACM0, error: No such file or directory
É possível que algumas dessas ocorrências tenham sido causadas por um dos nossos técnicos, inadvertida e inconscientemente, desconectando o telefone por alguns segundos enquanto conectava outro dispositivo. Eu não posso ter certeza embora.
A pergunta é: como faço o telefone sempre usar o mesmo endereço tty
? Acho que não há problema em usar udev
regras para isso, mas tenho pouca experiência com aqueles.
lsusb
output para o telefone é:
Bus 002 Device 004: ID 0421:040f Nokia Mobile Phones 6230 GSM Phone
É um servidor de produção ao vivo monitorando cerca de 250 hosts e eu não tenho outro telefone disponível para experimentos no momento, então não posso testá-lo por tentativa e erro.
EDITAR .
A saída de udevadm info -q all -n /dev/ttyACM1 --attribute-walk
:
looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.1/tty/ttyACM1':
KERNEL=="ttyACM1"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.1':
KERNELS=="2-1.6:1.1"
SUBSYSTEMS=="usb"
DRIVERS=="cdc_acm"
ATTRS{bInterfaceNumber}=="01"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="01"
ATTRS{bInterfaceClass}=="02"
ATTRS{bInterfaceSubClass}=="02"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{supports_autosuspend}=="1"
ATTRS{bmCapabilities}=="6"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6':
KERNELS=="2-1.6"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}=="11"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 8mA"
ATTRS{urbnum}=="391970"
ATTRS{idVendor}=="0421"
ATTRS{idProduct}=="040f"
ATTRS{bcdDevice}=="0550"
ATTRS{bDeviceClass}=="02"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="12"
ATTRS{busnum}=="2"
ATTRS{devnum}=="4"
ATTRS{devpath}=="1.6"
ATTRS{version}==" 1.10"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Nokia"
ATTRS{product}=="Nokia 6230"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
KERNELS=="2-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="59"
ATTRS{idVendor}=="8087"
ATTRS{idProduct}=="0024"
ATTRS{bcdDevice}=="0000"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="2"
ATTRS{devpath}=="1"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="6"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="24"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0302"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="2"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 3.2.0-38-generic ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.0"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.0':
KERNELS=="0000:00:1d.0"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x1e26"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{subsystem_device}=="0x84ca"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="23"
ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
ATTRS{local_cpulist}=="0-3"
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{enable}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
ATTRS{companion}==""
ATTRS{uframe_periodic_max}=="100"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
Não tenho certeza de quais atributos de qual nível de árvore pai devo usar.
Eu tentei com SUBSYSTEM=="usb",ATTRS{product}=="Nokia 6320",NAME="ttyACM*",SYMLINK+="nokia"
e variações ( SYMLINK
- sem +
; KERNEL=="2-1.6"
, sem NAME
e assim por diante), tudo em /etc/udev/rules.d/10-local.rules
file. Eu simplesmente não recebo nenhum link simbólico ou nenhuma alteração perceptível.
Talvez o problema esteja na maneira como as regras foram aplicadas - não posso dar ao luxo de reiniciar a máquina e esperava não ter que enviar uma tecnologia para a sala do servidor apenas para conectar e um cabo USB. Eu usei /etc/init.d/udev restart
, udevadm control --reload-rules
e udevadm trigger
com algumas combinações de --attr-match=vendor="Nokia"
, --attr-match=product="Nokia 6320"
e assim por diante, conforme descrito em esta resposta . Devo enviar uma tecnologia para ligar e desligar ou comprar outro telefone (barato) para testes?