Explicando melhor, exatamente em razão da dificuldade conceitual de uso do ping, penso ser melhor no caso de não retorno do sinal, ao invés de desde logo acionar o comando de reconexão, melhor acionar o ping novamente, ou seja aciona duas vezes, tentando com isso minimizar a falha conceitual de uso do ping, portanto, se ocorrem duas falhas seguidas de retorno do sinal, então razoavelmente poderia imaginar que está mesmo sem conexão, daí aciona o comando de reconexão.
Apenas para efeitos de diferenciar ao testar o script, estão nomeados como ping1 e ping2, o que em tempo de execução dá uma noção melhor do que está acontecendo, é apenas essa a razão de ter 'echo' com textos diferentes.
A sugestão quanto ao uso do sleep é para controlar melhor a execução e tem duas finalidade.
O primeiro sleep, arbitrariamente assinalado como 15 segundos, deve-se ao fato que se o script for disparado antes que o desktop tenha sido completamente carregado pode ocasionar uma falha.
A questão de fundo é que o sistema faz o boot usando o systemd, o que significa executar tarefas em paralelo, então pode acontecer de que o script seja disparado antes que realmente toda a conexão de rede padrão tenha sido carregada, o que vai dar erro logo de início.
Assim, será necessário que em face do caso concreto você ajuste aí esse tempo de espera de uma forma tal que consiga trabalhar melhor.
Os sleep seguinte são porque se não fizer algo assim ele dispara o ping na velocidade do processador e acaba derrubando o próprio network-manager, vira uma maluquice, então precisa pensar em algo que reduza a velocidade de repetição disso.
Sobremodo o sleep logo após disparar o comando de reconexão precisa estar bem ajustado, o que vai depender concretamente da fluidez, ou melhor dizendo, da dificuldade concreta desse driver aí existente e em que velocidade ele consegue refazer a conexão, portanto, ajuste igualmente para um valor empírico adequado.
Atribua permissão de execução ao script:
No exemplo abaixo usei o nome de script como constatus-ping.sh [conexão (con) status ping, para diferenciar de outra abordagem, explico adiante], mas claro que pode ser qualquer um que você queira, é apenas um exemplo.
Atribuindo permissão de execução:
chmod +x constatus-ping.sh
Para execução é fazer numa janela de terminal:
sudo ./constatus-ping.sh
(possivelmente você sabe disso, mas em todo caso, note que para executar é um ponto (.) seguido de uma barra inclinada para a direita e o nome do arquivo, tudo sem espaços.)
Caso funcione bem, depois de bem testado no cenário real, pode ser colocado para iniciar automaticamente nos "Aplicativos iniciais de sessão", mas disso como fazer podemos detalhar melhor depois, vez que como há o sudo envolvido precisa autorizar a execução no sudoers.
De qualquer forma, como não tenho aqui a conexão caindo, acaba não dando para testar realmente na prática, pois tenho que forçar manualmente a desconexão, o que evidentemente não é a mesma coisa.
Bem, faça aí e vamos ver o que vai dar, entrementes é o caso de procurar uma solução real para o problema.