2010-10-25 7 views
0

J'ai la ligne suivante dans mon journal proftpd (ligne 78 pour être précis)texte sed + sur une ligne spécifique après une IP

Deny from 1.2.3.4 

J'ai aussi un script qui roule dans mes journaux pour les personnes utilisant brute force les attaques et stocke ensuite leur IP (prêt pour une liste noire). Ce que je suis aux prises avec l'insertion est (avec présumer sed) à la fin de cette ligne spécifique - ce que j'ai jusqu'à présent:

sed "77i3.4.5.6" /opt/etc/proftpd.conf >> /opt/etc/proftpd.conf 

Maintenant, on suppose que ce fonctionnerait parfaitement, mais il fait effectue les opérations suivantes (lignes 77 à 78):

3.4.5.6 
Deny from 1.2.3.4 

Je soupçonne que cela est dû à ma version datée de sed, sont-il d'autres façons de acheiving la même chose? Aussi le >> fait que la config soit dupliquée à la fin du fole (encore une fois je suis sûr que c'est une limitation de ma version de sed). Cela fonctionne un noyau linux homebrew sur mon NAS. Options sed ci-dessous:

root @ NAS: ~ # sed BusyBox v1.7.0 (2009-04-29 19:12:57 JST) multi-appel binaire

Utilisation: sed [-efinr ] motif [fichiers ...]

options: scénario -e Ajouter le script aux commandes à exécuter -f fichierscript Ajouter le contenu de ScriptFile aux commandes à exécuter -i fichiers Modifier iN- placer -n Supprimer l'impression automatique du motif espace -r Utilisez la syntaxe étendue d'expression régulière

Si aucune -e ou -f est donnée, le premier argument non-option est considéré comme le script sed à interpréter. Tous les arguments restants sont des noms de fichiers d'entrée; Si aucun fichier d'entrée n'est spécifié, l'entrée standard est lue. Les fichiers source ne seront pas modifiés à moins que l'option -i ne soit spécifiée.

Merci pour votre aide les gars.

Répondre

2

Cela n'a rien à voir avec la version de sed; C'est tout simplement vieux, ça va mal.

sed -i '77s/$/,3.4.5.6/' /opt/etc/proftpd.conf 
+0

Vous avez un cul intelligent, merci. Cela vous dérangerait-il d'expliquer cela un peu? Est-ce juste un cas de recherche sur la ligne 77 et ensuite en remplaçant '$' (supposons que cela ne signifie rien) avec une adresse IP cochée? – keeer

+0

'$' est la fin de la chaîne/ligne. Donc, cela ajoute simplement l'adresse à la fin de la ligne 77. De plus, 's' est un substitut, pas une recherche. –

Questions connexes