tempo.txt
de lire les détails d'user et de server du file tempo.txt
et ensuite vérifier l'utilisation d'espace disque du système de files sur ce count unix en utilisant un autre script server_disk_space.sh
je ne suis pas en mesure de comprendre pourquoi pendant que la boucle fonctionne seulement pour la première ligne et pour la boucle fonctionne bien. S'il vous plaît aidez-moi à comprendre cela.
Utilisation de la boucle while
#!/usr/bin/ksh while read line do r1=`echo $line | cut -d"#" -f1`; r2=`echo $line | cut -d"#" -f2`; apx_server_disk_space.sh $r2 $r1 done<tempo.txt
Sortie
8
Utilisation de la boucle
#!/usr/bin/ksh for line in $(cat tempo.txt) do r1=`echo $line | cut -d"#" -f1`; r2=`echo $line | cut -d"#" -f2`; apx_server_disk_space.sh $r2 $r1 done
Sortie
8 23 54 89 12
Contenu de server_disk_space.sh
#!/usr/bin/ksh user=$1 server=$2 count=`ssh ${user}@${server} "df -h ."` echo ${count} | awk '{print $12}' | tr -d %
Le script ci-dessus affiche la valeur du Use percentage
de l' Use percentage
du disque sur n'importe quel server.
Contenu de tempo.txt
abclin542#abcwrk47# abclin540#abcwrk1# abclin541#abcwrk2# abclin543#abcwrk3# abclin544#abcwrk33#
À less d'append l'option -n
à ssh
, ssh
lira à partir de son input standard, qui dans le cas de la boucle while est le file tempo.txt.
Vous pouvez également utiliser un descripteur de file différent pour lire le file tempo.txt:
#! /usr/bin/ksh - while IFS='#' read <&3 -r r1 r2 rest; do apx_server_disk_space.sh "$r2" "$r1" done 3< tempo.txt
Si ces servers sont des servers GNU / Linux, votre script ssh pourrait être:
#! /bin/sh - ssh -n "$1@$2" 'stat -fc "scale=2;100*(1-%a/%b)" .' | bc
Ce qui serait probablement plus robuste et à l'épreuve du futur.