forked from chaindigital/celestia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnewscan.sh
74 lines (65 loc) · 2.33 KB
/
newscan.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
#!/bin/bash
# Проверка, установлен ли jq и curl
if ! command -v jq &> /dev/null || ! command -v curl &> /dev/null; then
echo "jq или curl не установлены. Установите их и попробуйте снова."
exit 1
fi
# Список IP-адресов узлов для опроса
NODE_IPS=(
"78.46.65.144"
"148.113.8.171"
"94.130.35.35"
"142.132.202.87"
"136.243.176.86"
"141.94.138.48"
"195.14.6.178"
"164.152.163.148"
"65.108.12.253"
"177.54.156.69"
"65.21.136.101"
"205.209.125.70"
"65.21.233.188"
"211.219.19.78"
"93.190.143.6"
"141.94.135.203"
"217.160.102.31"
"13.212.141.100"
"162.250.127.226"
"31.7.196.17"
"141.95.35.218"
"72.46.84.33"
"185.144.99.223"
"88.218.224.72"
"91.121.55.152"
)
# Список портов для опроса
RPC_PORT="26657"
# Получаем список валидаторов
validators=$(celestia-appd q staking validators --output json)
# Проверка, удалось ли получить список валидаторов
if [[ -z "$validators" ]]; then
echo "Не удалось получить список валидаторов"
exit 1
fi
# Инициализация файла для пиров
> peers.txt
# Получаем информацию о пирах с нескольких узлов и портов
for NODE_IP in "${NODE_IPS[@]}"; do
for PORT in "${PORTS[@]}"; do
response=$(curl -s http://$NODE_IP:$PORT/net_info)
if echo "$response" | jq empty &> /dev/null; then
echo "$response" | jq -r '.result.peers[] | .node_info.moniker + " " + .remote_ip' >> peers.txt
fi
done
done
# Парсинг JSON и сопоставление валидаторов и IP-адресов
echo "$validators" | jq -r '.validators[] | .description.moniker + " " + .operator_address' > validators.txt
echo "Список валидаторов и их IP-адресов:"
while read -r validator; do
moniker=$(echo "$validator" | awk '{print $1}')
address=$(echo "$validator" | awk '{print $2}')
ip_list=$(grep "$moniker" peers.txt | awk '{print $2}' | sort | uniq)
if [[ -n "$ip_list" ]]; then
echo "Валидатор: $moniker, Адрес: $address, IP: $ip_list"
fi
done < validators.txt