Übung 4: Schreiben eines Shell-Skripts



Ähnliche Dokumente
Übung: Entwickeln eines Shell-Skripts

Objektorientiertes Programmieren mit Suse Linux

Linux Prinzipien und Programmierung

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Eprog Starthilfe. 5. Oktober Einleitung 2

Artikel Schnittstelle über CSV

Stapelverarbeitung Teil 1

Eine Einführung in die Installation und Nutzung von cygwin

Luis Kornblueh. May 22, 2014

Standard Daten-Backup-Script

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Windows 7 Winbuilder USB Stick

Sichern der persönlichen Daten auf einem Windows Computer

Installationsanleitungen

Aufgabensammlung IT Shellprogrammierung Teil I

Hilfe zur Urlaubsplanung und Zeiterfassung

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Excel Funktionen durch eigene Funktionen erweitern.

Der zweite all unsere Datenbanken. Dieser Befehl ist etwas komplexer, aber bis auf das Passwort (kursiv fett) so zu übernehmen:

Adminer: Installationsanleitung

Übung: Verwendung von Java-Threads

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

! " # $ " % & Nicki Wruck worldwidewruck

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Firefox: Die Lesezeichen im Griff

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

Neue Steuererklärung 2013 erstellen

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

PowerMover. Eine Zusatz-Anwendung für Outlook-PowerUser. Damit können eingehende s schneller verwaltet werden. Vasquez Systemlösungen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

1) JAVA JRE auf der QNAP Box installieren

KEIL software. Inhaltsverzeichnis UPDATE. 1. Wichtige Informationen 1.1. Welche Änderungen gibt es?

Patch Management mit

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Installationsanleitung. Update ATOSS SES 2.40 für Windows ATOSS Server

SEMINAR Modifikation für die Nutzung des Community Builders

Inkrementelles Backup

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Datenübernahme aus Profi-Cash

Zeichen bei Zahlen entschlüsseln

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Kleines Handbuch zur Fotogalerie der Pixel AG

Dateimanagement in Moodle Eine Schritt-für

Übungen Programmieren 1 Felix Rohrer. Übungen

SFTP SCP - Synology Wiki

Outlook Vorlagen/Templates

Die Dateiablage Der Weg zur Dateiablage

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann,

Eine Anwendung mit InstantRails 1.7

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

[ FOXMAIL EINE ALTERNATIVE ZU OUTLOOK]

Übung - Konfigurieren einer Windows 7-Firewall

Arbeiten mit dem Outlook Add-In

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

FTP-Server einrichten mit automatischem Datenupload für

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Das Einzelplatz-Versionsupdate unter Version Bp810

Benutzerverwaltung mit Zugriffsrechteverwaltung (optional)

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Datei Erweiterungen Anzeigen!

Kompilieren und Linken

Erstellen einer digitalen Signatur für Adobe-Formulare

Anleitung: Webspace-Einrichtung

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

1. Einführung. 2. Die Abschlagsdefinition

Projekte Packen, Kopieren und Versenden

Die R-Homepage R herunterladen

Modul 2.2: Zugang zu Ihren Teilnehmer-Ordnern via ftp (zum Dateientransfer):

Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Visualisierung auf Büro PC s mit dem ibricks Widget

AutoTexte und AutoKorrektur unter Outlook verwenden

Druckerscriptsprache

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Anleitung Typo3-Extension - Raumbuchungssystem

Datensicherung. mit. Ocster Backup Pro. it.kröger Hinweis:

1. Einführung. 2. Weitere Konten anlegen

Einführung in PHP. (mit Aufgaben)

Moodle Update V 1.9.x V 2.4.x

Step by Step Webserver unter Windows Server von Christian Bartl

Sage Start Einrichten des Kontenplans Anleitung. Ab Version

TopKontor - Kurzleitfaden

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

I. Travel Master CRM Installieren

Erwin Grüner

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

GEONET Anleitung für Web-Autoren

Durchführung der Datenübernahme nach Reisekosten 2011

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Einführung in TexMaker

Transkript:

