Nagios
SMS 알림을 보내기 위해 Ubuntu 12.04 LTS 서버에 + 설정이 있습니다 . 우리는 USB 케이블을 통해 연결된 오래된 Nokia 6230 휴대폰을 사용하고 있지만 케이블의 공급업체 기호가 기억나지 않습니다. 때때로 장치가 응답하지 않는 경우가 있습니다. 장치 주소가 에서 또는 그 반대로 변경되는 것 같습니다.check_mk
smstools
tty
/dev/ttyACM0
/dev/ttyACM1
smstools
로그 에 따르면 :
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
이것이 전부입니다(아직 전체 디버그 모드를 사용하지는 않았지만).
서비스가 다시 시작된 후 smstools
:
2013-05-28 22:29:09,3, GSM1: Cannot open serial port /dev/ttyACM0, error: No such file or directory
이러한 사고 중 일부는 당사 기술자 중 한 명이 다른 장치를 연결하는 동안 실수로 몇 초 동안 전화 연결을 끊음으로써 발생할 수 있습니다. 하지만 잘 모르겠습니다.
문제는 휴대전화가 항상 같은 tty
주소를 사용하도록 하려면 어떻게 해야 합니까?udev
규칙을 사용하는 데에는 문제가 없다고 생각 하지만 경험이 없습니다.
lsusb
전화기의 출력은 다음과 같습니다.
Bus 002 Device 004: ID 0421:040f Nokia Mobile Phones 6230 GSM Phone
약 250개의 호스트를 모니터링하는 라이브 프로덕션 서버인데, 현재 실험할 다른 전화기가 없어서 시행착오를 거쳐 직접 테스트할 수는 없습니다.
편집하다.
출력 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==""
어떤 상위 트리 수준의 어떤 속성을 사용할지 잘 모르겠습니다.
나는 파일 에 있는 모든 SUBSYSTEM=="usb",ATTRS{product}=="Nokia 6320",NAME="ttyACM*",SYMLINK+="nokia"
변형( SYMLINK
- 없이 +
; KERNEL=="2-1.6"
, 없이 NAME
등) 을 시도했습니다. /etc/udev/rules.d/10-local.rules
나는 심볼릭 링크를 전혀 얻지 못하거나 눈에 띄는 변화가 전혀 없습니다.
아마도 문제는 규칙이 적용되는 방식일 것입니다.- 기기를 재부팅할 여유가 없고, USB 케이블을 연결하고 뽑기 위해 기술자를 서버실에 보내지 않아도 됐으면 좋겠습니다. 나는 에서 언급한 대로 /etc/init.d/udev restart
, udevadm control --reload-rules
및 , 등 의 조합을 사용했습니다.udevadm trigger
--attr-match=vendor="Nokia"
--attr-match=product="Nokia 6320"
이 답변. 장치를 연결 및 분리하도록 기술자를 보내야 합니까, 아니면 테스트하기 위해 다른 (저렴한) 전화기를 구입해야 합니까?
답변1
장치 이름이 없으면 smstools가 전혀 시작되지 않는 것을 확인할 수 있습니다. 따라서 이것은 작동하지 않습니다.
장치=GSM*
#device=/dev/ttyACM0
두 개의 장치를 추가할 수 있지만 그것도 올바른 솔루션이 아닙니다. smstools가 ACM1 및 ACM0을 사용하면 어떻게 되나요? 예, 귀하의 휴대전화는 통화/문자 전송에 사용할 수 없습니다.
아직 올바른 해결책을 찾지 못했지만 위의 방법은 작동하지 않습니다. 실제로 이 웹사이트에서 복사했습니다:http://unix.findincity.net/view/635395087004115229136640/point-usb-phone-to-특이적-devttyacm-using-udev
답변2
아이디어 #1: 모니터링 및 재부팅
나는 이것이 해킹이라고 생각하지만, smstools 로그를 모니터링하여 이런 일이 언제 발생하는지 파악하고 그 당시 사용하고 있던 모든 장치에서 smstools를 다시 시작하도록 cron을 설정할 수 있습니다.
이 nagios 스크립트를 사용하여 smstools 로그를 볼 수 있습니다.로그 확인 3.pl:
check_log3.pl -l /var/log/smstools -s /tmp/log_smstools.seek \
-p 'Input/output error'
오류가 감지되면 smstools를 다시 시작할 수 있습니다. 이동 문제를 해결하려면 smstool 구성 파일의 복사본 2개를 보관할 수 있습니다. 하나는 설정용 /dev/ttyACM0
이고 다른 하나는 /dev/ttyACM1
.
적절한 시작을 사용하십시오.
아이디어 #2: 장치 두 개 추가
문서 보기SMS 도구파일에 두 개의 tty를 추가하거나 장치 라인을 전혀 지정하지 않을 수 있는 것 같습니다.
devices = GSM*
# device = /dev/ttyACM0