Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 25/01/2016, à 12:05

Alcatraz62

Re : Récuperation complexe d'informations (grep,awk,cut,sed,find)

avec:

#!/bin/bash

nomhost='SW_test'

echo "$nomhost"

fichier=/srv/eyesofnetwork/nagios/etc/objects/hosts.cfg

infohost=$(sed -n '/define host {/{h;b};/}/!{H;b};H;x;/\<host_name \+'"$nomhost"'\>/p' "$fichier")
echo infohost="$infohost"=

nomparent=$(awk '/\<parents\>/{print $2}' <<< "$infohost")
echo nomparent="$nomparent"=

j'obtiens:

SW_test
infohost==
nomparent==

Je comprend vraiment plus rien, la programmation, les scripts et tout c'est pas fait pour moi neutral

Hors ligne

#27 Le 25/01/2016, à 12:52

Watael

Re : Récuperation complexe d'informations (grep,awk,cut,sed,find)

je propose une solution peut-être un peu plus "plan-plan", qui énonce clairement ce qu'on cherche :

$ cat fichierHosts 
define host {
                   host_name SW_nom (le nom que je connais a la base)
                   addresse 1.0.0.0
                    parents FW_SW_nom
                     ....
                     ...
}
define host {
                   host_name TW_nom (le nom que je connais a la base)
                   addresse 2.0.0.0
                    parents FW_TW_nom
                     ....
                     ...
}
define host {
                   host_name UW_nom (le nom que je connais a la base)
                   addresse 3.0.0.0
                    parents FW_UW_nom
                     ....
                     ...
}
$ host="SW_nom"
$
$ IFS='|' read hote adresse parent < <(sed -n '/define host/{:c;N;/}/! bc; /'"$host"'/{s/.*host_name[^ ]* \([^ ]*\).*addresse[^ ]* \([^\n]*\)\n.*parents[^ ]* \([^\n]*\).*/\1|\2|\3/;p}}' fichierHosts )
$
$ echo "hote = $hote; adresse = $adresse; parent = $parent"
hote = SW_nom; adresse = 1.0.0.0; parent = FW_SW_nom
$

Dernière modification par Watael (Le 25/01/2016, à 13:04)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#28 Le 25/01/2016, à 12:52

pingouinux

Re : Récuperation complexe d'informations (grep,awk,cut,sed,find)

S'il y a des tabulations (qu'on ne récupère généralement pas avec un copier-coller), il faut faire ceci :

infohost=$(sed -n '/define host {/{h;b};/}/!{H;b};H;x;/\<host_name\s\+'"$nomhost"'\>/p' "$fichier")

Hors ligne

#29 Le 25/01/2016, à 13:00

Alcatraz62

Re : Récuperation complexe d'informations (grep,awk,cut,sed,find)

C'est bon ça fonctionne avec la ligne que tu viens de m'envoyer !!

Merci beaucoup beaucoup pour toute ton aide et le temps que tu as passé !:)

donc voici mon script:

#!/bin/bash

nomhost='SW_test'

echo "$nomhost"

fichier=/srv/eyesofnetwork/nagios/etc/objects/hosts.cfg

infohost=$(sed -n '/define host {/{h;b};/}/!{H;b};H;x;/\<host_name\s\+'"$nomhost"'\>/p' "$fichier")
echo "$infohost"

lignep=$(grep parents <<< "$infohost")
echo "$lignep"

nomparent=$(sed '/parents/,/\}/ !d ; /parents/ !d ; s/.*\ //' <<< "$lignep")
echo "$nomparent"

infoparent=$(sed -n '/define host {/{h;b};/}/!{H;b};H;x;/\<host_name\s\+'"$nomparent"'\>/p' "$fichier")
echo "$infoparent"

lignea=$(grep address  <<< "$infoparent")
echo "$lignea"

adr=$(sed '/address/,/\}/ !d ; /address/ !d ; s/.*\ //' <<< "$lignea")
echo "$adr"

Et j'obtiens bien l'adresse du parent de l'hôte que je connais au début !
Merciiiiiii !

Hors ligne