Isso não tem nada a ver com systemd ou systemctl
e tudo a ver com o uso correto básico do programa chat
.
chat
é um programa geralmente empacotado com o servidor PPP, e isso foi respondido em o Linux PPP FAQ , mantido pela Al Longyear , desde pelo menos 1996:
17.6. I ran chat
. It seems to want to use the local terminal as the modem and it does not talk to the modem. How do I specify the modem name to chat
?
chat
is in a class of programs called a 'filter'. That is, it reads from the standard input, does some processing internally, and writes to the standard output.
So, if you really want to just run chat
and have it talk to a modem then you need to use the I/O redirection operators <
and >
so that the standard input and output are redirected to the modem.
However, if you are using chat
with pppd
, please […]
Veja o que você está fazendo:
chat TIMEOUT 1 "" "AT+CMGF=1" "OK" > /dev/ttyUSB0
Você está executando chat
com sua saída padrão conectada a um dispositivo serial, mas sua entrada padrão está conectada ao que quer que seja a entrada padrão do script de shell. Esse será o terminal quando você executar o script de shell a partir de sua sessão de login e a entrada padrão do daemon, seja lá o que for (o que certamente não será um dispositivo de terminal), quando você executar o script script de shell de um daemon.
Não é de admirar que chat
não esteja conversando com o dispositivo serial. Não é de admirar que chat
esteja reclamando que nem está falando com um dispositivo de terminal quando você executa o script de shell de um daemon.
Portanto, use chat
corretamente, como diz o Linux PPP FAQ . Faça a entrada e a saída padrão do mesmo dispositivo, o dispositivo com o qual você está tentando conversar.
Você pode não querer abrir e fechar o dispositivo serial em todas as várias chamadas de chat
, depois de começar a usar chat
conectado ao dispositivo correto. Isso, novamente, não tem nada a ver com systemd ou dæmons, mas é um exercício simples no mecanismo de execução de vários comandos sucessivos a partir do shell que possui descrições de arquivo de entrada e saída padrão padrão compartilhadas.
Ou, na verdade, dependendo do que ele faz, até mesmo executar todo o script de shell dessa maneira, redirecionando a entrada e a saída padrão de todo o script para o dispositivo apropriado em qualquer programa que esteja invocando o script em primeiro lugar. (Use a opção -s
para chat
para obter melhores resultados nesse caso.)