IP / Netz auslesen - sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

IP / Netz auslesen - sed

Beitrag von Quickly1971 » 24.02.2018 15:36:55

Hallo Leute.

Jetzt schaue ich mal ganz aus der Röhre. Habe ich noch nie ausgelesen. Geht bestimmt mit sed. :roll:

Habe einen ProxMox installiert und einen Wert in der Postfix - main.cf eintragen.

Ich kann die IP auslesen (ifconfig geht nicht).

Code: Alles auswählen

dnsdomainname -i
# Ausgabe
192.168.0.195
Soweit toll.
Jedoch brauche ich:

Code: Alles auswählen

192.168.0.0/24
Da habe ich gerade absolut keine Ahnung wie ich :google: dannach fragen soll. Könnt Ihr mir da auf die Sprünge helfen?

THX, Lars
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: IP / Netz auslesen - sed

Beitrag von pangu » 24.02.2018 17:20:02

Code: Alles auswählen

ip -o -4 route | grep / | awk '{print $1}'

?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: IP / Netz auslesen - sed

Beitrag von breakthewall » 24.02.2018 17:26:03

Dafür kannst ip nutzen:

Code: Alles auswählen

ip addr show dev eth0 | awk '/inet/ {print $2}'

Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Re: IP / Netz auslesen - sed

Beitrag von Quickly1971 » 25.02.2018 11:05:00

Hallo Ihr.

VIelen Dank für die hilfreichen Antworten.

Habe der das "?" vom "pangu" gesenen.
Ja, leider fehlen mir immer wieder die Basic´s. Doof. Jedoch gibt es hier, am Arsach dre Welt, keine sinnvollen Kurse. Und für weiter weg fehlt mir meist die Zeit.

Deswegen belästige ich Euch mit diesen blöden kleinen Fragen.

Vielen Dank. Lars :hail:
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Re: IP / Netz auslesen - sed

Beitrag von Quickly1971 » 25.02.2018 12:31:36

Hi.

Und falls dieser Post noch mals gesehen wird... ich habe hier wieder was mit sed.
Habe das Problem schon anders gelöst. Ich möchte jedoch, wie Oben bereits geschrieben, was lernen um Euch dann mal weniger mit diesen (für Euch) blöden Fragen zu befreien. :facepalm:

Ich möchte:
- den Hostnamen auslesen
- jede Zeile mit dem Wert entfernen.

Der Host ist: proxmox1

Das hier klappt natürlich, jedoch habe ich dann den festen Hostnamen drin.

Code: Alles auswählen

sed -i '/prox*/d' /etc/aliases
Das hier klappt nicht. :x

Code: Alles auswählen

sed -i '/$(hostname)/d' /etc/aliases
Oder auch versucht, geht nicht

Code: Alles auswählen

HOSTNAME="$(cat /etc/hostname)"
sed -i '/$(HOSTNAME)/d' /etc/aliases
Kann mir da noch mal jemand auf die Sprünge helfen, bitte.

THX
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

Benutzeravatar
MSfree
Beiträge: 10727
Registriert: 25.09.2007 19:59:30

Re: IP / Netz auslesen - sed

Beitrag von MSfree » 25.02.2018 12:43:55

Quickly1971 hat geschrieben: ↑ zum Beitrag ↑
25.02.2018 12:31:36

Code: Alles auswählen

sed -i '/$(hostname)/d' /etc/aliases
Was wilst du denn damit überhaupt erreichen?
Weißt du überhaupt, wofür die Datei /etc/aliases dient?

Mir scheint, du wuselst ohne Ziel und zuviel Trial'n'Error auf dem System rum.

Den Hostnamen liest man übrigens ganz einfach mit dem Befehl hostname aus, alternativ kannst du auch cat /etc/hostname verwenden.

Unter Linux gibt ews ein ziemlich umfangreiches Anleitungssystem, es nennt sich man. Und wenn man nach eine Stichwort, wie z.B. hostname suchen will, gibt man apropos hostname ein. Das liefert einem eine Liste von man-pages, die das Stichwort enthalten.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: IP / Netz auslesen - sed

Beitrag von eggy » 25.02.2018 13:03:41

Quickly1971 hat geschrieben: ↑ zum Beitrag ↑
25.02.2018 12:31:36
Ich möchte:
- den Hostnamen auslesen
- jede Zeile mit dem Wert entfernen.
schau Dir mal grep an, inbesondere -v

Quickly1971
Beiträge: 110
Registriert: 08.05.2009 15:26:32

Re: IP / Netz auslesen - sed

