.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 20.04.2009 13:02:51

.
Zuletzt geändert von ghost90 am 09.03.2011 13:10:43, insgesamt 1-mal geändert.

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: Brauchste Programmierhilfe

Beitrag von finupsen » 20.04.2009 13:22:30

moin,

> Aber irgendwie fehlen mir die nötigen Kenntnisse *schäm*

Was hindert dich daran dir die kentnisse anzueignen ?
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 20.04.2009 13:34:52

.
Zuletzt geändert von ghost90 am 09.03.2011 13:10:58, insgesamt 1-mal geändert.

uname
Beiträge: 12426
Registriert: 03.06.2008 09:33:02

Re: Brauchste Programmierhilfe

Beitrag von uname » 20.04.2009 13:40:52

In welcher Programmiersprache möchtest du denn programmieren? Zudem müsstest du genauer erklären, wie das Programm was genau machen soll.

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 20.04.2009 14:17:25

.
Zuletzt geändert von ghost90 am 09.03.2011 13:11:13, insgesamt 1-mal geändert.

yeti

Re: Brauchste Programmierhilfe

Beitrag von yeti » 20.04.2009 17:29:29

ghost90 hat geschrieben:Zeit !!!

habt ihr da irgendwie ein Quickstart guide oder so ?
Aha!
Und Scheffe guckt schon ganz ungemütlich?

Methusalix

Re: Brauchste Programmierhilfe

Beitrag von Methusalix » 20.04.2009 20:15:06

Hallo,

so wie ich das sehe, sind die Kollegen der Meinung, das Du zu wenig Eigeninitiative
zeigst und werden Dir nicht einfach so ein fertiges codesnippet hinlegen. Hier ist ein
bißchen was zum reinarbeiten:

Code: Alles auswählen

user@lenny:~$ cat testdatei
host derhostname
user@lenny:~$ wert=`cat testdatei | awk '{print $2}'`
user@lenny:~$ echo $wert
derhostname
user@lenny:~$ wert1=derhostname
user@lenny:~$ if [ $wert = $wert1 ]; then echo "Wahnsinn"; else echo "Das war nix..";fi
Wahnsinn
user@lenny:~$ wert1=blafasel
user@lenny:~$ if [ $wert = $wert1 ]; then echo "Wahnsinn"; else echo "Das war nix..";fi
Das war nix..
user@lenny:~$ 
Mit echo läßt sich übrigens auch etwas in Dateien
reinschreiben | überschreiben | anhängen. Das sollen jetzt nur Ansätze sein. Beachte z.B.
was passiert, wenn testdatei mehr als eine Zeile hat.

Gruß Matthias

DeletedUserReAsG

Re: Brauchste Programmierhilfe

Beitrag von DeletedUserReAsG » 20.04.2009 21:00:52

Auf tldp.org gibt es zwei schöne Einführungen. Mal nach bash und guide suchen...

cu,
niemand

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Brauchste Programmierhilfe

Beitrag von Duff » 21.04.2009 09:37:35

Mit sed könnte man vielleicht die entsprechende Zeile der 2ten Datei noch ändern.

Bspw.:

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ cat daniel 
host *hostname* {
hardware ethernet *mac-adresse*
fixed-address *ipadresse*
}
daniel@daniel-laptop:/tmp$ sed -i 's/^host.*$/host myhostname \{/g' daniel 
daniel@daniel-laptop:/tmp$ cat daniel 
host myhostname {
hardware ethernet *mac-adresse*
fixed-address *ipadresse*
}
Oh, yeah!

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 21.04.2009 19:17:32

.
Zuletzt geändert von ghost90 am 09.03.2011 13:44:15, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Brauchste Programmierhilfe

Beitrag von Duff » 21.04.2009 20:04:47

Aus der Datei1 kannst du den hostnamen mit awk '{print $2}' auslesen, wie es Matthias-GEgeschrieben hat.
Oh, yeah!

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 21.04.2009 22:44:08

.
Zuletzt geändert von ghost90 am 09.03.2011 13:45:21, insgesamt 2-mal geändert.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Brauchste Programmierhilfe

Beitrag von Spasswolf » 21.04.2009 22:49:39

Du hast Leerzeichen in den Werten, probier es mal so:

Code: Alles auswählen

if [ "$WERT1" = "$WERT2" ]; then echo "Wahnsinn"; else echo "Das war nix..";fi

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 22.04.2009 09:05:03

.
Zuletzt geändert von ghost90 am 09.03.2011 13:13:21, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Brauchste Programmierhilfe

Beitrag von Duff » 22.04.2009 09:51:11

Dies sollte dann so funktionieren:

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ wert="host beliebername1 {"
daniel@daniel-laptop:/tmp$ cat datei2 
host beliebigername1 {
hardware ethernet *1mac-adresse*
fixed-address *1ipadresse*
}
daniel@daniel-laptop:/tmp$ sed -i "s/^host.*$/$wert/g" datei2 
daniel@daniel-laptop:/tmp$ cat datei2 
host beliebername1 {
hardware ethernet *1mac-adresse*
fixed-address *1ipadresse*
}
Oh, yeah!

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 22.04.2009 09:57:28