Aufgabenteil 1 Ziel der Übung Übung 4: Schreiben eines Shell-Skripts Anhand eines einfachen Linux-Skripts sollen die Grundlagen der Shell-Programmierung vermittelt werden. Das für die Bash-Shell zu erstellende Shell-Skript verdeutlicht Basiskonzepte wie beispielsweise das Pipe-Konzept. Zum Erlernen der Syntax (z.b. Kontrollstrukturen) sei auf Internetquellen verwiesen. 1 Einführung Eine Shell ist in Linux ein Kommandointerpreter, der in einem Terminal ausgeführt wird. Die Shell ist auf den ersten Blick vergleichbar mit der Kommandozeile aus der Microsoft-Welt. Neben dem Ausführen einfacher, einzelner Befehle ermöglicht eine Shell jedoch unter Linux äußerst leistungsfähige Programme (sog. Shell-Skripte) zu programmieren, die in der Praxis zum Beispiel zur Administration von Servern eingesetzt werden. So werden beispielsweise automatische Backups von Dateien mit Shell-Skripten realisiert. Wie wird ein Shell-Skript erstellt? Um den Quelltext zu erstellen, ist ein einfacher Texteditor wie vi, nano oder emacs ausreichend. Kurze Bedienungsanleitungen für vi sind auf mehreren Webseiten zu finden. 2 Nachfolgend ist ein sehr einfaches Skript zu sehen. #!/bin/bash echo "Servus Linux!" Ganz am Anfang eines Skripts wird die Shell spezifiziert, mit der die weiteren Anweisungen interpretiert werden soll. In der zweiten Zeile wird dann ein Text ausgegeben. Hat man das Skript erstellt und in einer Datei abgespeichert, so muss man diese Datei mit dem Befehl chmod als ausführbar (Modus: +x) markieren. Das Skript kann anschließend mit./<dateiname> ausgeführt werden. Exkurs: Shell, Bash oder doch Bourne-Shell? Shell: Unter einer Shell versteht man die traditionelle Benutzerschnittstelle unter Unix. Der Begriff Shell ist allerdings als Oberbegriff für verschiedene Kommandozeileninterpreter zu verstehen, sodass viele unterschiedliche Shells existieren. Diese unterscheiden sich meist in den verfügbaren Befehlen bzw. in der Syntax dieser. Nachfolgend ist eine kurze Auflistung über die gängigsten Shells gegeben: Bourne-Shell(sh): Die Bourne-Shell ist Vorfahre vieler heutiger Shells. Noch heute finden sich in vielen Unix-Distributionen Nachfolger der Bourne-Shell. Bash (Bourne-again-shell): Die Bash ist die Standard-Shell für viele Linux-Distributionen. Für weiterführende Informationen bitte die Man-Page aufrufen (man bash). 1 Ein möglicher Suchbegriff bei Google wäre Linux Shell Programmierung. 2 Ein möglicher Suchbegriff bei Google wäre vi editor übersicht. @Prof. Dr. Peter Mandl Seite 1/6

Weitere Shells: Korn-Shell(ksh), C-Shell(csh), Thompson-Shell(osh) Das Pipe-Konzept Unter einer Pipe versteht man unter Linux (oder Unix) die Möglichkeit, die Standardausgaben eines Programms in die Standardeingabe eines anderen Programms zu schreiben. Die Ausgaben, die ein Programm liefert, können also als Eingabe an ein anderes übergeben werden, z.b.: ls wc -w In vorhergehendem Beispiel wird die Ausgabe von ls (zur Erinnerung: ls listet den Inhalt eines Verzeichnisses auf) durch Nutzung des Pipe-Zeichens nach wc (Word-Count) umgeleitet. Statt einer Liste von Dateien und Unterverzeichnissen erhält man dadurch die Anzahl der Wörter, die der ls-befehl ausgibt. Argumente an ein Skript übergeben Für gewöhnlich möchte man ein Skript durch Benutzereingaben parametrisieren. Argumente, die an ein Shell-Skript übergeben werden, werden durch Variablen repräsentiert. Variablen beginnen immer mit dem Zeichen $. Durch die Übergabe von Parametern sind einige Variablen schon vorbelegt. Variablenname Bedeutung $# Anzahl der übergebenen Argumente $0 Name des ausgeführten Skripts $1 Wert des 1. Parameters $2 Wert des 2. Parameters Beim Aufruf eines Skripts werden die Parameter einfach durch Leerzeichen getrennt. Befehle zu Kontrollstrukturen und Bedingungen 3 if / then / else Verzweigungsmöglichkeit anhand einer Bedingung. if [ <Bedingung> ]; then <Code> else <Code> fi Beispiel siehe nachfolgende Übung. 3 Weitere ablaufsteuernden Befehle sowie weitere zu den vorgestellten Befehlen können z.b. der folgenden Website entnommen werden: http://de.wikibooks.org/wiki/linux- Kompendium:_Shellprogrammierung (abgerufen am 15.03.2014 15:15 Uhr) @Prof. Dr. Peter Mandl Seite 2/6

