HELP erreur script shell

HELP erreur script shell - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-12-2002 à 22:15:47    

J'ai des codes erreur sur un script et je ne parviens pas à déceller la cause.
 
#! /bin/sh  
 
 
TAIL="tail"                #commande tail du système  
TMP="/usr/local/etc/tmp"   #répertoire temporaire utilisé pour stocker les fichiers temporaires  
GREP="grep"                #commande grep du système  
MAIL="mail"                #commande mail du système  
KEYWORDS="/etc/logkeywords"          #fichier contenant les mot clés à rechercher avec grep  
MESSAGES="/var/log/messages"         #chemin du fichier messages  
HACKMESSAGES="/var/log/hackmessages" #chemin du fichier contenant les rapports  
MESSAGESSIZE="/etc/messagessize"     #dernière taille du fichier messages  
HOSTNAME="sneak"                #nom du hôte  
DATE="date +%d/%m/%y_%H:%M:%S"     #date et heure  
RESULT=0  
OLDSIZE=0  
NEWSIZE="filesize $MESSAGES"  
DIFFERENCE=0  
SYSADMIN="root"            #nom de l'administrateur système  
 
 
umask 077                #tout fichier créé portera l'accès rwx------  
 
 
#Supprime les dernier rapport $TMP/check* et $TMP/report*  
rm -f $TMP/check* $TMP/report*  
 
 
#Si le fichier messagesize existes récupère son contenu  
if [ -f $MESSAGESSIZE ]; then  
   OLDSIZE="cat $MESSAGESSIZE"  
fi  
 
 
#Calcule la différence de taille entre l'ancienne taille du fichier messages et la nouvelle  
#le résultat $DIFFERENCE sera utilisé pour $TAIL -c  
let DIFFERENCE=$NEWSIZE-$OLDSIZE  
 
 
#Si la différence=0 ne fait rien  
if [ $DIFFERENCE -ne 0 ]; then  
   $TAIL -c $DIFFERENCE $MESSAGES > $TMP/check.$$  
 
 
#MAJ de $MESSAGESSIZE  
   echo "$NEWSIZE" > $MESSAGESSIZE  
   if[ $GREP -f $KEYWORDS $TMP/check.$$ > $TMP/checkouput.$$ ]; then
      echo "===============================================================================" >> $TMP/report.$$  
      echo "$DATE                            Alertes attaques" >> $TMP/report.$$  
      echo "===============================================================================" >> $TMP/report.$$  
      cat $TMP/checkoutput.$$ >> $TMP/report.$$  
      RESULT=1  
      cat $TMP/report.$$ >> $HACKMESSAGES  
   fi  
fi  
 
 
#Si il y a eu des contenus suspects dans le fichier messages, le signal à $SYSADMIN@$HOSTNAME  
if [ "$RESULT" -eq 1 ]; then  
   cat $TMP/report.$$ | $MAIL -s "$HOSTNAME $DATE Alertes attaques" $SYSADMIN  
fi  
 
 
rm -f $TMP/check* $TMP/report*  
 
-----------------------------------
 
# ./logcheck
./logcheck: line 21: umask: 077               : octal number out of range
./logcheck: line 36: let: /var/log/messages        -0: syntax error: operand expected (error token is "/var/log/messages        -0" )
./logcheck: line 46: syntax error near unexpected token `then'
./logcheck: line 46: `   if[ $GREP -f $KEYWORDS $TMP/check.$$ > $TMP/checkouput.$$ ]; then'


Message édité par sneakz le 20-12-2002 à 22:18:43
Reply

Marsh Posté le 20-12-2002 à 22:15:47   

Reply

Marsh Posté le 21-12-2002 à 13:31:17    

- pour le umask je vois pas pourquoi c'est refusé.
- j'ai pas la commande filesize donc je peux pas testé ton 'let' et d'apres l'erreur c'est NEWSIZE qui pose probleme.
- pour la derniere erreur (ligne 46) tu devrais mettre un espace entre le if et [

Reply

Marsh Posté le 21-12-2002 à 17:18:12    

J'ai corrigé les erreurs mais il m'en reste une sur la ligne :
 
let DIFFERENCE=$NEWSIZE-$OLDSIZE  
 
./logcheck: line 36: let: $MESSAGES-cat: syntax error: operand expected (error token si "$MESSAGES-cat" )

Reply

Marsh Posté le 21-12-2002 à 19:22:55    

mouais ...  
en lisant ton script je comprend  
 
OLDSIZE="cat $MESSAGESSIZE"  
et MESSAGESSIZE="/etc/messagessize"
 
donc OLDSIZE=cat /etc/messassize"  
 
donc dans ton let DIFFERENCE=$NEWSIZE-$OLDSIZE  il y a un probleme et encore j'ai meme pas regardé le reste .  
 
il est plein de bug ton script .  
 
en prenant les problemes un par un je suis sur que tu peux y arriver mais là j'ai d'autres chats à fouetter ;)