Beitrag von Quickly1971 » 25.02.2018 13:22:42

Erst mal THX für Eure Antworten.

Wie man den Hostnamen, FQDN usw. ausliest ist mir bekannt. Es geht mir also nicht um das auslesen der Variablen sebst.
Es geht um das Suchen der Variable und dann das Löschen dieser Zeile mit der Variable $hostname.

Warum?
Ich habe mir, um etwas zu lernen, per Dialog ein kleines Menue gestrickt. Hier ist ein Punkt Postfix einrichten um per SMTP Nachrichten zu versenden.
In der /etc/aliases habe ich mit dem Script einige Einträge hinerlegt. Das klappt auch soweit gut.
Es geht auch gar nicht (in diesem Fall) um die explizite Datei /etc/aliases. Es geht um´s Prinzip, also wieder Lernen!

Ich kann schon mal:
Fixe Werte auslesen, ersetzen, mit Variablen ersetzen, Zeilen löschen. Also suche Wert proxmox1 und ersetze Wert, bzw. lösche Zeile. ...alles ganz toll.
Jedoch schaffe ich es nicht einen Systemwert, Variable als Suchbegriff zu definieren, in diesem Fall $hostname als Suchbegriff
Ich habe schon diverse Seiten gesucht und gelesen. Leider keine Lösung gefunden/nicht verstanden. :google:
Deswegen schreibe ich ja hier.

Vielleicht weis ja jemand eine Lösung?!?
Der Mensch hat drei Wege, klug zu werden.
Erstens durch Nachdenken: Das ist der edelste.
Zweitens durch Nachahmen: Das ist der leichteste.
Drittens durch Erfahrung: Das ist der bitterste.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: IP / Netz auslesen - sed

Beitrag von breakthewall » 25.02.2018 15:18:07

Quickly1971 hat geschrieben: ↑ zum Beitrag ↑
25.02.2018 12:31:36

Code: Alles auswählen

sed -i '/$(hostname)/d' /etc/aliases
Das kann auch nicht funktionieren. Innerhalb von Singlequotes kann eine Variable oder Komando-Substitution nicht expandieren. Da passiert nichts solange keine Doublequotes ("") gesetzt werden. Und wie ja bereits gesagt wurde, solltest dich mehr mit den Manpages der einzelnen Programme beschäftigen, insbesondere mit der Manpage der Bash selbst.

Des weiteren kannst zum Testen von Shellscripten oder Kommandozeilen, auch https://www.shellcheck.net verwenden, oder Du installierst shellcheck über den Paketmanager. Damit bekommst ausgiebige Informationen über Fehler, und wie sie behoben werden können. Zu jedem Fehler gibt es auch ein Wiki auf der Github-Seite des Entwicklers, wo das nochmals anhand von Beispielen erklärt wird, warum etwas falsch bzw. nicht ratsam ist. Das ist besser als nur vergeblich auszuprobieren.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: IP / Netz auslesen - sed

Beitrag von Cae » 25.02.2018 15:29:21

Wenn du Postfix konfigurieren willst... warum nimmst du dann nicht Debiandebconf, welches... Postfix konfiguriert? Fuer den Anfang:

Code: Alles auswählen

# debconf-show postfix | less
Du kannst dir die relevanten Werte speichern, aendern und anschliessend per debconf-set-selections wieder einpflegen. Wenn du das schon (z.B. geskriptet) vor der Postfix-Installation machst, ist die Config direkt wie gewuenscht.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: IP / Netz auslesen - sed

Beitrag von pangu » 26.02.2018 09:06:24

das Fragezeichen am Ende meines geposteten Codes war so gemeint "Funktioniert das bei dir? Mal probieren ..."

der Code von breakthewall würde auch IPv6 Informationen ausspucken und das gewünschte Ergebnis brechen. Außerdem gibt er nicht das Subnet aus so wie es der Threadersteller haben wollte.

Aber auch mein geposteter Code wird unter Umständen bei bestimmten Systemen ggf. weird results liefern, ich weiß es nicht. Es ist nur auf die Schnelle und ungeprüft von mir gepostet worden. Soeben an drei Hosts probiert klappt das jedoch. Du müsstest dich einfach näher damit auseinandersetzen, einige Tips hast du nun ja bekommen. Das beste und sicherste wäre meiner Ansicht nach du arbeitest mit "ip addr show" und baust die ausgespuckten Informationen mit "awk" so um, dass du dein Subnet angezeigt bekommst.

Viel Erfolg
Pangu
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Antworten