CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[BASH] Sorties standard

MrGreez94
MrGreez94
Niveau 10
09 juin 2016 à 11:10:45

Bonjour :D

je suis actuellement en train de faire un script en bash qui va exécuter une commande sur un ensemble de X serveurs et qui va écrire le résultat de cette commande dans un fichier. Chaque serveur ayant un fichier attitré, le script est exécuté de manière périodique (toutes les heures) et rajoute une ligne datée dans chaque fichier.

La commande en question exécutée sur chaque serveur

df -g | grep ${FS}'$' | awk '{print $4}'

FS étant un élement d'une liste contenant le nom des dossiers à balayer.

Le truc c'est que j'aimerais bien voir la progression du process qui s'affiche dans la console mais je m'emmêle un peu avec les redirections de sortie standard.

Autant j'arrive à voir une progression de la boucle qui parcoure la liste des serveurs, autant je n'arrive pas à avoir une progression du balayage des dossiers pour un serveur donné. :(

Mon script a la structure suivante

for SERVER in ${SERVER_LIST}
do
	filename="${SERVER}_STATS.csv"
	
	if [ ! -f $filename ]
	then
		echo "date;"${FS_LIST} | tr " " ";" > $filename
		printf "${filename} created\n"
	fi
	
	LINE=$(process_servers_stats $SERVER)
	echo $LINE > $filename
	
	printf "Updating ${filename}\n"
done

La fonction process_server_stats:

process_servers_stats()
{
	SERVER=$1
	LINE="${timestamp};"
	for FS in ${FS_LIST}
	do
		pUSED=$(rsh $SERVER df -g | grep ${FS}'$' | awk '{print $4}')
		printf $pUSED
		LINE="$LINE$pUSED;"
	done
	echo $LINE
}

(je suis pas du tout à l'aise en bash donc je suis sûr qu'il y a plein de remarques à faire :rouge:)

Tout marche comme je l'entends à l'exception du printf dans la fonction process_server_stats()

printf $pUSED

Qui écrit dans le fichier en train d'être traité et non dans la console comme je le souhaiterais. :-(

Je suppose qu'il y a quelque chose qui m'échappe au sujet des redirections :(

MrGreez94
MrGreez94
Niveau 10
09 juin 2016 à 14:02:43

Le 09 juin 2016 à 12:22:00 CaptainObvi0us a écrit :
Salut, j'ai pas trop cherché à comprendre (:hap:) mais pour le printf en bash le mieux c'est de faire comme ça :

printf "%s\n" "$pUSED"

C'est plus propre :hap:

Merci, je prends toujours :hap:

MrGreez94
MrGreez94
Niveau 10
10 juin 2016 à 13:15:10

Voilà c'est ça mon problème, je vais essayer ta solution :ok:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment