Problème Script Shell
Résolu
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
-
Merci de vos réponses
-
ContributeurSalut,
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)