Besoins d'aide script ksh SVP!!!

Besoins d'aide script ksh SVP!!! - Shell/Batch - Programmation

Marsh Posté le 16-10-2008 à 10:51:38    

Bonjour,

 

j'aurai voulu savoir si quelqu'un pouvait m'aider svp pour un script ksh qui ne fonctionne plus alors qu'avant il marchait très bien.

 

Ce script sert en fait à supprimer un User sur un serveur (pegase je crois!!).

 

je pense que le problème vient de la commande "sed" dans le script mais malgrè de nombreuses tentatives et recherche sur internet je me retrouve bloqué depuis maintenant deux bonnes semaines.

 

Comme mon pseudo l'indique je suis un newbie en programmation et je commence vraiment a desespérer :sarcastic:

 


voici le script dont je vous parle:

 
Code :
  1. #!/bin/ksh
  2. #    EFFACE UN USER  
  3. # recherche du compte à détruire dans passwd
  4. #
  5. #
  6.  
  7. ##
  8. ##definitions VARIABLES
  9. ##
  10.  
  11. fichier_trace="/usr/local/pssi/trace.txt"
  12. fichier_passwd="/var/yp/src/passwd"
  13. fichier_autohome="/var/yp/src/auto.home"
  14. fichier_groupe="/var/yp/src/group"
  15. fichier_mailaliase="/var/yp/src/mail.aliases"
  16. fichier_maildata="/var/spool/mail"
  17. fichier_mailforward="/var/spool/FORWARDS"
  18. pathpssi="/usr/local/pssi"
  19. fichier_bdd="/var/spool/mail/usernewold.txt"
  20. fichier_delete="/usr/local/pssi/user_supprimer.txt"
  21. fichier_adrip="/usr/local/pssi/adresse_ip.txt"
  22. repertoire_final="/home/step/gdpi/divers/sauvegarde_pssi"
  23.  
  24. echo $* | read sUserId
  25.  
  26. echo "suppression du user $sUserId dans les NIS" >> $fichier_trace;
  27. ligne=`awk -F":" '$1 =="'$sUserId'" {print $0'} $fichier_passwd`
  28.  
  29.     if [[ $ligne != "" ]]
  30.      then
  31.             
  32.  
  33.            cp fichier_autohome /home/step/gdpi/divers/sauvegarde_pssi/
  34.  
  35.            echo "SUPPRESSION EN COURS ....."
  36.         echo "date : "`date` >>$fichier_delete;
  37.         echo "utilisateur : "$sUserId >>$fichier_delete;
  38.         echo $ligne >> $fichier_delete;
  39.  
  40.         numero_ligne=`awk -F":" '$1 =="'$sUserId'" {print NR'} $fichier_passwd`
  41.         sed  -e "$numero_ligne"d $fichier_passwd > /$pathpssi/new_passwd
  42.        mv /$pathpssi/new_passwd $fichier_passwd
  43.      
  44.         grep -i $sUserId $fichier_autohome >> $fichier_delete;
  45.         numero_ligne2=`awk '$1 =="'$sUserId'" {print NR'} $fichier_autohome`
  46.         chemin_user=`awk '$1 =="'$sUserId'" {print $0'} $fichier_autohome | awk -F: '{print $2'}`
  47.            sed  -e "$numero_ligne2"d $fichier_autohome > /$pathpssi/new_autohome
  48.        mv /$pathpssi/new_autohome $fichier_autohome
  49.  
  50.            grep -i $sUserId $fichier_groupe >> $fichier_delete;
  51.  
  52.            grep -i $sUserId $fichier_mailaliase >> $fichier_delete;
  53.         numero_ligne3=`awk '$2 =="'$sUserId'" {print NR'} $fichier_mailaliase`
  54.         sed  -e "$numero_ligne3"d $fichier_mailaliase > /$pathpssi/new_mailaliase
  55.        mv /$pathpssi/new_mailaliase $fichier_mailaliase
  56.  
  57.            grep -i $sUserId /var/yp/src/hosts  >> $fichier_adrip;
  58.  
  59.            ls -l $fichier_maildata/$sUserId  >> $fichier_delete;
  60.            
  61.            ls -l $fichier_mailforward/$sUserId  >> $fichier_delete;
  62.            
  63.            
  64.            echo " deplacement et suppression des repertoires et mail de l'utilisateur"
  65.            mkdir $repertoire_final/$sUserId            
  66.            mv $fichier_maildata/$sUserId $repertoire_final/$sUserId/mail-save-$sUserId
  67.            mv $fichier_mailforward/$sUserId $repertoire_final/$sUserId/forward-save-$sUserId
  68.            mv $chemin_user $repertoire_final/$sUserId/zone_unix
  69.            
  70.            echo " --------------------------------------------------------------"  >> $fichier_delete;
  71.     else
  72.     echo "LE USER sUserId N'existe pas dans le PASSWD"
  73.     fi


j'espere que quelqu'un pourra me sortir de cette impasse!!!

 

Elmoricq-edit : ajout des balises code.


Message édité par Elmoricq le 16-10-2008 à 17:39:08
Reply

Marsh Posté le 16-10-2008 à 10:51:38   

Reply

Marsh Posté le 16-10-2008 à 17:34:37    

Et si tu nous disais ce qui ne marche plus ?

Reply

Marsh Posté le 16-10-2008 à 20:54:47    