Überprüft Dateien/Verzeichnisse und vergleicht Werte. Expression -a Expression: und -Verknüpfung String1 = String2: Vergleich von Strings -e FILE: Überprüft ob Datei existiert <Expression> e.sh && echo Datei vorhanden echo Datei nicht vorhanden [ e.sh ] && echo Datei vorhanden echo Datei nicht vorhanden for - Schleife Kopfgesteuerte Schleife Syntax for <Bedingung> do <Code> done Beispiel 1: for ((i = 0 ; i < 10 ; i++)) do echo $i done Beispiel 2: for i in {0..10} do echo $i done while - Schleife Kopfgesteuerte Schleife Syntax while <Bedingung> do <Code> done Beispiel while (i < 10) do echo $i done Hinweis: Wie im letzten Beispiel ersichtlich wird, kann man statt des -Befehls auch eckige Klammern ( [ und ] ) verwendet werden. Bei dieser Verwendung muss jedoch auf die Leerzeichen vor bzw. nach der eckigen Klammer geachtet werden. Übung: Überprüfen Sie nun, ob in Ihrem Home-Verzeichnis ein Ordner mit dem Namen Test angelegt ist! (Hinweis: suchen Sie in der Man-Page des -Befehls nach einem geeigneten Parameter hierfür) Der gerade gelernte -Befehl wird häufig in Verzweigungen in sog. if-anweisungen benötigt. Der Aufbau der if-anweisungen ist der Syntax aus Java sehr ähnlich. @Prof. Dr. Peter Mandl Seite 3/6

Folgendes Skript überprüft, ob der erste mit dem zweiten Parameter identisch ist. Es soll die Funktionsweise von if-anweisungen demonstrieren. #!/bin/bash if [ $1 = $2 ]; then echo Die Parameter sind gleich else echo Die Parameter unterscheiden sich fi Übung: Legen Sie eine Datei mit obigem Quellcode als Inhalt an und bringen Sie es zum Ablauf. (Hinweis: Evtl. ist hier der touch-befehl bzw. der bereits bekannte Befehl vi hilfreich) Nachdem Sie die Datei angelegt und abgespeichert haben, müssen Sie diese noch ausführbar machen (betrachten Sie hierzu ggf. das Linux-Berechtigungskonzept aus Übung 01 erneut). Anschließend wechseln Sie in das Verzeichnis, in der Sie die Datei abgespeichert haben und führen diese mit dem Befehl./<Dateiname> <Parameter1> <Parameter2> (z.b../compare Linux Linux) aus. Vorsicht: Achten Sie bei Verwendung von Copy&Paste aus dem Script in die Linux- Kommandozeile darauf, dass damit auch nicht sichtbare Sonderzeichen übertragen werden können, die der Bash-Interpreter nicht interpretieren kann. Also lieber abtippen! @Prof. Dr. Peter Mandl Seite 4/6

