HELP erreur script shell - Codes et scripts - Linux et OS Alternatifs
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 [ 
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" )
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 
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
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   
 
Marsh Posté le 21-12-2002 à 23:54:44
et j'avais meme pas fait gaffe aux quotes  
  
 
ce script était bancal dès le début donc ...  
 
Marsh Posté le 22-12-2002 à 00:26:39
| #Si le fichier messagesize existes récupère son contenu    | 
  
 
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 
 
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) 
 
 
 
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.  | 
 
 
fais un 
taille=`cat unfichiertexte` 
ensuite echo $taille 
 
et on va voir si il va te retourner une taille   
 
Marsh Posté le 22-12-2002 à 01:07:44
spo un cat ki faut faire c un filesize sur le fichier messagebidule truc 
 
Marsh Posté le 22-12-2002 à 20:10:26
| sneakz a écrit :   | 
 
 
Bein c exactement ce que je t'ai expliqué, jvois pas ce qu'il ya de plus constructif   
 
Marsh Posté le 22-12-2002 à 20:19:44
| loozer a écrit :   | 
 
 
 
non mais il comprenait rien à son script car ct po le sien 
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