Problème Script Shell
Résolu
Axaron
Messages postés
28
Statut
Membre
-
Axaron Messages postés 28 Statut Membre -
Axaron Messages postés 28 Statut Membre -
Bonjour,
Je dois faire un script qui indique si des noms d'utilisateurs passé en argument sont connectés ou non. J'ai fais ceci, mais il me retourne toujours non connecté :
Avez vous des solutions ?
Je dois faire un script qui indique si des noms d'utilisateurs passé en argument sont connectés ou non. J'ai fais ceci, mais il me retourne toujours non connecté :
#! /bin/bash
oui=true
co=false
#pour tester tous les arguments donnés
for user
do
# on test pour chaque connecte
for online in $(who|cut -f1 -d' ')
do
# si on une correspondance alors on leve un drapeau
if (($online=$user))
then
co=true
fi
done
# on affiche en fonction du drapeau le cas pour l'utilisateur $user
if (($co = $oui))
then
echo "$user : connecté"
else
echo "$user : non connecté"
fi
done
exit 0
Avez vous des solutions ?
3 réponses
-
Salut,
Une autre façon de voir les choses...
#! /bin/bash for i in $@ do w "${i}" | egrep -m 1 "^${i}" >/dev/null && echo "${i} Connecté" || echo "${i} Non connecté" done
$ ./foo.sh jp toto
jp Connecté
toto Non connecté
-
salut,
les double-parenthèses introduisent un contexte arithmétique.
ça, c'est plus simple :#!/bin/bash
args=(user1 qqchquicommenceparq user3)
logged=( $(who | awk '{u[$1]++}END{for (i in u)print i}') )
comm -12 <(printf '%s\n' "${logged[@]}" |sort) <(printf '%s\n' "${args[@]}" | sort) -