Eu tenho um modem GSM USB que nem sempre funciona (Huawei E367u-2)
Às vezes, ele é redefinido (o dispositivo USB é desconectado / reconectado nos logs) e, quando volta a funcionar, tem números ttyUSB diferentes. Às vezes, no boot, usb_modeswitch
parece não ser demitido. O computador é um Raspberry Pi rodando Raspbian.
Eu tenho uma solução simples para isso: a cada minuto cron
executa o seguinte script (pseudo-código):
If WVDIAL is not running:
Run WVDIAL
Eu quero mudar o script para ser isso:
If /dev/ttyUSB0 is not present:
If DevicePresent(12d1:1446):
ResetDevice(12d1:1446)
ElseIf DevicePresent(12d1:1506)
ResetUSB(12d1:1506)
If WVDIAL is not running:
Run WVDIAL
Obviamente, este é pseudo-código, mas eu tenho as seguintes linhas que eu preciso amarrar juntos, mas não consigo descobrir como:
Isto carrega o wvdial se ele não estiver rodando:
#! /bin/sh
# /etc/init.d/wvdial
### BEGIN INIT INFO
# Provides: TheInternet
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
# Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
### END INIT INFO
# If you want a command to always run, put it here
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting GPRS Internet"
# run application you want to start
/sbin/start-stop-daemon --start --background --quiet --exec /usr/bin/wvdial internet
;;
stop)
echo "Stopping GPRS Internet"
# kill application you want to stop
/sbin/start-stop-daemon --stop --exec /usr/bin/wvdial
;;
*)
echo "Usage: /etc/init.d/noip {start|stop}"
exit 1
;;
esac
exit 0
Isso me permite encontrar o caminho /sys
para um determinado dispositivo:
for X in /sys/bus/usb/devices/*; do
echo "$X"
cat "$X/idVendor" 2>/dev/null
cat "$X/idProduct" 2>/dev/null
echo
done
E isso redefine um dispositivo USB se você souber o caminho correto / sys:
echo 0 > /sys/bus/usb/devices/1-1.2.1.1/authorized
echo 1 > /sys/bus/usb/devices/1-1.2.1.1/authorized
Então, eu preciso juntar as duas últimas seções e um teste para /dev/ttyUSB0
em uma seção que vai no comentário "Se você quiser que um comando seja sempre executado, coloque aqui".
- Como posso fazer isso?
- Existe uma maneira melhor de fazer isso?