Aufgabenstellung: Arbeiten Sie sich in die Grundlagen der Shell-Programmierung ein. Als Einstiegspunkt für die Einarbeitung könnte beispielsweise die Website mit der folgenden URL helfen: http://de.wikibooks.org/wiki/linuxkompendium 4 (Suche nach Shellprogrammierung und Programmablaufkontrolle ). Versuchen Sie nun an folgendes Skript zu erstellen und zum Ablauf zu bringen. Das zu erstellende Skript mit dem Dateinamen mvprot soll im aktuell gewählten Verzeichnis alle Dateien mit der angegebenen Endung in ein neu erstelltes Unterverzeichnis verschieben und die Anzahl der verschobenen Dateien sowie deren Namen falls gewünscht in eine Protokolldatei im Quellverzeichnis schreiben. Das Skript besitzt also die drei Parameter Dateiendung, Name des Unterverzeichnisses und ein Flag für die Auswahl, ob ein Protokoll über den Vorgang erstellt wird. Zum Entwickeln und Testen Ihrer Lösung legen Sie sich bitte ein neues Verzeichnis mit einigen Testdateien an. Viel Vergnügen! Protokoll ($3) gewünscht? ja nein Zielverzeichnis ($2) erstellen Alle Dateien mit angegebener Endung ($1) in Zielverzeichnis verschieben Protokollieren wie viele Dateien in welches Verzeichnis zu verschieben sind Abbildung 1 - Schematischer Ablauf der Aufgabenstellung Noch ein Hinweis: Mit dem Kommando AnzahlDateien=`ls *.txt wc -w` weisen Sie der Variable AnzahlDateien die Anzahl der Dateien mit der Endung.txt, die sich im aktuellen Verzeichnis befinden, zu. Durch die Anwendung der sog. Backquotes (Vorsicht: nicht die einfachen Hochkommata) wird eine Kommadosubstituton durchgeführt. Das bedeutet, dass die in Backquotes eingeschlossenen Kommandos zusammenhängend ausgeführt werden und die Ausgabe der gesamten Befehlsfolge als Ergebnis in die Variable geschrieben wird. Alternativ dazu kann man das Kommando in der bash wie folgt notieren: AnzahlDateien=$(ls *.txt wc w) Mit diesem Mechanismus könnten Sie z.b. die Anzahl der verschobenen Dateien zählen. Aber es gibt auch andere Möglichkeiten. 4 Letzter Zugriff am 15.03.2014, 16:00 Uhr) @Prof. Dr. Peter Mandl Seite 5/6

Aufgabenteil 2 Erweiterte Aufgabenstellung: Versuchen Sie nun, Ihr Programm so zu erweitern, dass eine Prüfung der übergebenen Parameter stattfindet. Zudem soll überprüft werden, ob das zu erstellende Verzeichnis bereits existiert. In diesem Fall soll dem Anwender eine entsprechende Fehlermeldung ausgegeben werden (Hinweis: Vielleicht hilft Ihnen der Befehl weiter). Ferner ist gefordert, eine Hilfefunktion zu implementieren, die eine kurze des Programms und der möglichen Parameter liefert. Erweiterte Informationen zur Shell-Programmierung Manchmal möchte man wissen, ob ein Skript erfolgreich abgeschlossen, oder ob es vorher unerwartet beendet wurde. Hierzu liefert jedes Skript automatisch einen sog. Return-Code. Ebenso ist es manchmal in einem zu erstellenden Skript hilfreich ist, die Anzahl der übergebenen Parameter zu ermitteln. Auch dies lässt sich abfragen. Informieren Sie sich zuerst über die Funktionsweise folgender Parameter der Shell- Programmierung und prüfen Sie anschließend, ob Sie diese evtl. in Ihrem erweiterten Skript verwenden können. $# $? $0 Ein weiterer hilfreicher Befehl lautet bash -x <Programmname>. Informieren Sie sich, was dieser macht und en Sie ihn anhand Ihres zuvor erstellten Skripts. Weitere hilfreiche Linux-Befehle Neben den bisher vorgestellten Linux-Befehlen existieren noch eine ganze Reihe weiterer Befehle, die einem Administrator die Arbeit erleichtern. Nachfolgend sind einige, häufig benötigte Kommandos aufgelistet. Informieren Sie sich kurz über das jeweilige Kommando und beschreiben Sie in einem Satz, was dieses macht. Testen Sie es anschließend an einem Beispiel Ihrer Wahl. grep find sort awk sed read (Bauen Sie diesen Befehl in Ihr erweitertes Skript sinnvoll ein) cut @Prof. Dr. Peter Mandl Seite 6/6