.
Zuletzt geändert von ghost90 am 09.03.2011 13:41:55, insgesamt 1-mal geändert.

yeti

Re: Brauchste Programmierhilfe

Beitrag von yeti » 22.04.2009 11:15:40

Code: Alles auswählen

#!/bin/bash

mk-test-data() {
        for (( i=$1 ; i<=$2 ; i+=$3 )) ; do
                echo "host testhost-$i {"
                echo "hardware ethernet 00:00:00:00:$4:$(printf '%02d' $i)"
                echo "fixed-address 1.2.3.$i"
                echo "}"
        done
}

collect() {
        awk '   
                /^host / { h=$2 }
                /^hardware / { h2m[h]=$3 }
                /^fixed/ { h2i[h]=$2 }
                END {   
                        for( h in h2m ) {
                                print "host " h " {"
                                print "hardware ethernet " h2m[h]
                                print "fixed-address " h2i[h]
                                print "}"
                        }
                }
                '
}

{ mk-test-data 2 10 2 aa ; mk-test-data 3 10 3 bb ; } | collect
mk-test-data generiert einen Bereich Testdaten, die ersten 3 Argumente steuern die for-Schleife, das 4te Argument markiert die Testdaten in der MAC, damit man nach dem Zusammenführen noch sieht, was woher kam...

collect liest, was ihm auf stdin vorgeworfen wird ein und speichert die MAC und die IP-Adresse in 2 Dictionaries unter dem Schlüssel des zuvor auftauchenden hostname.
Das hat den Effekt, daß ein später nochmal auftauchender Definitionsblock zu einem schon bekannten hostname dessen Daten überschreibt und so bleibt nur die letzte Sichtung von Daten zu einem bestimmten hostname gespeichert.
Am Ende wird das janze Jedöns auf stdout ausgegeben, hier bestimmt awk, in welcher Reihenfolge. Man müsste erst noch alle Schlüssel sortieren, aber das stört vielleicht ja garnicht...
Damit reduziert sich das Zusammenführen der beiden Dateien auf hintereinander collect zum Fraß vorwerfen à la "cat datei1 datei2 | collect > datei3".

Die Ausgabe:

Code: Alles auswählen

host testhost-10 {
hardware ethernet 00:00:00:00:aa:10
fixed-address 1.2.3.10
}
host testhost-2 {
hardware ethernet 00:00:00:00:aa:02
fixed-address 1.2.3.2
}
host testhost-3 {
hardware ethernet 00:00:00:00:bb:03
fixed-address 1.2.3.3
}
host testhost-4 {
hardware ethernet 00:00:00:00:aa:04
fixed-address 1.2.3.4
}
host testhost-6 {
hardware ethernet 00:00:00:00:bb:06
fixed-address 1.2.3.6
}
host testhost-8 {
hardware ethernet 00:00:00:00:aa:08
fixed-address 1.2.3.8
}
host testhost-9 {
hardware ethernet 00:00:00:00:bb:09
fixed-address 1.2.3.9
}

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 22.04.2009 18:38:48

.
Zuletzt geändert von ghost90 am 09.03.2011 13:42:17, insgesamt 1-mal geändert.

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Brauchste Programmierhilfe

Beitrag von Spasswolf » 22.04.2009 18:47:08

Da muss ein Leerzeichen vor ]:

Code: Alles auswählen

if [ "$KOMMENTAR" == "#" ]

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Brauchste Programmierhilfe

Beitrag von Duff » 23.04.2009 10:16:17

Kann Kommentar denn überhaupt nur das #-Zeichen sein, oder ist in der gesamten Zeile am Zeilenanfang das #-Zeichen?
Wie sieht denn dein bisheriges Skript aus?

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ cat test
1. Zeile ohne Kommentar
#2.Zeile mit Kommentar
3. Zeile ohne Kommentar
# 4. Zeile mit Kommentar
...
daniel@daniel-laptop:/tmp$ awk '/^#/' test 
#2.Zeile mit Kommentar
# 4. Zeile mit Kommentar
daniel@daniel-laptop:/tmp$ sed -ne 's/^\(#\).*$/\1/p' test 
#
#
Oh, yeah!

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 24.04.2009 14:35:44

.
Zuletzt geändert von ghost90 am 09.03.2011 13:43:50, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Brauchste Programmierhilfe

Beitrag von Duff » 24.04.2009 14:46:46

Würde es z.B. mit sed machen.

Code: Alles auswählen

 sed -n '5p' file
Gibt die nur die 5 Zeile aus.
Oder wie meinst du das?
Oh, yeah!

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 24.04.2009 15:00:45

.
Zuletzt geändert von ghost90 am 09.03.2011 13:41:27, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Brauchste Programmierhilfe

Beitrag von Duff » 24.04.2009 15:23:33

Vielleicht kannst du mal ein Beispiel posten.
Was gegeben ist und wie du es gerne hättest.
Oh, yeah!

ghost90
Beiträge: 73
Registriert: 18.11.2007 11:50:51
Lizenz eigener Beiträge: MIT Lizenz

.

Beitrag von ghost90 » 24.04.2009 15:37:38

.
Zuletzt geändert von ghost90 am 09.03.2011 13:41:07, insgesamt 1-mal geändert.

Antworten