Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Shell: IP-Adresse in Oktett hintereinander ausgeben

Frage Entwicklung Batch & Shell

Mitglied: alaim89

alaim89 (Level 1) - Jetzt verbinden

23.05.2014, aktualisiert 28.05.2014, 1984 Aufrufe, 6 Kommentare

Hallo liebe Gemeinde,

ich versuche mich gerade in Bash/Shell scripting einzuarbeiten bzw. meine ersten schritte in der Programmierung. Der ein oder andere kennt das vielleicht, man spielt ein bisschen rum und erstellt sinnlose, aber dennoch lehrreiche Skripte/Programme :D (Ich hoffe das, dass auch Ihr so seht).

Bei mir ist das gerade so, ich möchte ein Bashskript schreiben, das mir die die IP-Adresse in Oktetts ausgibt.
Beispiel:

Als Eingabe gebe ich die Adresse so ein: 1921681780
Genau diese möchte ich in der Ausgabe als Oktett Darstellung haben: 192.168.178.0

Desweiteren möchte ich einen Bereich mit einbauen, wo ich genau sagen kann, gebe die Adresse bis 22 aus.
Beispiel:
zaehler -> 22, 192.168.178.1 192.168.178.2 usw. bis 192.168.178.23.

Vom Konstrukt her, habe ich mir gedacht, das auf jeden Fall if Entscheidungen eingebaut werden müssen, für die Überprüfung ob es sich um zahlen oder Buchstaben handelt die mit angegeben worden sind. Weiterhin soll die Fallunterscheidung nur akzeptieren wenn es sich tatsächlich um zahlen handelt.

Bei dem hochzählen habe ich an eine for-schleife gedacht. Diese soll auch nur ausgeführt werden, wenn tatsächlich in der Fallunterscheidung, es sich nur um zahlen handelt.


Meine Schwierigkeit die ich gerade habe, ist das ich nicht genau weiß wie ich das mit den Oktetten hinbekomme wie ober erwähnt.
Meine Überlegung dazu ist, ob man die Möglichkeit hat, wenn ich den Zahlenbereich eingebe, ob diese temporär gespeichert werden kann (sollte gehen) diese dann aber bei einem Aufruf ( einer Funktion ?, String-Manipulation (sed,awk,?) ) einsetzen kann und die dann als Oktett ausgegeben wird.


Ich bin noch am Anfang der Programmierung, deswegen schont trotzdem nicht mit Kritik beim falschen Ausdruck oder nicht ganz so galanter Überlegungen.


beste Grüße


alaim89
Mitglied: rubberman
23.05.2014, aktualisiert um 18:00 Uhr
Hallo alaim89,

mal unabhängig von Sprache und Umsetzung, nach welcher Regel wird denn
1921681780
als
192.168.178.0
und nicht etwa als
192.168.17.80
interpretiert?

Grüße
rubberman
Bitte warten ..
Mitglied: Lochkartenstanzer
23.05.2014, aktualisiert um 18:02 Uhr
Zitat von alaim89:

Ich bin noch am Anfang der Programmierung, deswegen schont trotzdem nicht mit Kritik beim falschen Ausdruck oder nicht ganz so
galanter Überlegungen.

Warum das komische Einagabeformat? wenn man eine IP-Adresse als dezimalzahl eingibt sollte man die auch als dezimalzahl zwischen 0 und 4 Mio. (2^32-1) interpretieren udn dementsprechend behandeln. oder der benutzer soll die Punkte mittippen, so daß man daraus ersehen kann, ob die nun als dezimalzahl oder als mehrere bytes interpretiert werden soll.

lks

PS: Deine eingabemethode kann zu mehrdeutigkeiten führen: Welche IP-Adresse bezeichenet 1111111111?
Bitte warten ..
Mitglied: alaim89
23.05.2014 um 18:18 Uhr
Hi @rubberman,
um auf die Interpretation zu kommen, da habe ich nicht zu ende gedacht , da habt ihr beide recht @lks.

Bei der sonstigen Überlegung, wisst ihr da, wie ich die Möglichkeit besitze, das die IP-Adresse nacheinander ausgegeben wird?
Ist die Umsetzung überhaupt so möglich, wie ich es oben beschrieben habe ??



beste Grüße

alaim89
Bitte warten ..
Mitglied: Lochkartenstanzer
23.05.2014 um 18:24 Uhr
Zitat von alaim89:

Ist die Umsetzung überhaupt so möglich, wie ich es oben beschrieben habe ??


Im Prinzip ja.

lks
Bitte warten ..
Mitglied: colinardo
LÖSUNG 23.05.2014, aktualisiert 16.12.2014
Hallo alaim89,
hier mal ein Gerüst zum Basteln. Denke davon kannst du eventuell was lernen
(Script erhebt keinen Anspruch auf Vollständigkeit)
01.
#!/bin/bash 
02.
# Regex für die IP-Adresse / Bereich 0.0.0.0 - 255.255.255.255 
03.
ip_regex="^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$" 
04.
 
05.
# Regex für die Bereichseingabe / Bereichsformat [0-255]-[0-255] 
06.
bereich_regex="^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])-(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$" 
07.
 
08.
echo "Bitte geben sie eine IP-Adresse ein:" 
09.
# Eingabe in Variable speichern 
10.
read ip 
11.
# IP prüfen 
12.
if [[ $ip =~ $ip_regex ]]; then 
13.
	echo "Bitte geben sie einen Bereich ein der ausgeben werden soll (im Format: 1-22)" 
14.
	# Host-Adressbereich in Variable speichern 
15.
	read bereich 
16.
	# Bereichseingabe prüfen 
17.
	if [[ $bereich =~ $bereich_regex ]];then  
18.
		# IP-Adresse auf Netz reduzieren (im Beispiel Maske 255.255.255.0) 
19.
		netz=${ip%.*} 
20.
		# von bis aufsplitten 
21.
		from=${bereich%-*} 
22.
		to=${bereich#*-} 
23.
                # prüfen ob Endbereich kleiner als Startbereich ist 
24.
                if [[ $to -lt $from ]]; then echo "Endbereich ist kleiner als Zielbereich!"; exit; fi 
25.
		# IP-Adressen sequentiell auflisten 
26.
		eval echo $netz.{$from..$to} | tr " " "\n" 
27.
	else	# Eingabeformat des Bereichs falsch 
28.
		echo "Format des Bereichs falsch!" 
29.
		exit 
30.
	fi 
31.
else	# Eingabeformat der IP falsch 
32.
	echo "IP hat nicht das korrekte Format!" 
33.
	exit 
34.
fi
Auf das wesentliche Reduziert: Einfache Auflistung von IP-Adressen in einem Bereich kannst du auf der Kommandozeile mit Hilfe von Brace Expansion so machen:
echo 192.168.1.{1..254} | tr " " "\n"
Damit lassen sich schöne Dinge anstellen

Viel Erfolg
Grüße Uwe
Bitte warten ..
Mitglied: alaim89
24.05.2014 um 14:29 Uhr
HI @colinardo,

erstmal danke für das Gerüst, das du bereitgestellt hast. Im laufe des Tages werde ich es mal genauer untersuchen.
Die Idee mit der Brace Expansion ist echt der Hammer :D . Das kannte ich noch gar nicht.


beste Grüße


alaim89
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
LAN, WAN, Wireless
gelöst TP-Link WA501G als Client einrichten - Keine IP Adresse wir bezogen (14)

Frage von bestelitt zum Thema LAN, WAN, Wireless ...

E-Mail
gelöst Falsche SMTP Server IP Adresse (6)

Frage von laster zum Thema E-Mail ...

Batch & Shell
Hostname bzw IP-Adresse in Excel eintragen (12)

Frage von EgonFrenz zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...