[gull] Bash get stat simulteneously on many hosts
felix
felix at f-hauri.ch
Sat Jun 1 09:57:05 CEST 2024
Salut Daniel,
Le Sat, Jun 01, 2024 at 12:14:22AM +0200, Daniel Cordey via gull a écrit :
> Oui, intéressant, mais je suis plutôt à utiliser les APIs des différentes
> solutions de monitoring é distance. En général tu installes un "agent"
> localement et tu l'interroges et peux récupérer des données facilement
Oui, entre munin, ocsinventory et consor!
Cet exemple et clairement destiné à faire un peu tout ce qui sort de
l'ordinaire. Il répond à des besoins sporadiques et souvent ponctuels.
(Il s'agit très souvent d'analyse de situation, servent de base pour
de futur chantiers qui rendront tout cela inutile une fois terminé.)
De nombreuse installation dans des petites structures ont été construite
au fil des années et où tous les acteurs (serveurs, routeurs, etc...) ne
sont pas forcement équipées d'outils évolués...
Le script ``bash2sort'', est créé autour de l'idée que seul ssh et shell,
sont disponibles avec certitude sur tous les targets. Il nécessite
cependant de n'avoir qu'une seule ligne d'output par target pour éviter
les mix de concurrence, mais autant je trouve facile et sympa de
for target in alice at foo.net bob at bar.org charlie at baz.free; do
ssh $target sh /dev/stdin $target <<<'
printf "%-16s %-12s %s\n" "$1" "$(hostname)" "$(uptime)"
' &
done | sort
que je ne vois pas ça souvent!
Alors que ``bash4sh'' a pour vocation d'être plus robuste: En utilisant
un FD différent par target, on peut assurer qu'aucun mélange ne poura
se faire. Après au lieu d'un `exec {oneFD}<> <(:)` qui genère un fifo
qui pourrait devenir bloquant si beaucoup de données sont envoyées et
que le script principal ne les lit pas... Pour éviter cela, deux possibilité
en fonction du volume de données attendu:
exec {unFd}> /path/to/file
ssh .... >&$unFd &
exec {unFd}< /path/to/file
fds[$!]=$unFd
voire:
exec {unFd}> >(zstd >/path/to/file)
ssh .... >&$unFd &
exec {unFd}< <(zstdcat /path/to/file)
fds[$!]=$unFd
En pensant à utiliser /dev/shm ou plutôt /run/user/$UID quand c'est possible.
Il m'arrive d'interroger des routeurs wrt, en même temps que des NAS LaCie ou
Synology, des serveurs virtualisés avec une application propriétaire
et l'impossibilité (contractuelle) d'y installer quoi que ce soit...
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list