Shell scripting
Fermé
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
-
23 janv. 2008 à 17:03
ndmiron Messages postés 10 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 24 janvier 2008 - 24 janv. 2008 à 00:22
ndmiron Messages postés 10 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 24 janvier 2008 - 24 janv. 2008 à 00:22
A voir également:
- Shell scripting
- Classic shell windows 11 - Télécharger - Personnalisation
- Shell startup windows 10 - Guide
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell infrastructure host c'est quoi - Guide
- Efi shell version 2.50 - Forum Windows 10
13 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
23 janv. 2008 à 17:33
23 janv. 2008 à 17:33
Salut,
sed "s/$SEDS/"
C'est supposé faire quoi cette commande ? Parce que vu d'ici elle est incomplète :-\
La commande "s" doit contenir un "motif cible" dans sa partie gauche et un motif de remplacement (ou vide pour effacer) dans sa partie droite...
sed "s/$SEDS/"
C'est supposé faire quoi cette commande ? Parce que vu d'ici elle est incomplète :-\
La commande "s" doit contenir un "motif cible" dans sa partie gauche et un motif de remplacement (ou vide pour effacer) dans sa partie droite...
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
4
23 janv. 2008 à 18:26
23 janv. 2008 à 18:26
elle choppe une interface exemple eth0 et la remplace par une adresse IP
sous le format "eth0/10.0.0.0"
sous le format "eth0/10.0.0.0"
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
23 janv. 2008 à 18:37
23 janv. 2008 à 18:37
Je m'excuse mais non ! Sous cette forme c'est pas possible !!!
$ VARIABLE="Bonjour" $ echo "Bonjour toi" | sed "s/$VARIABLE/" sed: -e expression n°1, caractère 10: commande `s' inachevée;-(
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
23 janv. 2008 à 20:07
23 janv. 2008 à 20:07
Pour répondre à la question initiale, ">>" concatène et ajoute à la suite, alors que ">" écrase tout à chaque passage...
Mais bon, toi tu sais ce que contiennent tes fichiers, tes variables et ce que sont censées renvoyées tes instructions, nous vu d'ici on suppute, donc si tu nous mets des exemples précis et imagés, plus on sera à même de t'aider.
;-))
Mais bon, toi tu sais ce que contiennent tes fichiers, tes variables et ce que sont censées renvoyées tes instructions, nous vu d'ici on suppute, donc si tu nous mets des exemples précis et imagés, plus on sera à même de t'aider.
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
4
23 janv. 2008 à 21:24
23 janv. 2008 à 21:24
mais si je veux exécuter 5 seds disons .. sur un fichier complet. Je veux faire 5 traitements et non ...> et ensuite >> concatener
mais plutôt lire un fichier, 5 seds avec les paramètre mentionnés plus haut et un output vers un fichier >.
Merci
mais plutôt lire un fichier, 5 seds avec les paramètre mentionnés plus haut et un output vers un fichier >.
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
23 janv. 2008 à 21:37
23 janv. 2008 à 21:37
Je veux faire 5 traitements
Lesquels ?
Comme dit dans mon précédent message, DES EXEMPLES !!!
J'ai ça (bla...bla...bla...) dans mon fichier, je veux extraire ça (bla) avec cette commande (cmd), et l'envoyer dans ... puis recommencer le traitement et extraire ça (bli...bli) et quand c'est fini, je voudrai que mon fichier de sortie ressemble à ça .....
Merci ;-))
Lesquels ?
Comme dit dans mon précédent message, DES EXEMPLES !!!
J'ai ça (bla...bla...bla...) dans mon fichier, je veux extraire ça (bla) avec cette commande (cmd), et l'envoyer dans ... puis recommencer le traitement et extraire ça (bli...bli) et quand c'est fini, je voudrai que mon fichier de sortie ressemble à ça .....
Merci ;-))
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
4
23 janv. 2008 à 21:54
23 janv. 2008 à 21:54
voici un exemple complet: un fichier interface contient une liste de noms de fichiers comme suit:
ServeurDebian2122
ServeurRedhat1223
ServeurSolaris2231
Chaque fichier en soit physiquement contient du data (FLUX) que je veux traiter en y appliquant le data contenu dans les fichiers .INT (voici ce qu'ils contiennent ci-dessous)
le fichier ServeurDebian2122.INT contient:
eth0/10.0.1.43
eth1/10.0.2.44
le fichier ServeurRedhat1223.INT contient:
eth2/172.12.0.4
eth3/10.0.2.2
le fichier Solaris.INT contient:
eth5/172.12.2.4
eth3/10.2.23.2
N.B.: mon problème est au niveau des SEDS... Je comprends qu'avec "> $INTS.SEDDED" j'écrase mais si je concatonne... je peux retrouve avec des copies des sed.. une après l'autre alors que je veux appliquer les sed sur le même input en boucle et je veux un seul fichier output non concaténé.
for INTS in `cat interfaces` # interfaces contient une liste de nom de fichiers
do
for SEDS in `cat $INTS.INT` #.INT contient une liste interfaces / IPs [ethx]/[10.0.0.0]
do
cat $INTS | sed "s/$SEDS/" > $INTS.SEDDED
cat $INTS.SEDDED | gawk -F" " '!($4 ~ /255.255.255/ || $5 ~ /255.255.255/ || $6 > 30000 ) {print $4" "$5" "$6" "$7}' | sort -t" " -k1 > $INTS.OUTGOING
done
done
ServeurDebian2122
ServeurRedhat1223
ServeurSolaris2231
Chaque fichier en soit physiquement contient du data (FLUX) que je veux traiter en y appliquant le data contenu dans les fichiers .INT (voici ce qu'ils contiennent ci-dessous)
le fichier ServeurDebian2122.INT contient:
eth0/10.0.1.43
eth1/10.0.2.44
le fichier ServeurRedhat1223.INT contient:
eth2/172.12.0.4
eth3/10.0.2.2
le fichier Solaris.INT contient:
eth5/172.12.2.4
eth3/10.2.23.2
N.B.: mon problème est au niveau des SEDS... Je comprends qu'avec "> $INTS.SEDDED" j'écrase mais si je concatonne... je peux retrouve avec des copies des sed.. une après l'autre alors que je veux appliquer les sed sur le même input en boucle et je veux un seul fichier output non concaténé.
for INTS in `cat interfaces` # interfaces contient une liste de nom de fichiers
do
for SEDS in `cat $INTS.INT` #.INT contient une liste interfaces / IPs [ethx]/[10.0.0.0]
do
cat $INTS | sed "s/$SEDS/" > $INTS.SEDDED
cat $INTS.SEDDED | gawk -F" " '!($4 ~ /255.255.255/ || $5 ~ /255.255.255/ || $6 > 30000 ) {print $4" "$5" "$6" "$7}' | sort -t" " -k1 > $INTS.OUTGOING
done
done
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
23 janv. 2008 à 22:08
23 janv. 2008 à 22:08
Ok, j'y vois plus clair.
Mais qu'est censé contenir le fichier "$INTS.SEDDED" en sortie ?
La liste de chaque interface et son adresse associée ?
Et qu'est supposé contenir le fichier "$INTS.OUTGOING" ?
Mais qu'est censé contenir le fichier "$INTS.SEDDED" en sortie ?
La liste de chaque interface et son adresse associée ?
Et qu'est supposé contenir le fichier "$INTS.OUTGOING" ?
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
4
23 janv. 2008 à 22:31
23 janv. 2008 à 22:31
en fait les Sed... en boucle... je veux obtenir un fichier... avec les remplacements faits....
Le problème c'est au niveau des SED.. et comment faire les SED en boucle pour n'avoir qu'un seul fichier en sortie auquel j'applique disons à $INTS ou $INTS.SEDDED.... unun gawk ... et un sort... vers le final $INTS.OUTGOING
voilà
Le problème c'est au niveau des SED.. et comment faire les SED en boucle pour n'avoir qu'un seul fichier en sortie auquel j'applique disons à $INTS ou $INTS.SEDDED.... unun gawk ... et un sort... vers le final $INTS.OUTGOING
voilà
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
23 janv. 2008 à 22:56
23 janv. 2008 à 22:56
cat $INTS | sed "s/$SEDS/" > $INTS.SEDDED
Cette ligne est incorrecte du début jusqu'à la fin !!!
$INT contient la valeur d'une variable (disons dans ton cas la 1ère ligne du fichier "interfaces", soit "ServeurDebian2122"). La commande "cat" renvoie :
Ensuite, si on analyse la commande "sed", je te l'ai déjà dit dans mon 1er post et illustré dans le 2nd ,elle est incorrecte, mais dans ton cas elle marche quand même car voilà comment est interprété la variable "$SED" (qui contient "eth0/10.0.1.43") :
Par contre je ne pense pas que ce soit ce que tu veuilles vraiment, si ?
Tu ne m'as toujours pas dit ce que tu veux récupérer dans chaque fichier et sous quelle forme ! J'insiste mais on tourne en rond là :-))
Tu veux récupérer chaque adresse IP dans un fichier ?
Cette ligne est incorrecte du début jusqu'à la fin !!!
$INT contient la valeur d'une variable (disons dans ton cas la 1ère ligne du fichier "interfaces", soit "ServeurDebian2122"). La commande "cat" renvoie :
cat: ServeurDebian2122: Aucun fichier ou répertoire de ce typec'est normal, le fichier s'appelle en réalité "ServeurDebian2122.INT". Il manque donc l'extension.
Ensuite, si on analyse la commande "sed", je te l'ai déjà dit dans mon 1er post et illustré dans le 2nd ,elle est incorrecte, mais dans ton cas elle marche quand même car voilà comment est interprété la variable "$SED" (qui contient "eth0/10.0.1.43") :
sed s/eth0/10.0.1.43/ce qui en fait une syntaxe parfaite pour la commande "s" de sed.
Par contre je ne pense pas que ce soit ce que tu veuilles vraiment, si ?
Tu ne m'as toujours pas dit ce que tu veux récupérer dans chaque fichier et sous quelle forme ! J'insiste mais on tourne en rond là :-))
Tu veux récupérer chaque adresse IP dans un fichier ?
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
4
23 janv. 2008 à 23:46
23 janv. 2008 à 23:46
J'ai des fichiers ServeurRedhat1223, Redhat etc qui contiennent mes flux (mon traffic tcp/IP)
J'ai des fichiers ServeurRedhat1223.INT qui contiennent les changements que je veux faire [INTERFACE/IPADDRESS].
Je veux appliquer ServeurRedhat1223.INT en sed à ServeurRedhat1223, Redhat.INT à Redhat .. etc.
Une fois complétée, je fais un gawk et un sort.
La commande sed est bien interprétée.
----
cat $INTS | sed "s/$SEDS/" > $INTS.SEDDED
Cette ligne est incorrecte du début jusqu'à la fin !!!
$INT contient la valeur d'une variable (disons dans ton cas la 1ère ligne du fichier "interfaces", soit "ServeurDebian2122"). La commande "cat" renvoie :cat: ServeurDebian2122: Aucun fichier ou répertoire de ce type
----
Pour commenter ce que vous m'avez répondu... le cat $INTS dans la 2e boucle en fait contient la valeur retournée de la variable de la première boucle soit `cat interfaces` [qui en fait retourne la liste de nom de fichier flux ligne par ligne]
J'ai des fichiers ServeurRedhat1223.INT qui contiennent les changements que je veux faire [INTERFACE/IPADDRESS].
Je veux appliquer ServeurRedhat1223.INT en sed à ServeurRedhat1223, Redhat.INT à Redhat .. etc.
Une fois complétée, je fais un gawk et un sort.
La commande sed est bien interprétée.
----
cat $INTS | sed "s/$SEDS/" > $INTS.SEDDED
Cette ligne est incorrecte du début jusqu'à la fin !!!
$INT contient la valeur d'une variable (disons dans ton cas la 1ère ligne du fichier "interfaces", soit "ServeurDebian2122"). La commande "cat" renvoie :cat: ServeurDebian2122: Aucun fichier ou répertoire de ce type
----
Pour commenter ce que vous m'avez répondu... le cat $INTS dans la 2e boucle en fait contient la valeur retournée de la variable de la première boucle soit `cat interfaces` [qui en fait retourne la liste de nom de fichier flux ligne par ligne]
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
24 janv. 2008 à 00:06
24 janv. 2008 à 00:06
Je m'excuse mais je ne comprends toujours pas ;-((
Je veux appliquer ServeurRedhat1223.INT en sed à ServeurRedhat1223
Ça ça ne veut strictement rien dire, enfin pour moi.
Que veux-tu faire avec "sed" ?
Tant que tu ne me donneras pas un exemple précis...
Je veux appliquer ServeurRedhat1223.INT en sed à ServeurRedhat1223
Ça ça ne veut strictement rien dire, enfin pour moi.
Que veux-tu faire avec "sed" ?
Tant que tu ne me donneras pas un exemple précis...
ndmiron
Messages postés
10
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
24 janvier 2008
4
24 janv. 2008 à 00:22
24 janv. 2008 à 00:22
dans les fichier.int... il y a les entrées eth0/192.0.0.0 ... etc... les interfaces = les adresses ip réelles
je veux substituer dans les fichiers flux ... les eth0 pour les remplacer par les adresses ip réelles.
je veux substituer dans les fichiers flux ... les eth0 pour les remplacer par les adresses ip réelles.