Bonjour,
je récupère des datas JSON (devices et sessions) via 2 commandes curl dans un script bash :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ curl https://serveur/api/devices | jq
[
	{
		"device_name": "AAAA",
		"host": "172.20.1.1"
	},
	{
		"device_name": "BBBB",
		"host": "172.20.1.2"
	},
	{
		"device_name": "CCCC",
		"host": "172.20.1.3"
	}
]
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
$ curl https://serveur/api/sessions| jq
[
	{
		"group_name": "GROUP_A",
		"session": {
			"accounts": [
				{
					"device": "AAAA",
					"service": "SSH"
				},
				{
					"device": "CCCC",
					"service": "RDP"
				}
			],
			"scenario_accounts": [],
			"account_mappings": [
				{
					"device": "BBBB",
					"service": "RDP"
				},
				{
					"device": "CCCC",
					"service": "RDP"
				}
			],
			"interactive_logins": [
				{
					"device": "BBBB",
					"service": "SSH"
				}
			]
		}
	},
	{
		"group_name": "GROUP_B",
		"session": {
			"accounts": [],
			"scenario_accounts": [],
			"account_mappings": [
				{
					"device": "AAAA",
					"service": "RDP"
				}
			],
			"interactive_logins": []
		}
	}
]
Mon but est de comptabiliser les sessions par device et d'obtenir ce tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
	"AAAA" : [
		"host": "172.20.1.1",
		"accounts": 		1,
		"scenario_accounts": 	0,
		"account_mappings": 	1,
		"interactive_logins": 	0
	],
	"BBBB" : [
		"host": "172.20.1.2",
		"accounts": 		1,
		"scenario_accounts": 	0,
		"account_mappings": 	0,
		"interactive_logins": 	1
	],
	"CCCC" : [
		"host": "172.20.1.3",
		"accounts": 		1,
		"scenario_accounts": 	0,
		"account_mappings": 	1,
		"interactive_logins": 	0
	]
]
Première étape : construction du tableau final

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
devices=$(curl https://serveur/api/devices | jq)
readarray -t aDevices <<< $devices
declare -A allDevices=()
for device in "${aDevices[@]}"; do
	declare -A aDevice
	name=$(jq '.device_name' <<< "$device")
	host=$(jq '.host' <<< "$device")
	aDevice[host]=$host
	aDevice[accounts]=0
	aDevice[scenario_accounts]=0
	aDevice[account_mappings]=0
	aDevice[interactive_logins]=0
	allDevices[$name]=aDevice
done
Est-ce que c'est une bonne méthode pour commencer ?
Je dis ça... parce que je ne vois pas comment faire la suite
parcourir le tableau de sessions est trop complexe pour moi... Y aurait-il une star du JSON+JQ+ARRAY ici ? un p'tit coup de pouce svp.
merci d'avance