Reply

Marsh Posté le 21-12-2002 à 19:36:17    

Le seul pb restant est :
let : DIFFERENCE=-: syntax error: operand expected (error token is "-" )
 
OLDSIZE est nul et NEWSIZE est nul également => DIFFERENCE=- => erreur
 
 
ps (superx): pour dire qu'il y a des erreurs (merci, j'avais remarqué et c pour çà que g écris ce message) et dire que tu as d'autres chats à fouetter; c'est pas la peine alors de poster !!! tu restes devant ton clavier ou tu fais autre chose ! mdr


Message édité par sneakz le 21-12-2002 à 19:36:54
Reply

Marsh Posté le 21-12-2002 à 23:21:20    


jviens de jetter un oeil rapide à ton script, je sais pas si c mes yeux, ou alors ya des trucs nouveaux que je connais pas mais t'as un problème avec les quotes,
 
par exemple :
 
VAR = "cat /etc/nodename"
echo $VAR donne cat
et  
VAR = `cat /etc/nodename`
echo $VAR donne hostname
 
"truc bidule" ==> chaine de caractères
`truc bidule` ==> commande à exécuter
 
Menfin c ptetre moi ki ai loupé un truc  :heink:


---------------
[:loozer]
Reply

Marsh Posté le 21-12-2002 à 23:54:44    

et j'avais meme pas fait gaffe aux quotes :D  
 
ce script était bancal dès le début donc ... ;)

Reply

Marsh Posté le 22-12-2002 à 00:26:39    

#Si le fichier messagesize existes récupère son contenu  
if [ -f $MESSAGESSIZE ]; then  
  OLDSIZE="cat $MESSAGESSIZE"  
fi  
 
 
#Calcule la différence de taille entre l'ancienne taille du fichier messages et la nouvelle  
#le résultat $DIFFERENCE sera utilisé pour $TAIL -c  
let DIFFERENCE=$NEWSIZE-$OLDSIZE  

 
 
incoherence total tu fais en klr la dif entre un nombre 120 avec du texte
 
si tu crois qu il va te donner reponse tu te met le dois dans l oeil
 

Reply

Marsh Posté le 22-12-2002 à 01:01:17    

Je ne suis pas l'auteur de ce script. Toutefois il n'est pas si incohérent.
 
Il ne faut pas lire :
OLDSIZE="cat $MESSAGESSIZE" mais
OLDSIZE=`cat $MESSAGESSIZE`
 
"incoherence total tu fais en klr la dif entre un nombre 120 avec du texte  
 
si tu crois qu il va te donner reponse tu te met le dois dans l oeil
"
 
let DIFFERENCE=$NEWSIZE-$OLDSIZE --> c alors la différence entre 2 valeurs numériques  
 
Je suis newbie en matière de scripts ms je m'aperçois qu'il y a plus newbie que moi !
 
Voici une réponse qui ce veut plus constructive que les remarques que je viens de lire :
 
On Sat, 21 Dec 2002 at 07:55 GMT, zorgh wrote:
> This is the new source code but the error message is similar (an idea
> ?)
>  
> #! /bin/sh
>  
>  
> TAIL="tail"   #commande tail du système
> TMP="/usr/local/etc/tmp"  #répertoire temporaire utilisé pour stocker les fichiers temporaires
> GREP="grep"  #commande grep du système
> MAIL="mail"  #commande mail du système
> KEYWORDS="/etc/logkeywords"   #fichier contenant les mot clés à
> rechercher avec grep
> MESSAGES="/var/log/messages"   #chemin du fichier messages
> HACKMESSAGES="/var/log/hackmessages" #chemin du fichier contenant les rapports
> MESSAGESSIZE="/etc/messagessize"  #dernière taille du fichier messages
> HOSTNAME="zorgh"   #nom du hôte
> DATE='date +%d/%m/%y_%H:%M:%S'  #date et heure
 
DATE=`date +%d/%m/%y_%H:%M:%S`
 
   You are repeatedly using the wrong character (not even the same
   one each time) to enclose command substitution. There may be other
   problems; I haven't looked closely.
 
> RESULT=0  
> OLDSIZE=0
> NEWSIZE='filesize $MESSAGES'
 
