Benutzer-Werkzeuge

Webseiten-Werkzeuge


network:shell_scripting

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
network:shell_scripting [18.09.2014 21:13] richardnetwork:shell_scripting [14.07.2016 10:59] richard
Zeile 1: Zeile 1:
 +~~DISCUSSION|Ergänzungen~~
 ====== Kurzeinführung in Skripting ====== ====== Kurzeinführung in Skripting ======
  
Zeile 54: Zeile 55:
 Wie erreicht man nun ein gutes Ergebnis? Hierzu sollte man sich überlegen, welche Befehle benötigt werden. Diese kann man zunächst händisch auf der Kommandozeile ausprobieren und sie anschließend in seine Textdatei aufnehmen. Hat man alle benötigten Befehlszeilen zusammen, dann geht es an das Sortieren. Häufig ist die Reihenfolge wichtig (z.B. bei Firewall-Regeln oder beim Aktivieren einer Route). Hierbei ist es zweckmäßig zunächst einen definierten Zustand herzustellen.  Wie erreicht man nun ein gutes Ergebnis? Hierzu sollte man sich überlegen, welche Befehle benötigt werden. Diese kann man zunächst händisch auf der Kommandozeile ausprobieren und sie anschließend in seine Textdatei aufnehmen. Hat man alle benötigten Befehlszeilen zusammen, dann geht es an das Sortieren. Häufig ist die Reihenfolge wichtig (z.B. bei Firewall-Regeln oder beim Aktivieren einer Route). Hierbei ist es zweckmäßig zunächst einen definierten Zustand herzustellen. 
  
-**Beispiel: Routen in die Routing-Tabelle bringen**+==== Beispiel: Routen in die Routing-Tabelle bringen ====
  
 Arbeitet man an einem Testsystem könnte man z.B. zunächst die eingesetzten Interfaces löschen((flush)). Dadurch werden auch alle Routen, die bereits anderweitig auf diesen Interfaces konfiguriert wurden gelöscht. Diese könnten ansonsten eventuell stören. Arbeitet man an einem Testsystem könnte man z.B. zunächst die eingesetzten Interfaces löschen((flush)). Dadurch werden auch alle Routen, die bereits anderweitig auf diesen Interfaces konfiguriert wurden gelöscht. Diese könnten ansonsten eventuell stören.
Zeile 69: Zeile 70:
 # Default-Route setzen (Standard-Gateway 10.0.0.1) # Default-Route setzen (Standard-Gateway 10.0.0.1)
 sudo ip route add default via 10.0.0.1 sudo ip route add default via 10.0.0.1
 +</file>
 +
 +==== Beispiel: Automatische Synchonisieren von Dateien mit Luckybackup ====
 +
 +Mit dem folgenden Script lässt sich die Synchronisation unter Linux automatisieren. Voraussetzung dafür ist das automatische Einbinden von USB-Laufwerken.
 +Ein paar Anpassung sind nötig:
 +  - Pfad zum USB-Stick anpassen (hier ''/media/USERNAME/USB_STICK_NAME''
 +  - mit Befehl ''touch  /media/USERNAME/USB_STICK_NAME/stick.ready'' Testdatei auf dem USB-Stick erzeugen
 +  - Profil-Name von Luckyback eintragen (Default ist: default)
 +
 +Wie funktioniert das Ganze? 
 +
 +Das Script prüft, ob die Datei ''/media/USERNAME/USB_STICK_NAME/stick.ready'' (natürlich auf den richtigen Stick) existiert. Sollte sie nicht existieren, dann legt
 +sich das Script für 1 Sek schlafen. Wenn die Datei da ist, also der Stick vom System automatisch eingebunden wurde, dann wird Luckybackup mit dem Default-Profile ausgeführt.
 +Hier können auch andere Profile ausgewählt werden. Dazu muss ''default'' durch den entsprechenden Profilnamen ersetzt werden.
 +
 +<file bash luckybackup.sh>
 +#!/bin/bash
 +# 1. Pfad zum USB-Stick anpassen (hier /media/USERNAME/USB_STICK_NAME
 +# 2. mit 'touch  /media/USERNAME/USB_STICK_NAME/stick.ready'  Testdatei auf dem USB-Stick erzeugen
 +# 3. Profil-Name von Luckyback eintragen (Default ist: default)
 +x=0
 +while [ "$x" -lt 100 -a ! -e /media/USERNAME/USB_STICK_NAME/stick.ready ]; do
 +         x=$((x+1))
 +         sleep .1
 +         echo "Laufwerk fehlt"
 + done
 + echo "Profile -default- wird synchronisiert!"
 + luckybackup --silent default
 +</file>
 +
 +===== Python =====
 +
 +Eine weitere sehr mächtige Variante Prozesse zu automatisieren, liegt in der Verwendung eine Script-Sprache wie ''python'' oder ''perl''.
 +
 +<file python python_sample.py>
 +#!/usr/bin/python
 +# coding: utf8
 +
 +# Import für Call https://docs.python.org/2/library/subprocess.html
 +from subprocess import call
 +
 +# Import für os.system https://docs.python.org/2/library/os.html
 +import os
 +
 +call(["ls", "-l"])
 +
 +os.system("ps aux | grep -i apache > output_file")
 +
 +
 +# User anlegen
 +def createUser(name,username,password):
 +    encPass = crypt.crypt(password,"22"  
 +    return  os.system("useradd -p "+encPass+ " -s "+ "/bin/bash "+ "-d "+ "/home/" + username+ " -m "+ " -c \""+ name+"\" " + username)
 +
 +testVar = raw_input("Ask user for something.")
 +print (testVar)
 </file> </file>
network/shell_scripting.txt · Zuletzt geändert: 30.04.2023 15:57 von richard

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki