#1 Le 20/02/2013, à 18:16
- Martoni35220
[Script] information pour recherche d'un utilisateur précis
Bonjour,
Je souhaite faire un script sur des serveurs UNIX (red hat, AIX et Solaris) en ksh.
Ce script sera déployer avec un outil de télédistribution (TCM).
Ce script doit :
1) récupérer sur l'ensemble des serveurs unix s'il y a un compte précis et s'il expire.
2) S'il expire, envoyé l'information dans un fichier txt sur un serveur précis.
3) S'il n'expire pas, envoyé l'information dans un autre fichier txt sur le même serveur précis.
Merci d'avance de vos propositions car je ne connais rien en scripting et mes recherches ne me donne
pas d'information nécessaire pour le réaliser.
Cordialement,
Martoni
Dernière modification par Martoni35220 (Le 20/02/2013, à 18:25)
Hors ligne
#2 Le 20/02/2013, à 19:13
- nesthib
Re : [Script] information pour recherche d'un utilisateur précis
1- utilise la commande chage
2/3- utilise un protocole de transfert de données/commandes (ex. ssh)
Essaie d'écrire une ébauche ou du moins de montrer ce que tu as essayé.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 21/02/2013, à 16:44
- Martoni35220
Re : [Script] information pour recherche d'un utilisateur précis
Bonjour,
Merci d'avance pour cette investigation.
Cette première ébauche ne doit pas fonctionner je pense car j'ai pas bien saisi toutes les logiques dans le script mais bon.....
Voici pour un redhat :
#!/bin/ksh
#Definitions des variables
reponse=usertest:x:3501:3500:User specifique :/home/usertest:/bin/ksh
reponse2=never
echo ###################### Recherche user usertest #####################################
echo more /etc/passwd | grep -i usertest | grep -v grep
read reponse
echo ###################### Résultat de la recherche#####################################
if [[ $reponse ]]; then
echo "usertest est présent sur le serveur"
else
echo "usertest n'est pas présent"
fi
echo ##################### Si l'utilisateur usertest est présent ##########################
case $reponse in
"usertest est présent sur le serveur") chage -l usertest;;
"usertest n'est pas présent") print Fin du script;;
esac
echo ###################### Recherche si expiration du compte ##########################
echo chage -l usertest
read reponse2
if [[ $reponse2 ]]; then
echo "> /tmp/nonexpire.txt"
else
echo "> /tmp/expire.txt"
exit
Merci d'avance,
Martoni
Hors ligne
#4 Le 23/02/2013, à 20:05
- nesthib
Re : [Script] information pour recherche d'un utilisateur précis
Alors,
1- utilise les balises [ code ] (le bouton )
2- je ne travaille pas avec ksh mais voici quelques commentaires :
echo more /etc/passwd | grep -i usertest | grep -v grep
n'a aucun sens, si tu veux chercher « usertest » dans /etc/password tu peux faire :
SEARCHUSER="usertest"
grep "^${SEARCHUSER}:" /etc/passwd
pas besoin de « -i », les noms d'utilisateurs doivent être en minuscules, le « '^…:' » est fait pour rechercher spécifiquement dans la première colonne et avec une correspondance sur le nom entier (sinon « user » serait valide pour « userx » ou « myuser »).
Tu peux directement utiliser une commande dans ton test :
if grep -q "^${SEARCHUSER}:" /etc/passwd
then
echo "${SEARCHUSER} est valide"
else
echo "${SEARCHUSER} n'est pas valide"
fi
Je ne sais pas si ce $response est censé correspondre à quelque chose, mais tu peux directement intégrer tes actions dans le test précédent :
if grep -q "^${SEARCHUSER}:" /etc/passwd
then
echo "${SEARCHUSER} est valide"
EXPIRE="$(LANG=C chage -l ${SEARCHUSER} | grep 'Account expires')"
echo "${EXPIRE}"
! [[ ${EXPIRE#*: } == never ]] && echo "${SEARCHUSER}" >>fichier_de_log
else
echo "${SEARCHUSER} n'est pas valide"
fi
Même si je ne connais pas ksh et sans vouloir être méchant, je pense que pas une ligne de ton script n'est correcte, autant dans la syntaxe shell que dans l'utilisation des commandes. Si tu dois administrer un serveur ou si tu dois faire d'autres scripts je t'encourage très fortement à lire des introductions à la ligne de commande et aux scripts shells. Il faut absolument que tu lises des exemples fonctionnels et que tu fasses des exercices si tu veux t'en sortir. Tu verras ça n'est pas si compliqué et ça vient assez vite
Je n'ai pas tout détaillé dans ma proposition ci-dessus, essaie de le comprendre par toi-même (ne le lance pas en production comme ça).
3- il dit qu'il voit pas l'rapport (:p)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 25/02/2013, à 13:46
- Martoni35220
Re : [Script] information pour recherche d'un utilisateur précis
Bonjour,
Tout d'abord, merci pour les commentaires car effectivement je me lance sans bien comprendre le fonctionnement et ça se voit!!! ^^
Je vais analyser tes propositions pour comprendre, tu es de bon conseil.
De plus, effectivement, je suis en prod, je dois me lancé avec des pincettes.....
Merci encore et pour la partie 3- , le commentaire est admirablement placé!!!!!! J'approuve!!!!
Je te tiens au courant de mes avancées.
Cordialement,
Martoni
Hors ligne
#6 Le 05/03/2013, à 17:53
- Martoni35220
Re : [Script] information pour recherche d'un utilisateur précis
Bonjour à tout ceux qui liront ceci et à nesthib qui m'aide depuis le début,
Voici mon ébauche :
#! /bin/ksh
# ============================================================================
function Search_usertest
{
case "`uname`" in
#---------
Linux)
#---------
SEARCHUSER="usertest"
grep "^${SEARCHUSER}:" /etc/passwd
if grep -q "^${SEARCHUSER}:" /etc/passwd
then
echo "${SEARCHUSER} est valide"
EXPIRE="$(LANG=C chage -l ${SEARCHUSER} | grep 'Account expires')"
echo "${EXPIRE}"
! [[ ${EXPIRE#*: } == never ]] && echo "${SEARCHUSER}" >> /tmp/no_expire.txt
else
echo "${SEARCHUSER} expire" > /tmp/expire.txt
fi
;;
#---------
SunOS)
#---------
SEARCHUSER="usertest"
grep "^${SEARCHUSER}:" /etc/passwd
if grep -q "^${SEARCHUSER}:" /etc/passwd
then
echo "${SEARCHUSER} est valide"
EXPIRE="$(LANG=C chage -l ${SEARCHUSER} | grep 'Account expires')"
echo "${EXPIRE}"
! [[ ${EXPIRE#*: } == never ]] && echo "${SEARCHUSER}" >> /tmp/no_expire.txt
else
echo "${SEARCHUSER} expire" > /tmp/expire.txt
fi
;;
#-------
AIX)
#-------
SEARCHUSER="usertest"
grep "^${SEARCHUSER}:" /etc/passwd
if grep -q "^${SEARCHUSER}:" /etc/passwd
then
echo "${SEARCHUSER} est valide"
EXPIRE="$(LANG=C lsuser -f ${SEARCHUSER} | fgrep expires ) "
echo "${EXPIRE}"
! [[ ${EXPIRE#*: } == 0 ]] && echo "${SEARCHUSER}" >> /tmp/no_expire.txt
else
echo "${SEARCHUSER} expire" > /tmp/expire.txt
fi
;;
#---------
*)
#---------
echo "Type d'OS non supporté : `uname`"
;;
esac
}
exit 0
Merci d'avance à tous,
Cordialement,
Martoni
edit modo : les balises code !
Dernière modification par nesthib (Le 06/03/2013, à 03:06)
Hors ligne
#7 Le 06/03/2013, à 03:06
- nesthib
Re : [Script] information pour recherche d'un utilisateur précis
Et ça fonctionne ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 06/03/2013, à 11:19
- Martoni35220
Re : [Script] information pour recherche d'un utilisateur précis
Bonjour,
Je n'ai pas encore pris le temps de le tester à la maison et nous n'avons même pas de bac à sable en prod....
Affaire à suivre.....
Martoni
Hors ligne
#9 Le 06/03/2013, à 12:43
- Martoni35220
Re : [Script] information pour recherche d'un utilisateur précis
Bonjour,
Comment met-on les les balises code pour une lecture plus facile d'un script déposé dans un message s'il-vous-plaît?
J'ai trouvé des informations sur les scripts html mais pour ce type de script, quel est l'ajout à effectuer, merci d'avance,
Cordialement,
Martoni
Hors ligne
#10 Le 06/03/2013, à 16:10
- nesthib
Re : [Script] information pour recherche d'un utilisateur précis
Pour les balises code tu as un bouton , je te l'ai déjà précisé dans mon message #4
Ça n'est dépendant d'aucun langage.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne