Script bash: Permission non accordée !?

Script bash: Permission non accordée !? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-01-2009 à 13:55:44    

Bonjour à tous !

 

    J'essaye de développer un script (sans trop me prendre la tête) qui analyse les authentifications qui se trouvent dans radius.log. La ligne 14 me donne l'erreur ci-dessous et je ne comprends pas pourquoi !?

 
Code :
  1. line 14: /var/log/freeradius/radius.log: Permission non accordée
 


Voici le fonctionnement du script:
1) Extraction des adresses MAC en enlevant les doublons (même adresse MAC sur même port de switch)
2) Comptage des adresses MAC identifiées en double sur des ports/switches différents
3) Stockage des adresses qui ont eu 15 identifications sur des ports/switches différents

 

Merci d'avance !
RedVivi

 

EDIT:Dernière version du script, toujours le même problème

Code :
  1. #!/bin/sh
  2. cat /var/log/freeradius/radius.log | grep -v RADIUS | grep -v incorrect | cut -f2 -d[ | sort | uniq | cut -f1 -d/| uniq -d > .adrmac.tmp
  3. exec 3< .adrmac.tmp
  4. i=0
  5. while read lig 0<&3
  6.  do
  7.  ADRMAC[$i]=`echo $lig`
  8.  i=`expr $i "+" 1`
  9. done
  10. for n in `seq 0 $((${#ADRMAC[@]}-1))`;
  11.  do
  12.  NBCHGMT=`echo `cat /var/log/freeradius/radius.log | grep "${ADRMAC[$n]}" | cut -f2 -d]| uniq | wc -l``
  13.  echo $NBCHGMT
  14.  if [ $NBCHGMT >= 15 ]
  15.   then
  16.   echo ${ADRMAC[$n]} > macfraud.txt
  17.  fi
  18.  done
  19. rm .adrmac.tmp
  20. exit



Message édité par redvivi le 03-01-2009 à 16:37:17
Reply

Marsh Posté le 03-01-2009 à 13:55:44   

Reply

Marsh Posté le 03-01-2009 à 15:07:33    

tu as les droits de lecture sur /var/log/freeradius/radius.log ?

 

et sinon, cat xxx|grep yyy se remplace par grep yyy xxx


Message édité par Mjules le 03-01-2009 à 15:08:08

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 03-01-2009 à 15:11:00    

Vérifies d'abord qu'il existe avant de vouloir l'utiliser.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 03-01-2009 à 15:57:23    

Fork Bomb a écrit :

Vérifies d'abord qu'il existe avant de vouloir l'utiliser.


C'est d'abord un problème de droits d'accès (soit sur l'un des répertoires, soit sur le fichier final (voir répertoire + fichier)

[ augure@bacchus ~ ]
> cat toto
cat: toto: Aucun fichier ou répertoire de ce type
zsh: exit 1     cat toto
[ augure@bacchus ~ ]
> touch toto && chmod 000 toto
[ augure@bacchus ~ ]
> cat toto
cat: toto: Permission non accordée
zsh: exit 1     cat toto
[ augure@bacchus ~ ]
> mkdir titi
[ augure@bacchus ~ ]
> touch titi/toto
[ augure@bacchus ~ ]
> chmod 000 titi  
[ augure@bacchus ~ ]
> cat titi/toto
cat: titi/toto: Permission non accordée
zsh: exit 1     cat titi/toto
[ augure@bacchus ~ ]
> cat titi/tota
cat: titi/tota: Permission non accordée
zsh: exit 1     cat titi/tota
 


 


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-01-2009 à 16:27:49    

J'exécute le script en tant que root, et ce qui est bizarre c'est que la première commande passe (premier cat) mais le deuxième (ligne 14) non, pourtant quasiment la même commande. Le plus curieux, c'est que la fichier final (macfraud.txt) contient une adresse MAC, une seule alors qu'il devrait y en avoir plusieurs.


Message édité par redvivi le 03-01-2009 à 16:30:56
Reply

Marsh Posté le 03-01-2009 à 16:41:41    

