Sempre quis ser notificado quando um processo/comando de longa execução terminou, não apenas em seu desktop, mas também em seu telefone? Noti pode fazer isso.
Noti é uma ferramenta de linha de comando para macOS, Linux e Microsoft Windows que monitora um processo/comando e dispara uma notificação em sua área de trabalho ou telefone quando a execução é concluída.
Notificações com suporte:
Todas essas notificações compatíveis funcionam no macOS, Linux e Windows.
É importante observar que, se tudo o que você deseja é receber uma notificação na área de trabalho quando um comando de longa execução for concluído no Linux, você pode simplesmente executar command; notify-send Done
(por exemplo, sleep 3; notify-send Done
).
Por padrão, Noti mostra apenas o texto "Done!" quando uma tarefa de longa duração é concluída, mas isso pode ser estendido. Você pode especificar o título da notificação (o padrão é o nome do utilitário), definir a mensagem de notificação (o padrão é "Done!"; Ler stdin com -
) e mostrar o tempo de execução na mensagem de notificação.
Você pode usar Noti no início de um comando, por exemplo:
noti sleep 3
E após um comando, por exemplo:
sleep 3; noti
Você pode até usar Noti depois que um comando já foi iniciado, seja obtendo o PID do processo, então usando o seguinte comando:
noti --pwatch PID
Ou pressionando Ctrl + z
depois que um processo foi iniciado para suspendê-lo temporariamente e retomá-lo com:
fg; noti
Para mais informações sobre o Noti, incluindo como configurar notificações Noti com vários serviços, variáveis de ambiente Noti, etc., consulte esta página. Enquanto testava isso, porém, percebi que esta página está um tanto desatualizada. Por exemplo, o Slack não permite mais a criação de tokens de teste legados. Portanto, você também pode verificar a página de manual do Noti daqui e do noti.yaml man daqui.
Leia mais sobre como instalar e configurar o Noti, incluindo instruções completas para configurar o Noti para notificar em seu dispositivo móvel via Telegram e Slack quando um comando de longa execução for concluído.
Você também pode gostar de: Como repetir um comando a cada X segundos no Linux
As instruções de instalação do Noti vinculadas usando o botão acima contêm várias maneiras de instalar esta ferramenta. Se você deseja obter o binário diretamente, basta acessar a [página de lançamentos do GitHub] da ferramenta (https://github.com/variadico/noti/releases).
A maneira mais fácil de instalar o Noti no Linux é baixar o binário da página de lançamentos, extrair o arquivo e instalar o binário noti
em /usr/local/bin
usando (assumindo que você extraiu o arquivo binário Noti em sua pasta pessoal e abriu o terminal em seu diretório inicial):
sudo install noti*linux-amd64/noti /usr/local/bin
Por padrão, Noti usa notificações na área de trabalho (banners). A seguir mostrarei como configurar o Noti para enviar notificações quando um processo demorado for finalizado, no seu dispositivo móvel via Slack e Telegram, já que é o que eu uso. Se você quiser usá-lo com outro serviço, você precisará configurá-lo por conta própria, usando as instruções (embora um pouco incompletas na minha opinião, e desatualizadas em alguns casos, por exemplo, você não pode mais criar tokens Slack, e você deve usar um aplicativo Slack) daqui.
Você também pode gostar de: Bit é uma CLI Git moderna com um prompt interativo
Para fazer com que o Noti envie mensagens do Telegram quando um comando de longa duração terminar de ser executado, você precisará do Telegram chatId
e token
. Isso funciona com um chat ou canal do Telegram. Nas minhas instruções abaixo estaremos usando um canal do Telegram.
A primeira coisa que você precisa fazer é criar um canal do Telegram. Ele pode ter qualquer nome e descrição que você desejar.
Em seguida, você precisa usar BotFather (@botfather) para criar um bot e obter um token de acesso HTTP API.
Para fazer isso, inicie um bate-papo com @botfather e digite /start
no bate-papo para ver os comandos disponíveis, etc. Agora digite /newbot
para criar um novo bot e siga as instruções (você precisará definir um nome e um nome de usuário para o seu novo bot). Quando terminar, @botfather mostrará um token para acessar a API HTTP. Copie este token porque vamos precisar dele mais tarde.
chatId
Agora temos um token, mas também precisamos obter o chatId.
Adicione o bot que você criou na etapa 2 ao seu novo canal do Telegram (vá para o canal e, nas opções, escolha Add users
e procure o bot que você criou).
Assim que o bot for adicionado, digite uma mensagem no seu canal do Telegram. Isso é importante e necessário para obter o chatId
.
Agora você pode obter o chatId
visitando o seguinte link, que deverá ser editado:
https://api.telegram.org/botXXX:YYYYY/getUpdates
Substitua XXX:YYYYY
pelo token de API HTTP do seu bot que você obteve na etapa 2.
Este link mostrará vários textos entre os quais você encontrará:
chat":{"id":-100999999999}
A id aqui é seu chatId
que você precisa usar com Noti. Esse sinal -
no início do número faz parte do chatId
, portanto, certifique-se de usá-lo também, e não apenas os números.
Agora que conhecemos o Telegram chatId
e a API HTTP token
, crie o arquivo de configuração Noti, chamado noti.yaml
em ~/.config/noti/
Abra este arquivo com um editor de texto e cole o seguinte:
telegram: token: THE_HTTP_API_TOKEN_GOT_UNDER_STEP_2 chatId: 'THE_CHAT_ID_GOT_UNDER_STEP_3'
Exemplo (editado para não conter meus token
e chatId
reais):
telegram: token: 1598888700:AEEijJJcsABpYR1LdJ4_Llkr1Vq48vxAUSg chatId: '-10099999999999'
Teste Noti enviando uma mensagem de Telegram quando um comando de longa duração terminar de ser executado usando:
sleep 3; noti --telegram
Não se preocupe, você não precisa adicionar o parâmetro de linha de comando --telegram toda vez que usar o Noti. Você pode exportar NOTI_DEFAULT
com uma lista de tipos de notificação para acionar, por exemplo, para usar notificações de banner na área de trabalho e notificações do Telegram, você precisa exportar NOTI_DEFAULT="banner telegram"
.
Adicione export NOTI_DEFAULT="banner telegram"
ao arquivo ~/.profile
para tornar a alteração permanente. Obviamente, edite os tipos de notificação NOTI_DEFAULT
para o que deseja usar. Efetue logout e login novamente após fazer alterações em seu arquivo ~/.profile
para usar as novas configurações.
Você também pode estar interessado em: Como encontrar arquivos modificados nos últimos N dias ou minutos usando find
A página de documentação do Noti menciona a criação de um token OAuth para teste e desenvolvimento, mas isso não é mais compatível com o Slack. Em vez disso, precisaremos criar um aplicativo Slack.
Vá para https://api.slack.com/apps/new e crie um novo aplicativo Slack usando o nome que desejar.
Depois de criar um aplicativo Slack, você será redirecionado para a página de configurações do seu novo aplicativo. Aqui (tendo Basic Information
selecionado na barra lateral esquerda), expanda a seção Add features and functionality
e clique em Incoming Webhooks
. Aqui, ligue a chave ao lado de Activate Incoming Webhooks
.
Na parte inferior da página Incoming Webhooks
, clique em Add New Webhook to Workspace
e selecione um canal ou você mesmo (com o último abaixo de Direct Messages
). É aqui que você receberá a notificação. Selecionei meu nome de usuário aqui.
[[Atualização]] As etapas para criar um aplicativo Slack e um Webhook de entrada também são explicadas na documentação da API do Slack.
Depois de criar um Webhook de entrada, você será redirecionado para a página Incoming Webhooks
. Na parte inferior desta página, você deverá ver o Webhook URL
. Copie este URL.
Agora que temos o URL do Slack Webhook, crie o arquivo de configuração Noti, chamado noti.yaml
em ~/.config/noti/
Abra este arquivo com um editor de texto e cole o seguinte:
slack: appurl: 'https://hooks.slack.com/services/xxx/yyy/zzz'
Aqui, substitua o valor appurl
pelo URL do Slack Webhook que você obteve na etapa 4 e salve o arquivo.
Teste Noti enviando uma notificação do Slack quando um comando de longa execução terminar de ser executado usando:
sleep 3; noti --slack
Para usar sempre o Slack para enviar notificações ao digitar noti
(para que você não precise digitar noti --slack
toda vez que quiser ser notificado no Slack), você pode exportar NOTI_DEFAULT
com uma lista de tipos de notificação para acionar, por exemplo, para usar notificações de banner na área de trabalho e notificações do Slack, você precisa exportar NOTI_DEFAULT="banner slack"
.
Adicione export NOTI_DEFAULT="banner slack"
ao seu arquivo ~/.profile
para tornar a alteração permanente. Obviamente, edite os tipos de notificação NOTI_DEFAULT
de acordo com o que deseja usar. Efetue logout e login novamente após fazer alterações em seu arquivo ~/.profile
para usar as novas configurações.
Você também pode gostar de: Histórico do Bash: como mostrar um carimbo de data/hora (data/hora) quando cada comando foi executado
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
Get Notifications On Your Desktop Or Phone When A Long-Running Command Has Finished With Noti