-
Notifications
You must be signed in to change notification settings - Fork 0
/
mtk_dumb_phone_checker.sh
137 lines (123 loc) · 5.11 KB
/
mtk_dumb_phone_checker.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
# Título do programa
# Versão 1.3
# Versão portuguesa
echo ""
echo "##########################"
echo "# MTK dumb phone checker #"
echo "##########################"
echo ""
echo "O_o Nelson Guia o_O"
echo ""
# Pausa para que o título seja visível
sleep 2
# Função para verificar o dispositivo
check_device() {
local product_found=false
local non_mtk_found=false
# Captura do sinal SIGINT (Ctrl+c) interrompe a monitorização para voltar ao menu principal
trap 'echo ""; echo "Monitorização interrompida. Regressando ao menu principal..."; sleep 1; show_menu' INT
# Monitoriza os logs
while read -r line; do
# Verifica se o dispositivo conectado tem um chip MediaTek
if [[ "$line" =~ "idVendor=0e8d" || "$line" =~ "idVendor=08ed" ]]; then
echo "#############################################################################################################"
echo "O dispositivo tem um chip MediaTek Inc."
product_found=true
else
# Marca como dispositivo não encontrado, caso o dispositivo não seja MediaTek
if [[ "$line" =~ "idVendor" ]]; then
non_mtk_found=true
fi
fi
# Exibe a linha do log que contém "idProduct"
if [[ "$line" =~ "idProduct" ]]; then
echo "$line"
fi
# Se um dispositivo MediaTek for encontrado, exibe informações adicionais
if $product_found; then
{
# Monitoriza o log do kernel durante 15 segundos ou até encontrar a linha que contém "Product:"
timeout -s 15 15 tail -f /var/log/kern.log | grep -m 1 -i "Product:" | while read -r product_line; do
echo "$product_line"
break
done
} &
local tail_pid=$!
wait $tail_pid 2>/dev/null
# Lista os dispositivos USB conectados e exibe a linha que contém "MediaTek"
lsusb | grep -i "MediaTek"
echo "#############################################################################################################"
break # Interrompe o loop após encontrar e exibir as informações
fi
# Se encontrar um dispositivo que não é MediaTek, interrompe a verificação e exibe a informação Nenhum dispositivo MediaTek encontrado
if $non_mtk_found && [ "$product_found" = false ]; then
echo ""
echo "###########################################"
echo "# Nenhum dispositivo MediaTek encontrado. #"
echo "###########################################"
echo ""
break
fi
done < <(journalctl -kf)
}
# Função para exibir o menu e iniciar a verificação do dispositivo
show_menu() {
while true; do
clear
echo ""
echo "##########################"
echo "# MTK dumb phone checker #"
echo "##########################"
echo ""
echo "Selecione uma opção:"
echo "1) Iniciar pesquisa para verificar se é um dispositivo MediaTek"
echo "2) Forçar a limpeza de logs para nova pesquisa (opção 1)"
echo "3) Sair"
read -rp "Opção: " choice </dev/tty
case $choice in
1)
echo ""
echo "Para interromper a pesquisa e regressar ao menu principal, pressione as teclas 'Ctrl+C'"
echo ""
echo "============================================================"
echo "= Ligue o telemóvel ao computador através do cabo USB e ="
echo "= aguarde o mesmo iniciar o carregamento... Se necessário, ="
echo "= desligue o cabo, aguarde um pouco e volte a ligar.... ="
echo "============================================================"
echo ""
check_device
echo ""
read -rp "Pressione Enter para voltar ao menu..."
;;
2)
echo ""
echo "==================================="
echo "= Realizando a limpeza de logs... ="
echo "==================================="
echo ""
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
echo ""
echo "================================================"
echo "= Logs apagados, pode realizar nova pesquisa ="
echo "= para verificar se é um dispositivo MediaTek. ="
echo "================================================"
echo ""
read -rp "Pressione Enter para voltar ao menu..."
;;
3)
echo ""
echo "Saindo... Até breve!"
echo ""
exit
;;
*)
echo "Opção inválida. Por favor, escolha uma opção válida."
read -rp "Pressione Enter para continuar..."
;;
esac
done
}
# Inicia o menu
show_menu