Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

nombre réponses : 14

#0 -1 »  utilisation sh » Le 29/11/2013, à 16:31

capitainabloc
Réponses : 5

bonjour à tous,

je suis novice, et j'essaie de créer un fichier en sh de ce type:


#!/bin/sh

while read line
do
# si la ligne fait 36 caractères de long ET que le 6ème caractère est un espace

if [ ${#line} -ne 36 ] && [ "$(echo "$line" | cut -c6)" = ' '  ]

then

# alors appliquer toutes les modification qui suivent sur la ligne

echo "$line" | sed 's/^.........../&./'
echo "$line" | sed 's/^............./& /'
echo "$line" | sed 's/^................../&./'
echo "$line" | sed 's/^.................../& /'
echo "$line" | sed 's/^..................../&./'
echo "$line" | sed 's/^......................./& /'
echo "$line" | sed 's/^............................/&./'
echo "$line" | sed 's/^............................./& /'
echo "$line" | sed 's/^.................................../&./'

fi
done < yo.txt

mais ca ne focctionne pas, je pense que mon erreur vient de la suite de ligne après le then, mais je ne sais pas comment formater cette suite de commande

#1 Re : -1 »  utilisation sh » Le 29/11/2013, à 16:58

capitainabloc
Réponses : 5

ok, j'ai trouvé, donc voici le code corrigé:

#!/bin/sh
while read line
 do


if [ ${#line} -ne 36 ] && [ "$(echo "$line" | cut -c6)" = ' '  ]
then

#le séparateur | est utilisé entre chaque argument; la forme des sed a été simplifiée aussi, de plus il faut incrémenter le nombre de caractères à prendre en compte pour chaque sed, en prenant en compte de sed précédent. (c'est pas très clair dit comme ca!!)

echo "$line" | sed 's/^.\{11\}/&./' | sed 's/^.\{13\}/& /' | sed 's/^.\{20\}/&./' | sed 's/^.\{22\}/& /' | sed 's/^.\{24\}/&./' | sed 's/^.\{28\}/& /' | sed 's/^.\{34\}/&./' | ...

else

echo "$line"

fi
done < yo.txt

#2 Re : -1 »  utilisation sh » Le 29/11/2013, à 18:34

capitainabloc
Réponses : 5

une autre question:

je souhaite comparer les 6 premiers caracteres d'une ligne avec les 6 premiers de la ligne suivante afin d'effectuer une opération:

10.500 65131196261326392457522
11.000 65131196261326392457522
11.500 65131196261326392457522
12.000 65131196261326392457522
12.500 65131196261326392457522

je sais extraire les 6 1ers caractere de chaque ligne une à une avec 

cut -c-6

.

mais, comment extraire 11.000 et le soustaire à 10.500, et ca pour chaque ligne du fichier?

#3 Re : -1 »  utilisation sh » Le 30/11/2013, à 11:06

capitainabloc
Réponses : 5

oui, bien vu Pingouinux!  smile
j'ai encore du taf avant de parler couramment le bash!

#4 Re : -1 »  [Resolu] lire un fichier ligne par ligne en bash » Le 28/11/2013, à 22:51

capitainabloc
Réponses : 29

Bonjour à tous,

en restant dans le même esprit, comment lire/afficher uniquement le 5eme caractere de chaque ligne?

#5 Re : -1 »  [Resolu] lire un fichier ligne par ligne en bash » Le 28/11/2013, à 23:40

capitainabloc
Réponses : 29

merci beaucoup, mais voila:

j'ai un fichier, apres quelques modif qui est ainsi:

99802187971376187106302119011332813
99902186911375520106402117951332146
100002185851374854106502116891331479
100102184791374187106602115821330806
100202183731373520106702114761330140
100302182671372854106802113701329473
...

je souhaite vérifier si le caractère N°5 = 0, et dans ce cas la insérer un point apres le 2eme caractere.

c'est sur la vérification que je bloque.

je pars sur qque chose de ce genre:

#!/bin/sh
 do 
    if [ caractere 5 = "0" ] 
     	then
                sed 's/^.\{2\}/&./'
			                 return 1 
    else
               sed 's/^.\{1\}/&./'
 
    fi
done < yo.txt

c'est sur la condition que je bloque, et le cut ne m'aidera pas du coup.

hmm

#6 Re : -1 »  [Resolu] lire un fichier ligne par ligne en bash » Le 29/11/2013, à 09:36

capitainabloc
Réponses : 29

Whao, super!

j'avais les cartes en main, mais impossible de tout mettre dans le bon ordre.
je suis novice, et ilfaut que ca entre!

merci beaucoup pour ton aide en tout cas.

#7 Re : -1 »  [Resolu] lire un fichier ligne par ligne en bash » Le 29/11/2013, à 10:48

capitainabloc
Réponses : 29

oui, j'ai vu ça.

Je vais essayer de traduire ca en sh.

#8 Re : -1 »  [Resolu] lire un fichier ligne par ligne en bash » Le 29/11/2013, à 11:07

capitainabloc
Réponses : 29
pingouinux a écrit :

Attention, en #23, ce sont des commandes bash, et non sh.

while read ligne; do [ "$(cut -c5 <<<"$ligne")" = 0 ] && sed 's/^../&./' <<<"$ligne" || sed 's/^./&./' <<<"$ligne"; done <yo.txt

ok, il semble que j'ai du mal à transposer ça en sh.
je manipule, mais j'ai toujours des erreurs.

#9 Re : -1 »  [Resolu] lire un fichier ligne par ligne en bash » Le 29/11/2013, à 12:19

capitainabloc
Réponses : 29

ok, merci beaucoup pour le tuyau,

j'ai donc réussi avec ce code:


#!/bin/sh
while read line
 do
if [ "$(echo "$line" | cut -c5)" = 0 ]
then
echo "$line" | sed 's/^../&./'
else
echo "$line" | sed 's/^./&./'
fi
done < yo.txt

#10 Re : -1 »  ERROR: iptables: Index of deletion too big » Le 15/10/2012, à 09:08

capitainabloc
Réponses : 1

bonjour,

j'avais le même problème et j'ai trouvé cette solution qui marche nickel:


iptables-save >/tmp/somefile
nano /tmp/somefile
iptables-restore < /tmp/somefile

si ca peut aider qqu'un...

#11 -1 »  fail2ban, peut-on bannir depuis les anciennes entrées d'un log? » Le 14/10/2012, à 00:24

capitainabloc
Réponses : 5

bonjour à tous.

je configure petit à petit mon server sous ubuntu server, et j'ai réussi à configurer les failregex de fail2ban comme je voulais.

Cependant, lorsqu'on redémarre le service fail2ban, je constate que toutes les ips bannies sont débannies, ce qui m'ennuie un peu.

Y a-t'il un moyen de bannir les anciennes entrées d'un log? c'est à dire de scanner des vieux logs avec fail2ban, et de bannir les ips des "méchants" wink

merci d'avance

#12 Re : -1 »  fail2ban, peut-on bannir depuis les anciennes entrées d'un log? » Le 14/10/2012, à 01:28

capitainabloc
Réponses : 5

un faux problème, oui mais...

si la question est posée c'est que ca peut etre intéressant.

du genre le serveur a tourné sans fail2ban, et je souhaite bannir les tentatives passées, ou bien, après avoir ajouté des jails, je redémarre le service...

#13 Re : -1 »  fail2ban, peut-on bannir depuis les anciennes entrées d'un log? » Le 14/10/2012, à 12:52

capitainabloc
Réponses : 5

ok, mais c'est pas ma question en fait.

je voudrais savoir si on peut analyser des logs existant et bannir les ip avec fail2ban. Des logs existant avant l'install de fail2ban.

smile