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