Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2620 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  HELP erreur script shell

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

HELP erreur script shell

n°203795
sneakz
Posté le 20-12-2002 à 22:15:47  profilanswer
 

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
mood
Publicité
Posté le 20-12-2002 à 22:15:47  profilanswer
 

n°203884
superX
Posté le 21-12-2002 à 13:31:17  profilanswer
 

- 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 [

n°203937
sneakz
Posté le 21-12-2002 à 17:18:12  profilanswer
 

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" )

n°203966
superX
Posté le 21-12-2002 à 19:22:55  profilanswer
 

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 ;)

n°203968
sneakz
Posté le 21-12-2002 à 19:36:17  profilanswer
 

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
n°204021
loozer
Soy un perdedor
Posté le 21-12-2002 à 23:21:20  profilanswer
 


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]
n°204027
superX
Posté le 21-12-2002 à 23:54:44  profilanswer
 

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

n°204034
asphro
Posté le 22-12-2002 à 00:26:39  profilanswer
 

#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
 

n°204039
sneakz
Posté le 22-12-2002 à 01:01:17  profilanswer
 

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)
 
 
 

n°204041
asphro
Posté le 22-12-2002 à 01:04:55  profilanswer
 

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:

mood
Publicité
Posté le 22-12-2002 à 01:04:55  profilanswer
 

n°204042
asphro
Posté le 22-12-2002 à 01:07:44  profilanswer
 

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

n°204315
loozer
Soy un perdedor
Posté le 22-12-2002 à 20:10:26  profilanswer
 

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]
n°204323
asphro
Posté le 22-12-2002 à 20:19:44  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  HELP erreur script shell

 

Sujets relatifs
proftpd ? erreur au lancement.HELP ! Rezo mixte pour débutant
message d'erreur inconnu au bataillonlancer une session X depuis un script -> "X: user not authorized ..."
forcer un exit suite a une erreur du shell unixProcmail + requete ldap et Shell + condition if....
no-ip.com helperreur démarrage
[comment 'timeriser' un script sh ?] 
Plus de sujets relatifs à : HELP erreur script shell


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR