Hilfe bei Shell-Scripting

M

maze-m

Grünschnabel
Moinsen!

Ich soll für ein Labor im Studium folgende Skripte schreiben und bräuchte da etwas Unterstützung!

1. frename.sh <string>
Hängt für alle Dateien im aktuellen Verzeichnis die Zeichenkette string an den aktuellen Dateinamen an (Umbenennung).

2. try_host.sh [-h|-s <sec>] <hostname>|<IP-Address>
Der in der Befehlszeile angegebene Rechner (Hostname oder IP-Adresse) soll auf Erreichbar-keit hin überwacht werden. Dazu sendet das Skript in regelmäßigen Zeitabständen ein "ping"
an den angegebenen Rechner (nur ein ping Paket) und wertet den return value aus (siehe
man ping). War der ping Befehl erfolgreich, wird der Rechnername mit einem OK- Vermerk
ausgegeben, andernfalls wird er mit einem FAILED-Vermerk ausgegeben.
Das Skript unterstützt folgende Optionen (es darf aber nur eine Option gleichzeitig angege-ben werden):
-h : Nur Ausgabe der „Usage Message“
-s <sec> : Der ping wird zyklisch alle <sec> Sekunden ausgeführt.
Fehlt die –s Option, wird der ping alle 10 Sekunden ausgeführt.
Beispiel: Der Aufruf
bash try_host.sh -s 5 google.de
erzeugt alle 5 Sekunden eine Ausgabe der Art:
google.de OK
falls der Host google.de erreichbar ist, anderenfalls
google.de FAILED

c) Ändern Sie den Status jedes Skripts auf „ausführbar“ und starten sie beide Skripte jeweils
als Programm (ohne bash-Aufruf, aber mit Angabe des aktuellen Verzeichnisses, z.B. durch
Voranstellen von ./ )

d) Erweitern Sie den Inhalt der Umgebungsvariablen PATH so, dass immer das momentan
aktuelle Verzeichnis enthalten ist.


Kann mir jemand von euch ein paar Gedankenansätze geben, wie ich die Aufgaben lösen kann?
 
Zu 1.) Verzeichnis einlesen, alles was nicht '.' oder '..' heisst entsprechend mit 'mv' oder 'rename' umbenennen und fertig.
Zu 2.) Schau dir mal das check_host-Skript von Nagios an. Das dürfte entsprechendes bereits tun und muss nur modifiziert werden.
zu c.) Siehe Manpage zu chmod - man chmod.
zu d.) export PATH=.:$PATH
 
Zu 1.) Verzeichnis einlesen, alles was nicht '.' oder '..' heisst entsprechend mit 'mv' oder 'rename' umbenennen und fertig.

Okay, das Einlesen kann ich ja mit "ls" machen.... Aber ich muss die Verzeichnisnamen ja auch irgendwo speichern, um an diese danach den String dranhängen zu können, oder?

Hab das jetzt eben so versucht:
"ls -la | grep -d skip . .. | mv *.* $string"

Aber ich muss ihm ja auch irgendwo erstmal nen String übergeben, welchen er an ne Datei anhängen kann, oder? Wie lese ich den denn ein und speicher diesen später?

Dazu sei vielleicht zu sagen, dass der Dozent uns ein Beispielskript gegeben hat:

Code:
#!/bin/bash 
# <Description of this shell script>
# <Your name> 
# <Date>

# ------------------------------------------------------------
# This function shows the help text for this bash script
usage() { 
   echo "
	$0 [OPTIONS] [<user name>]
	Ask the user for her or his name and display a greeting 
	OPTIONS: 
	   -h: Display this help
	"
}

# This function asks the user for his name
ask_for_name() {
    echo "Please enter your name:" 
    read user_name
}

# ---------------------- main --------------------------------
# check parameters 
if [ $# -gt 1 ]; then
    usage
    exit 1
fi

case $1 in
    "-h")
        usage
        exit 0
        ;;
    "")
        ask_for_name
        ;;
    *)
        user_name=$1
esac

# print greetings
echo "
####################
 Hello $user_name,
 nice to meet you! 
####################
"
exit 0

# ---------------------- end ---------------------------------
 
Zuletzt bearbeitet:
(1) Welches OS?
(2) Welche Shell?

ansonsten - schau Dir mal
Code:
man rename
an...
 
was lt.

1. frename.sh <string>
Hängt für alle Dateien im aktuellen Verzeichnis die Zeichenkette string an den aktuellen Dateinamen an (Umbenennung).


genau auf Deine Anforderungen passen würde.

Ja, stimmt :)! Aber wie sag ich dann denn meinem Skript, dass es den alten Dateinamen "speichern" soll und daran nur den "String" anhängen soll. Zudem muss ich ja diesen auch irgendwie abfragen, wo ich auch noch nicht so wirklich weiß, wie ich das machen soll!
 
wozu brauchst Du das denn? Du hast die man-Page zu rename wohl noch nicht gelesen, oder?
 

Ähnliche Themen

OpenSUSE 12.1: Gnucash startet nicht mehr

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Samba-PDC mit XP Pro Clients- Domain nicht erreichbar

Server-Monitoring mit RRDTool

Zurück
Oben