NEWSIZE=`filesize $MESSAGES`
 
> DIFFERENCE=0
> SYSADMIN="root"    #nom de l'administrateur système
>  
> umask 077
>  
> #Supprime les dernier rapport $TMP/check* et $TMP/report*
> rm -f $TMP/check* $TMP/report*  
>  
> #Si le fichier messagesize existes récupère son contenu  
> if [ -f $MESSAGESSIZE ]; then
>    OLDSIZE="cat $MESSAGESSIZE"
 
OLDSIZE=`cat $MESSAGESSIZE`
 
  But better would be:
 
read OLDSIZE < $MESSAGESSIZE
 
(extrait du forum google)
 
 
 

Reply

Marsh Posté le 22-12-2002 à 01:04:55    

sneakz a écrit :

Je ne suis pas l'auteur de ce script. Toutefois il n'est pas si incohérent.
 
Il ne faut pas lire :
OLDSIZE="cat $MESSAGESSIZE" mais
OLDSIZE=`cat $MESSAGESSIZE`
 
"incoherence total tu fais en klr la dif entre un nombre 120 avec du texte  
 
si tu crois qu il va te donner reponse tu te met le dois dans l oeil
"
 
let DIFFERENCE=$NEWSIZE-$OLDSIZE --> c alors la différence entre 2 valeurs numériques  
 
Je suis newbie en matière de scripts ms je m'aperçois qu'il y a plus newbie que moi !
 
Voici une réponse qui ce veut plus constructive que les remarques que je viens de lire :
 
On Sat, 21 Dec 2002 at 07:55 GMT, zorgh wrote:
> This is the new source code but the error message is similar (an idea
> ?)
>  
> #! /bin/sh
>  
>  
> TAIL="tail"   #commande tail du système
> TMP="/usr/local/etc/tmp"  #répertoire temporaire utilisé pour stocker les fichiers temporaires
> GREP="grep"  #commande grep du système
> MAIL="mail"  #commande mail du système
> KEYWORDS="/etc/logkeywords"   #fichier contenant les mot clés à
> rechercher avec grep
> MESSAGES="/var/log/messages"   #chemin du fichier messages
> HACKMESSAGES="/var/log/hackmessages" #chemin du fichier contenant les rapports
> MESSAGESSIZE="/etc/messagessize"  #dernière taille du fichier messages
> HOSTNAME="zorgh"   #nom du hôte
> DATE='date +%d/%m/%y_%H:%M:%S'  #date et heure
 
DATE=`date +%d/%m/%y_%H:%M:%S`
 
   You are repeatedly using the wrong character (not even the same
   one each time) to enclose command substitution. There may be other
   problems; I haven't looked closely.
 
> RESULT=0  
> OLDSIZE=0
> NEWSIZE='filesize $MESSAGES'
 
NEWSIZE=`filesize $MESSAGES`
 
> DIFFERENCE=0
> SYSADMIN="root"    #nom de l'administrateur système
>  
> umask 077
>  
> #Supprime les dernier rapport $TMP/check* et $TMP/report*
> rm -f $TMP/check* $TMP/report*  
>  
> #Si le fichier messagesize existes récupère son contenu  
> if [ -f $MESSAGESSIZE ]; then
>    OLDSIZE="cat $MESSAGESSIZE"
 
OLDSIZE=`cat $MESSAGESSIZE`
 
  But better would be:
 
read OLDSIZE < $MESSAGESSIZE
 
(extrait du forum google)
 
 
 
 


 
fais un
taille=`cat unfichiertexte`
ensuite echo $taille
 
et on va voir si il va te retourner une taille  :whistle:

Reply

Marsh Posté le 22-12-2002 à 01:04:55   

Reply

Marsh Posté le 22-12-2002 à 01:07:44    

spo un cat ki faut faire c un filesize sur le fichier messagebidule truc
 

Reply

Marsh Posté le 22-12-2002 à 20:10:26    

sneakz a écrit :


Voici une réponse qui ce veut plus constructive que les remarques que je viens de lire


 
Bein c exactement ce que je t'ai expliqué, jvois pas ce qu'il ya de plus constructif  :pfff:


---------------
[:loozer]
Reply

Marsh Posté le 22-12-2002 à 20:19:44    

loozer a écrit :


 
Bein c exactement ce que je t'ai expliqué, jvois pas ce qu'il ya de plus constructif  :pfff:  


 
 
non mais il comprenait rien à son script car ct po le sien ;)


Message édité par asphro le 22-12-2002 à 20:19:59
Reply

Sujets relatifs:

Leave a Replay

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