NBCHGMT=`echo `cat /var/log/freeradius/radius.log | grep "${ADRMAC[$n]}" | cut -f2 -d]| uniq | wc -l``
 
pas besoin d'un echo ...
 
NBCHGMT=`cat /var/log/freeradius/radius.log | grep "${ADRMAC[$n]}" | cut -f2 -d]| uniq | wc -l`

Reply

Marsh Posté le 03-01-2009 à 16:44:47    

Non car si je fais cette modif j'ai une série d'erreur comme celà:
 

Code :
  1. ./scriptantifraude.sh: line 16: [: 324: unary operator expected
  2. 3
  3. ./scriptantifraude.sh: line 16: [: 3: unary operator expected
  4. 3
  5. ./scriptantifraude.sh: line 16: [: 3: unary operator expected
  6. 3
  7. ./scriptantifraude.sh: line 16: [: 3: unary operator expected
  8. 3
  9. ./scriptantifraude.sh: line 16: [: 3: unary operator expected
  10. 3
  11. ./scriptantifraude.sh: line 16: [: 3: unary operator expected
  12. 3
  13. ./scriptantifraude.sh: line 16: [: 3: unary operator expected
  14. 176
  15. ./scriptantifraude.sh: line 16: [: 176: unary operator expected
  16. 148
  17. ./scriptantifraude.sh: line 16: [: 148: unary operator expected
  18. 2
  19. ./scriptantifraude.sh: line 16: [: 2: unary operator expected
  20. 5
  21. ./scriptantifraude.sh: line 16: [: 5: unary operator expected
  22. 4

Reply

Marsh Posté le 03-01-2009 à 16:56:45    

Je rejoins fighting_falcon pour les ` . Si tu veux réellement les imbriquer pense à les échapper par un \ (echapper ceux qui sont imbriqué). Je pense que ton erreur de droit vient de là. Ton script essaye au final d'exécuter le fichier (d'où le problème de droit car il n'est pas en exécution).

 

Pour l'erreur suivante, cf. le man je dirais, >= n'est pas à utiliser. Remplace le par le bon opérateur cf. le man de bash :

Citation :


 arg1 OP arg2
              OP est l’un des opérateurs suivants -eq, -ne, -lt, -le, -gt ou -ge. Ces opérateurs arithmétiques binaires  ren‐
              voient  vrai  si arg1 est respectivement égal, différent, inférieur, inférieur ou égal, supérieur, supérieur ou
              égal à arg2. arg1 et arg2 peuvent être des entiers positifs ou négatifs.


Utilise  la forme :

 
Code :
  1. if [ $truc -ge 15 ];  then
  2.     echo yess
  3. fi


Message édité par o'gure le 03-01-2009 à 17:04:00

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-01-2009 à 17:14:41    

Le problème venait de là ! Merci les gars vous êtes les meilleurs ;-)

Reply

Marsh Posté le 04-01-2009 à 14:03:00    

fighting_falcon a écrit :

NBCHGMT=`echo `cat /var/log/freeradius/radius.log | grep "${ADRMAC[$n]}" | cut -f2 -d]| uniq | wc -l``
 
pas besoin d'un echo ...
 
NBCHGMT=`cat /var/log/freeradius/radius.log | grep "${ADRMAC[$n]}" | cut -f2 -d]| uniq | wc -l`


Pas besoin de cat non plus...

Citation :

NBCHGMT=$(grep "${ADRMAC[$n]}" < /var/log/freeradius/radius.log | cut -f2 -d]| uniq | wc -l)


Et les "`" sont obsolètes.


---------------
La réponse est 42
Reply

Marsh Posté le 04-01-2009 à 14:03:00   

Reply

Marsh Posté le 04-01-2009 à 14:38:49    

bah dans ce cas, pas besoin de redirection non plus ...
 

Citation :


NBCHGMT=$(grep "${ADRMAC[$n]}" /var/log/freeradius/radius.log | cut -f2 -d]| uniq | wc -l)

Reply

Sujets relatifs:

Leave a Replay

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