Ben en fait ce qui ne marche plus c'est le fait que le script ne supprime pas le compte de la personne  
 
et il efface meme un fichier important sur le serveur qu'il ne devrait pas effacer.
 
donc je ne peux meme plus executer le script de peur qu'il efface ce fameux fichier.
 
je ne sais pas si j'ai bien été clair dans mes explications?

Reply

Marsh Posté le 16-10-2008 à 22:50:46    

T'es en train de nous dire que ce script tourne avec les droits suffisants pour effacer des comptes, et des fichiers importants, sur un serveur. Donc, à priori, avec les droits root. Et si tu peux le modifier, c'est que t'es root aussi.
 
J'ai bon ?

Reply

Marsh Posté le 16-10-2008 à 22:58:03    

En plus vu comme le scipt est fait il écrase allègrement les droits des fichiers de password et autres.

Reply

Marsh Posté le 16-10-2008 à 23:06:17    

J'avais même pas fait gaffe. [:mullet]
En plus ça veut dire aussi qu'il n'y a pas de shadow passwd (enfin, si mes très vieux souvenirs de vagues notions d'administration système sont pas trop rouillées, ça n'a jamais été mon job :D).

Reply

Marsh Posté le 17-10-2008 à 08:54:00    

Elmoricq a écrit :

T'es en train de nous dire que ce script tourne avec les droits suffisants pour effacer des comptes, et des fichiers importants, sur un serveur. Donc, à priori, avec les droits root. Et si tu peux le modifier, c'est que t'es root aussi.
 
J'ai bon ?


 
 
Oui voila Elmoricq tu as tout bon il tourne avec les droits root et je me log en root quand je veux le modifier mais du coup je ne peux même plus le tester et je ne vois vraiment pas d'où l'erreur peut venir.
 
j'avais penser que cela pouvait venir de la commande sed ?

Reply

Marsh Posté le 17-10-2008 à 09:48:50    

Sauvegarde le fichier qui est effacé par erreur, puis lance le script avec ksh -x et met la sortie ici, là c'est un peu dur de deviner ce qui se passe.

Reply

Marsh Posté le 17-10-2008 à 11:39:03    

Oula, modifier directement le fichier passwd pour supprimer un utilisateur, faut pas avoir peur :D
 
Est-ce que tu peux nous dire sous quel unix tu tournes ? Car je sais que sur solaris, aix et linux, il existe des commandes qui permettent de supprimer un utilisateur sans toucher au fichier passwd.

Reply

Marsh Posté le 17-10-2008 à 12:32:00    

Pour répondre à ton message matafan je ne peux pas faire ce que tu m'as dit car mon tuteur m'a bien dit de ne SURTOUT pas le lancer car le dossier qu'il supprime c'est toute la base de donnée du service où je suis plus precisement il supprime /var/yp/src
et c'est là où il y a passwd et tout et tout.
 
c'est vrai que sans voir le resultat j'ai du mal a voir d'où vient l'erreur (surement pour ca que je bloque depuis 2 semaines :pfff: )
 
ben en fait dbbg je peux me connecter sur n'importe quel serveur car on a une salle rempli de serveur unix mais celui où je suis moi c'est "true 64"

Reply

Marsh Posté le 17-10-2008 à 12:32:00   

Reply

Marsh Posté le 17-10-2008 à 14:20:02    

Oula, true 64, je connais pas cet os unix :D Non plus sérieusement, est-ce que tu as fait un uname -s pour avoir le nom de ton OS ?  
 
Sinon, si tu peux faire pas ksh -x (ou set -x ça marche aussi), tu vas pas pouvoir faire grand chose. Mais théoriquement, si t'es sous linux ou solaris, c'est userdel nom du compte (enfin fais un man) et sous AIX rmuser pour effacer des utilisateurs. Par contre, j'ai pas les commandes pour les autres type d'unix.


Message édité par Dbbg le 17-10-2008 à 14:20:44
Reply

Marsh Posté le 17-10-2008 à 14:26:35    

C'est tru64 je suppose. L'unix de HP pour les machines Alpha.

Reply

Marsh Posté le 17-10-2008 à 16:09:19    

oui voila c'est ca tru64 et non pas true 64 desoléé  :(  
 
sinon quand je fais un uname ou uname -s il me met "OFS1"
 
Quand au rmuser dont tu m'as parlé dbbg il me met command not found meme quand je fais le man en revanche le userdel marche surement car il me dit que je n'ai pas les permissions necessaire (ce qui est normal car je ne me suis pas loguer en tant que root parce que si j'efface un user je vais me faire tuer)
Mais ca doit marcher
 
le probleme c'est que mon projet c'est d'automatiser la creation/supression/adaptation de compte donc 3 scripts ksh(createAccount.ksh deleteAccount.ksh updateAccount.ksh) et un script vbs sous windows qui permet d'entrer toutes les infos concernant le user. Ce script vbs appel un des 3 scripts ksh via un autre script que j'ai fait en php.
 
au jour d'aujourd'hui tout marche sauf ce deleteAccount.ksh c'est pour cela que je ne peux pas faire la methode du userdel mais qu'il faut que je trouve d'où provient l'erreur.
 
j'espere que j'ai pas trop extra-polé...

Reply

Marsh Posté le 17-10-2008 à 16:23:07    

http://bhami.com/rosetta.html
 
L'équivalent de rmuser sous tru64 semble être l'outil sysman.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed