matze31
Anmeldungsdatum: 25. Oktober 2015
Beiträge: 487
|

26. November 2020 22:49
(zuletzt bearbeitet: 26. November 2020 23:11)
Hallo, ich bin noch in den Anfängen im Thema shell Scripten, habe jetzt mit meinen bisherigen Wissen ein Script gebaut was in der Firewall prüft ob meine aktuelle ip noch gültig ist, wenn nicht wird sie gelöscht (und wenn ich das Script erweitere dann wieder neu erstellt in der ufw).
Vielleicht kann ja mal jemand drüber schauen ob es Fehler gibt oder so. Im Prinzip funzt es ja, aber ich möchte ja lernen. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | #!/usr/bin/bash
aktuelle_ip=$(nslookup dyndns | grep "Address:" | grep -v "127" | cut -d: -f2 | tr -d " ")
ufw_ip=$(ufw status numbered | grep "1111)
# grep "1111" ist der port
if [ -n "$ufw_ip" ]
then
echo "ja"
ufw_number=$(sed 's/\[//g' <<<"$ufw_ip" | cut -d] -f1)
if [[ -z $(grep $aktuelle_ip <<< $ufw_ip) ]]
then
echo "different"
yes | ufw delete "$ufw_number"
fi
else
echo "keine ip"
fi
|
|
kB
Supporter
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 4623
Wohnort: Münster
|

27. November 2020 08:31
matze31 schrieb: […]
#!/usr/bin/bash
aktuelle_ip=$(nslookup dyndns | grep "Address:" | grep -v "127" | cut -d: -f2 | tr -d " ")
ufw_ip=$(ufw status numbered | grep "1111)
Wie bereits an der Formatierung durch die Farbgebung erkennbar, wird alles nach dem von mir markierten Zeichen falsch interpretiert. Entferne es. Möglicherweise gibt es dann im folgenden Text weitere Syntaxfehler.
|
matze31
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2015
Beiträge: 487
|

27. November 2020 08:35
Oh sorry, habe ich wohl zum Schluss vergessen.
Ist das andere so ok? Bei einer if-Anweisung kann man mit einfachen [ oder mit doppelten [[ arbeiten?
|
Yosijo
Anmeldungsdatum: 6. Februar 2012
Beiträge: 33
Wohnort: Berlin
|

27. November 2020 20:55
Ein paar dinge gibt es: 1. Benutze für das Shebang lieber /usr/bin/env, das ist stabiler. 2. Da du grep nutzt, solltest du dich mal mit -E und -P befassen. RegEx ist hier das Zauberwort und könnte dir einiges erleichtern. 3. Nutzte mehr ${variable_name}, das ist sicherer/stabieler und du kannst gleich Parameter Substitution nutzten. 3.1. Parameter Substitution: https://tldp.org/LDP/abs/html/parameter-substitution.html 4. Schreibweise und Einrückungen. Eine gängige Schreibweise für if und schleifen die ich nur mal erwähnt haben wollte wäre folgende: 1
2
3
4
5
6
7
8
9
10
11
12
13
14 | …
if [[ -z test_variable ]]; then
foo
else
baa
fi
…
while true; do
if [[ -z test_variable ]]; then
foo
else
baa
fi
done
|
5. Wenn du dich da weiter Entwickeln willst, würde ich recht früh empfehlen sich mit Git zu befassen. Das sind so die ersten Dinge die mir dazu eingefallen sind.
|
matze31
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2015
Beiträge: 487
|

28. November 2020 08:22
|
matze31
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2015
Beiträge: 487
|

28. November 2020 11:10
Anbei nochmal eine Frage, wozu ist das 'git' so wichtig? Ist das, wenn man richtig (viel) mit bash programmiert, so von Vorteil?
|
kB
Supporter
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 4623
Wohnort: Münster
|

28. November 2020 12:12
matze31 schrieb: […] wozu ist das 'git' so wichtig?
GIT ist eine Methode und eine Plattform zur Verwaltung von Software-Projekten und den Quelltext-Dateien dieser Projekte. Da es mit Textdateien arbeitet, ist es für jede Programmiersprache anwendbar. Dringend zu empfehlen ist es bei größeren Projekten, die also aus mehreren oder sogar vielen Dateien bestehen, an denen mehrere Programmierer gleichzeitig arbeiten, die in mehreren Versionen existieren.
Ist das, wenn man richtig (viel) mit bash programmiert, so von Vorteil? Für ein einzelnes kurzes Shell-Skript ist GIT Overkill, aber natürlich ist seine Verwendung nicht verboten. Wenn das Skript etwa 200 Zeilen (meine persönliche Schmerzgrenze, kein Absolutum) überschreitet, sollte man überlegen, ob man die dem Problem angemessene Programmiersprache verwendet.
|
matze31
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2015
Beiträge: 487
|

28. November 2020 12:22
Also kann man git auch für andere Programmiersprachen nehmen? kB schrieb: Wenn das Skript etwa 200 Zeilen (meine persönliche Schmerzgrenze, kein Absolutum) überschreitet
meinst du damit, dass ein shell script das nicht sollte?
|
Yosijo
Anmeldungsdatum: 6. Februar 2012
Beiträge: 33
Wohnort: Berlin
|

28. November 2020 14:35
Ich denke hier geht es stark um die Komplexität eines Projektes bszw. Scriptes. Sowohl für die Frage, ob Git, ls auch die Frage ob man in eine Programmiersprache nutzten sollte.
Ich kann nur aus eigener Erfahrung sagen, das ich mit der Zeit sehr viele Scripte geschrieben haben die unübersichtlich, schlecht Kommentiert waren usw. und dadurch heute in einem einsamen Ordner vergammeln.
Sicherlich eine der Folgen, weil ich spät angefangen habe, zu Kommentieren ,aber auch git einzusetzen. Dadurch kann ich heute, schwer einzelne Entwicklungsstufen des Scripts nicht mehr nachvollziehen und obwohl ich es geschrieben habe, sitze ich davor und darf es mir im Grunde noch mal von Anfang bis zum ende durchlesen.
Da hat die Einführung von Git mir schon sehr geholfen, da ich Strukturierter an die Änderungen gehe und diese Historisch auch nachvollziehen kann.
Das die Programmiersprache angeht, habe ich sicherlich dutzende Scripte die bspw. in Python einfacher Umzusetzen gewesen wären. Da mein KnowHow hier aber immer noch dürftig ist, belasse ich es nach wie vor, bei Bash.
|
matze31
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2015
Beiträge: 487
|

28. November 2020 14:51
OK vielen dank für das ausführliche Feedback.
Ich habe mich schon seit 4 Jahren mit Python beschäftigt und komme ganz gut zurecht.
Aber ich werde auf jeden Fall mal git testen.
|