Auswertung von inst. Programmen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von iceman99, 23.05.2006.

  1. #1 iceman99, 23.05.2006
    iceman99

    iceman99 Jungspund

    Dabei seit:
    23.05.2006
    Beiträge:
    19
    Zustimmungen:
    0
    Hallo,
    ich bastele mir gerade ein Shell-Script, das die Ausgabe von "rpm-qa > sw-version.list" in folgende Variante bringen soll:

    Programmname:
    Version:
    Patchlevel:

    Ich stosse immer wieder auf das Problem mit der unterschiedlichen Anzahl von "-" in den Dateinamen.

    Hat jemand von euch eine Lösung?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wie sieht denn die Ausgabe von "rpm-qa > sw-version.list" aus?

    Gruss, Xanti
     
  4. #3 iceman99, 23.05.2006
    iceman99

    iceman99 Jungspund

    Dabei seit:
    23.05.2006
    Beiträge:
    19
    Zustimmungen:
    0
    Das ist ein Ausschnitt aus der Liste:

    gpg-pubkey-9c800aca-40d8063e
    filesystem-9-29.4
    providers-2004.4.2-4.1
    aaa_skel-2004.6.8-0.2
    sash-3.7-28.1
    popt-1.7-176.7
    zlib-1.2.1-70.1
    schedutils-1.3.5-0.1
    mingetty-0.9.6s-73.1
    expat-1.95.7-37.1
    libattr-2.4.12-56.1
    eject-2.0.13-185.1
    prctl-1.3-353.1
    iptables-1.2.9-95.6
    libaio-0.3.98-18.3
    hdparm-5.5-41.3
    utempter-0.5.2-385.4
    lsof-4.70-30.1
    patch-2.5.9-141.1
    pcre-4.4-109.1
    lukemftp-1.5-578.1
    file-4.07-48.5
    db-4.2.52-86.3
    libjpeg-6.2.0-731.1
    module-init-tools-3.0_pre10-37.16
    cracklib-2.7-1006.1

    Gerade die vorletzte Datei mit den mehreren "-" im Dateinamen...
     
  5. #4 Xanti, 23.05.2006
    Zuletzt bearbeitet: 23.05.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Auf die Schnelle:

    Code:
    for i in $(rpm-qa)
    do
      echo $i | perl -p -e 's/(.*)-([^-]*)-([^-]*)$/Programmname: $1\nVersion: $2\nPatchlevel: $3/'
    done
    
    Es gibt aber bestimmt elegantere Lösungen.

    Gruss, Xanti
     
  6. #5 iceman99, 23.05.2006
    iceman99

    iceman99 Jungspund

    Dabei seit:
    23.05.2006
    Beiträge:
    19
    Zustimmungen:
    0
    Funktioniert doch gut.
    Ich bin begeistert. Werde mich doch mal intensiver mit Perl beschäftigen müssen. Mein Ansatz war mit sed.
     
  7. #6 Xanti, 23.05.2006
    Zuletzt bearbeitet: 23.05.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Mit sed oder awk geht es bestimmt auch, leider kenn ich mich da nicht so aus.

    Gruss, Xanti

    edit: Wenn rpm-qa die Listenelemente mit "\n" trennt (was es offensichtlich auch tut), sollte es auch ohne Schleife gehen

    Code:
    rpm-qa | perl -p -e 's/(.*)-([^-]*)-([^-]*)$/Programmname: $1\nVersion: $2\nPatchlevel: $3/'
    
     
  8. #7 iceman99, 24.05.2006
    iceman99

    iceman99 Jungspund

    Dabei seit:
    23.05.2006
    Beiträge:
    19
    Zustimmungen:
    0
    Hast recht. Funktioniert auch ohne Schleife.

    Wenn ich mal fragen darf, ob Du noch eine Perl-Lösung für das gleich Problem unter Debian hast.
    Der Aufruf des Paketmanagers ist dpkg -l und der Output fängt mit so an:

    Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten
    | Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konf./Halb install.
    |/Fehler?=(keiner)/Halten/R=Neuinst.notw/X=beides (Status,Fehler: GROSS=schlecht)
    ||/ Name Version Beschreibung
    +++-==============-==============-============================================
    ii mozilla 1.0.0-1 Mozilla Web Browser - dummy package
    ii mozilla-browse 1.0.0-1 Mozilla Web Browser - core and browser
    rc mozilla-browse 0.0.20020226.1 An Open Source WWW browser for X and GTK+ (C
    ii mozilla-browse 0.0.20020610.0 An Open Source WWW browser for X and GTK+ (C
    ii mozilla-chatzi 1.0.0-1 Mozilla Web Browser - irc client
    pn mozilla-chatzi <keine> (keine Beschreibung vorhanden)
    pn mozilla-chatzi <keine> (keine Beschreibung vorhanden)
    pn mozilla-cvs <keine> (keine Beschreibung vorhanden)
    pn mozilla-cvs-de <keine> (keine Beschreibung vorhanden)
    ii mozilla-dev 1.0.0-1 Mozilla Web Browser - development files
    un mozilla-dmotif <keine> (keine Beschreibung vorhanden)
    ii mozilla-dom-in 1.0.0-1 A tool for inspecting the DOM of pages in Mo
    ii mozilla-dom-in 0.0.20020610.0 A tool for inspecting the DOM of pages in Mo
    ii mozilla-js-deb 1.0.0-1 JavaScript debugger for use with Mozilla
    pn mozilla-js-deb <keine> (keine Beschreibung vorhanden)
    rc mozilla-locale 0.9.9-3 Mozilla German Language/Region Package.
    pn mozilla-locale <keine> (keine Beschreibung vorhanden)
    pn mozilla-locale <keine> (keine Beschreibung vorhanden)
    ii mozilla-mailne 1.0.0-1 Mozilla Web Browser - mail and news support

    Der Kopf besteht aus 5 Zeieln. Wird aber nicht benötigt.
    Ich brauche nur jeweis Name (2.Spalte) und Version (3.Spalte).
    Parallel bastele ich jetzt noch mit sed herum.

    Danke schon einmal.
     
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Code:
    dpkg -l | perl -an -e 'BEGIN {$i=0} print "Programmname: $F[1]\nVersion: $F[2]\n" if $i++>4'
    
    Gruss, Xanti
     
  10. #9 iceman99, 24.05.2006
    iceman99

    iceman99 Jungspund

    Dabei seit:
    23.05.2006
    Beiträge:
    19
    Zustimmungen:
    0
    Ich habe das so gelöst:
    Hast Du eine bessere Idee?
    Zu testzwecken eine kleine Tabelle mit gleichem Aufbau in tabelle.test gelegt.

    grep '^[ir]' tabelle.test | awk '{print "Name: " $2 } {print "Version: " $3'}
     
  11. #10 Wolfgang, 24.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Das BEGIN und selbst Zählen, kann man sich sparen, wenn die zu übergehende Zeilenzahl konstant und bekannt ist. Hier 5
    Code:
    dpkg -l | perl -an -e 'print "Programmname: $F[1]\nVersion: $F[2]\n" unless (1..5)'
    
    Oder wenn du nur die mit ir am Zeilenanfang willst:

    Code:
    dpkg -l | perl -an -e 'print "Programmname: $F[1]\nVersion: $F[2]\n" if (/^ir/)'
    
    wenn du es schön formatiert haben willst, bietet sich auch printf an. ;)

    Gruß Wolfgang
     
  12. #11 Wolfgang, 24.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn du es schon mit awk machen willst, kannst du dir das grep sparen:
    alle mit ii am Anfang:
    Code:
    dpkg -l |awk '/^ii/{print "Name:    "$2"\nVersion: "$3; }'
    Gruß Wolfgang
     
  13. #12 phrenicus, 24.05.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Hallo Leute,

    rpm kann das selbst. Dein Problem ist keins, wo man awk, sed, perl etc bemühen müsste. Probier mal:

    rpm -qa --queryformat 'Programmname: %{NAME}\nVersion: %{VERSION}\nPatchlevel: %{RELEASE}\n\n' > sw-version.list

    alles bitte in einer Zeile ohne Zeilenumbruch.
    Und macht Euch mal mit rpm vertraut. Das kann so einiges ;-)

    Have fun.

    phrenicus
     
  14. #13 Wolfgang, 24.05.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Hier ist aber nicht von rpm die Rede!
    Das dpkg stammt aus der Debianwelt, wo rpm nicht zu Hause ist.

    Gruß Wolfgang
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 iceman99, 30.05.2006
    iceman99

    iceman99 Jungspund

    Dabei seit:
    23.05.2006
    Beiträge:
    19
    Zustimmungen:
    0
    Hallo,
    das Script arbeitet mittlerweile sehr gut und auf verschiedensten Plattformen.

    Trotzdem brauche ich nochmal Hilfe bei dem Umbau der Ausgaben. Diese sollen jetzt direkt in eine DB.

    Ziel ist folgende Struktur:

    update SoftwareListe set
    ip = '192.168.99.1',
    rechner = 'alice',
    vlan = '',
    os = 'SUSE 2.6.12.2',
    ssh = 'openssh Version:3.8p1'
    where host = 'alice.aon.arcor.net';
    .....
    Hier die weiteren Programmnamen

    Zur Erinnerung:
    Ausgangsliste 1 war:
    gpg-pubkey-9c800aca-40d8063e
    filesystem-9-29.4
    providers-2004.4.2-4.1
    aaa_skel-2004.6.8-0.2
    sash-3.7-28.1
    popt-1.7-176.7
    zlib-1.2.1-70.1
    schedutils-1.3.5-0.1
    mingetty-0.9.6s-73.1
    expat-1.95.7-37.1
    libattr-2.4.12-56.1
    eject-2.0.13-185.1
    prctl-1.3-353.1
    iptables-1.2.9-95.6
    libaio-0.3.98-18.3
    hdparm-5.5-41.3
    utempter-0.5.2-385.4

    Ausgangsliste 2 war:
    Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten
    | Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konf./Halb install.
    |/Fehler?=(keiner)/Halten/R=Neuinst.notw/X=beides (Status,Fehler: GROSS=schlecht)
    ||/ Name Version Beschreibung
    +++-==============-==============-============================================
    ii mozilla 1.0.0-1 Mozilla Web Browser - dummy package
    ii mozilla-browse 1.0.0-1 Mozilla Web Browser - core and browser
    rc mozilla-browse 0.0.20020226.1 An Open Source WWW browser for X and GTK+ (C
    ii mozilla-browse 0.0.20020610.0 An Open Source WWW browser for X and GTK+ (C
    ii mozilla-chatzi 1.0.0-1 Mozilla Web Browser - irc client
    pn mozilla-chatzi <keine> (keine Beschreibung vorhanden)
    pn mozilla-chatzi <keine> (keine Beschreibung vorhanden)
    pn mozilla-cvs <keine> (keine Beschreibung vorhanden)
    pn mozilla-cvs-de <keine> (keine Beschreibung vorhanden)
    ii mozilla-dev 1.0.0-1 Mozilla Web Browser - development files
     
  17. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Schreib

    Code:
    update SoftwareListe set
    ip = '192.168.99.1',
    rechner = 'alice',
    vlan = '',
    os = 'SUSE 2.6.12.2',
    ssh = 'openssh Version:3.8p1'
    where host = 'alice.aon.arcor.net';
    
    in ein File (template) zum Beispiel und schalte jeweils ein cat template > ausgabe bei jedem subst-Befehl vor.

    Gruss, Xanti
     
Thema:

Auswertung von inst. Programmen

Die Seite wird geladen...

Auswertung von inst. Programmen - Ähnliche Themen

  1. Rootkitauswertung Possible LKM Trojan installed ?

    Rootkitauswertung Possible LKM Trojan installed ?: Hi@all ich habe gerade ein chkrootkit gemacht und dabei etwas entdeckt : nuclearblast:/home/atomara# chkrootkit ROOTDIR is `/' Checking...
  2. smartmontools Testauswertung

    smartmontools Testauswertung: Hallo zusammen, ich habe einen neuen Server mit CentOS 5 am laufen. Jetzt habe ich mal die Platte überprüft. Ergebnis bei smartctl -A...
  3. Auswertung einer Datei

    Auswertung einer Datei: Hallo Leute, ich habe hier ein wahrscheinlich sehr einfach zu lösendes Problem. Und zwar habe ich eine Datei vor mir die aus knapp 40 Zeilen...
  4. LOG auswertung in Shell | Addieren mit awk bei bestimmter Bedingung

    LOG auswertung in Shell | Addieren mit awk bei bestimmter Bedingung: Hallo Leute, ich bin relativ neu in der Shell und in der Linux-Welt überhaupt. Jetzt versuche ich gerade ein Script zu schreiben dass mir die...
  5. Statistik/Auswertung aus MySQL-Datenbank

    Statistik/Auswertung aus MySQL-Datenbank: Hi, Ich habe hier eine Datenbank, in die die Ergebnisse eines Umfragetools geschrieben werden. Es ist im Prinzip eine Tabelle in der jeder...