Wie schreibt man scripts ?

Status
Für weitere Antworten geschlossen.

SkyMaster

Neuer User
Mitglied seit
1 Dez 2005
Beiträge
52
Punkte für Reaktionen
0
Punkte
0
Hallo,
Mich würde mal Interessieren wie mann scribst schreibt (wie die ausehen müsten) um bestimmte befehle auszuführen.
Ich habe leider NULL Ahnung was das Scribt schreiben unter Linux angeht.

Folgendes ist mein ZIEL.
Ich habe auf der FritsBox ein Server am laufen.
Diesen aus der Debug zustarten ist ja kein Problem.
Den manuell neu zu starten (per Telnet) ist auch OK nur etwas umständlich :) (da dan immer viel zu tippern ist)

Also wie müste ein Sript ausschauen wenn Folgendes passieren soll:

1) Server anhalten (killall program1)

2) Nun sollen 5 Dateien von USB-Stick ins TMP-verzeichniss geschrieben werden und dabei die alten überschriben werden)

3) das Programm starten.

In der debug.cfg wir bei ein Reboot der Box das Programm wie folgt gestartet:
cp /var/media/ftp/FlashDisk-Partition-0-1/andy/datei1 /var/tmp/datei1
cp var/media/ftp/FlashDisk-Partition-0-1/andy/datei2.cfg /var/tmp/datei2.cfg
cp var/media/ftp/FlashDisk-Partition-0-1/andy/datei3_cfg /var/tmp/datei3_cfg
cp var/media/ftp/FlashDisk-Partition-0-1/andy/datei4.list /var/tmp/datei4.list
cp var/media/ftp/FlashDisk-Partition-0-1/andy/datei5 /var/tmp/datei5
sleep 2
cd /var/tmp
chmod +x ./datei1
chmod +x ./datei2.cfg
chmod +x ./datei3_cfg
chmod +x ./datei4.list
export LD_LIBRARY_PATH LD_LIBRARY_PATH=/var/tmp
sleep 2
/var/tmp/datei1

Könnt Ihr mir da weiterhelfen, wie ausführbare Scribt ausschauen muss ?
den es kommt schonmal vor das der Server sich aufhängt, dam möchte ich Ihn germa mal ebend neu starten OHNE die gane Fritzbox resetten zu müssen.
Ich danke schonmal im vorraus für eure Mühe.

Gruß
Andy
 
Zuletzt bearbeitet:
Zunächst mal schreibt man das so: SCRIPT ;-)

Ein Script, genauer: Shell-Script, unter Linux beginnt mit "#! /bin/sh" und enthält dann eine Reihe von Anweisungen, die man auch manuell eintippen könnte, endet normalerweise mit "exit 0". Suche doch bitte mal per Google nach den Möglichkeiten in einer Unix-Shell...

Ein Script "datum.sh" zur Ausgabe des aktuellen Datums mit Uhrzeit
Code:
#! /bin/sh
# Script zur Ausgabe von Datum und Uhrzeit
#
# 20061029 gandalf94305 - erste Version
#
date
exit 0
Damit das Script ausführbar ist, sollte es entsprechend Berechtigungen erhalten (manuelle Eingabe dieses Kommandos in die Shell):
Code:
# chmod 755 datum.sh

In Deinem Fall wäre das also etwas wie
Code:
#! /bin/sh

# Programm beenden
killall program
# Kurz warten, bis das Programm beendet ist
sleep 3
# Nochmals abschiessen, falls nicht erfolgt
killall program
# Kopieren von Dateien von /a/b nach /var/tmp
cp /a/b/c1 /var/tmp/c1
cp /a/b/c2 /var/tmp/c2
# Starten des Programms mit den entsprechenden Parametern
# (wie auch immer das Programm zu starten ist)
/x/y/program -v
# Das war's
exit 0
So, was wolltest Du denn nun genau wissen?

--gandalf.
 
Hallo gandalf

danke für dein Tipp,aber hier liegt mein Problem ,
genau so habe ich es eigentlich gemacht, doch nur ist es leider so, das er aus ein Script raus angeblich die Verzeichnisse nicht findet :-(

Wenn ich die Eintragungen direkt ins Telnet eingebe dann geht es alles (auch aus der Debug.cfg raus.
Wenn ich aber nun es in ein Script packe und dann das Script starte kommt folgendes bei raus_
# sh andy-r.sh
: not found2:
: no process killed
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

: no process killed
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

cp: var/media/ftp/FlashDisk-Partition-0-1/andy/cwshare.cfg: No such file or dir
ctory
cp: var/media/ftp/FlashDisk-Partition-0-1/andy/andy_cfg: No such file or direct
ry
cp: var/media/ftp/FlashDisk-Partition-0-1/andy/ignore.list: No such file or dir
ctory
cp: var/media/ftp/FlashDisk-Partition-0-1/andy/libgcc_s.so.1: No such file or d
rectory
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

cd: 13: can't cd to /var/tmp
: No such file or directory
: No such file or directory
: No such file or directory
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

: can't load library 'libgcc_s.so.1'
#

das Scribt schaut so aus
#! /bin/sh

killall andymips
sleep 3
killall andymips
sleep 2
cp /var/media/ftp/FlashDisk-Partition-0-1/andy/andymips /var/tmp/andymips
cp var/media/ftp/FlashDisk-Partition-0-1/andy/cwshare.cfg /var/tmp/cwshare.cfg
cp var/media/ftp/FlashDisk-Partition-0-1/andy/gbox_cfg /var/tmp/andy_cfg
cp var/media/ftp/FlashDisk-Partition-0-1/andy/ignore.list /var/tmp/ignore.list
cp var/media/ftp/FlashDisk-Partition-0-1/andy/libgcc_s.so.1 /var/tmp/libgcc_s.so.1
sleep 2
cd /var/tmp
chmod +x ./andymips
chmod +x ./cwshare.cfg
chmod +x ./andy_cfg
chmod +x ./ignore.list
export LD_LIBRARY_PATH LD_LIBRARY_PATH=/var/tmp
sleep 2
/var/tmp/andymips
exit 0
 
Zuletzt bearbeitet:
SkyMaster schrieb:
angeblich die Verzeichnisse nicht findet :-(
nicht angeblich, sondern du hast Dich im Script vertippt:
Code:
cp [COLOR=Red]/[/COLOR]var/media/ftp/FlashDisk-Partition-0-1/andy/andymips /var/tmp/andymips
[COLOR=Red] cp var/media/ftp/FlashDisk-Partition-0-1/andy/cwshare.cfg /var/tmp/cwshare.cfg
cp var/media/ftp/FlashDisk-Partition-0-1/andy/gbox_cfg /var/tmp/andy_cfg
cp var/media/ftp/FlashDisk-Partition-0-1/andy/ignore.list /var/tmp/ignore.list
cp var/media/ftp/FlashDisk-Partition-0-1/andy/libgcc_s.so.1 /var/tmp/libgcc_s.so.1[/COLOR]
Du hast den führenden Backslash vergessen.
 
Hallo das war es aber wohl auch nicht , oder ich habe noch mehr vergessen :)
den nun findet er nach wie vor z.B. /var/tmp nicht :-(

(ich hab edie führende Backslash nun zugefügt, und nun kommt folgendes..

# sh andy-r.sh
: not found2:
: no process killed
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

: no process killed
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

cd: 13: can't cd to /var/tmp
BusyBox v1.00-pre3 (2006.03.24-08:21+0000) multi-call binary

Usage: sleep N

: can't load library 'libgcc_s.so.1'
#

und starten tuht daher natürlich auch nix :-(
 
Halb-OT ein genereller Tip nebenbei:
Ein sehr gutes Buch über Linux und seine Artverwandten ist meines Erachtens "Wie werde ich UNIX-Guru?" von Arnold Willemer, erschienen bei Galileo Computing. Es hat mir schon einige gute Dienste geleistet und viele Fragen beantwortet.
Das beste daran: Es gibt das Buch auch als völlig kostenlos auf der Seite des Verlages als Openbook, also das komplette Buch zum Online-Lesen: http://www.galileocomputing.de/openbook/unix_guru/
Meines Erachtens sehr gut geeignet für Linux-Einsteiger, die nicht völlige DAU's sind! :D
 
Hallo Andy.

Was mich sehr stutzig macht:
Warum funktionieren noch nicht mal die sleep-Befehle?

Sind im Script vielleicht Windows-Zeilenumbrüche vorhanden?
Oder sonstige "komische Zeichen" an Zeilenende?

Gruß
Hermann
 
HAllo, coll das werde ich mir mal zur Brust nehmen :)

Aber nun zum Hautproblen, was ich auch sehr seltsam finde, ist das ich das Script nur mit "sh andy-r.sh" aufrufen kann (und dann halt die Oben beschriebenen Fehler kommen)
Wenn ich
andy-r.sh oder .andy-r.sh
eingebe heist es immer das andy-r.sh nicht gefunden werden konnte ??!!
Normalerweise sollte ich das doch auch einfach über den namen aufrufen können , oder (sprich "andy-r.sh)

Irgentwie scheint mir das alles sehr seltsam ....

Achja, natürlich habe ich voher ins Verzeichniss gewechselt wo das Script liegt.
und auch chmod 755 habe ich gesetzt ....
 
Es sind jedenfalls keine Backslashes, die fehlen. Es fehlen Slashes, auch bekannt als "/".

Dein Script müsste also so lauten (vorausgesetzt, /var/media/ftp... ist wirklich der Stick):
Code:
[COLOR=Black] #! /bin/sh
# Applikation stoppen
killall datei1
sleep 2

# Variablen für die Quell- und Zielverzeichnisse
stick=/var/media/ftp/FlashDisk-Partition-0-1
ziel=/var/tmp

# Dateien kopieren (sleep ist unnötig)
cp $stick/andy/datei1 $ziel/datei1
cp [/COLOR][COLOR=Black]$stick/andy/datei2.cfg $ziel[/COLOR]/datei2.cfg
cp $stick/andy/datei3_cfg $ziel/datei3_cfg
cp $stick/andy/datei4.list $ziel/datei4.list
cp $stick/andy/datei5 $ziel/datei5

# Permissions richtig setzen
cd /var/tmp
chmod +x datei1 datei2.cfg datei3_cfg datei4.list

# Zielverzeichnis in Library-Pfad übernehmen
if [ "x${LD_LIBRARY_PATH}" = "x" ] ; then
  LD_LIBRARY_PATH=$ziel
else
  LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ziel
fi
export LD_LIBRARY_PATH 

# Neustart der Applikation
./datei1

exit 0
Und bitte vergiss nicht, die Leerzeichen genau so zu schreiben wie oben! Das Script andy.sh mit chmod 755 auf Executable setzen... und wenn "." im PATH nicht enthalten ist (für den "root" User ist das Standard), dann kannst Du das auch nicht durch blosse Eingabe des Namens ausführen. Starte es also z.B. mit "./andy.sh"

--gandalf.
 
Hallo, danke für die Hilfe!

Es läuft nun *freu*

Seltsammerweise hat "Herman" den richtigen richer gehabt.
es wahren falsche Zeichen vorhanden :-(
Hinter jeder Zeile stand plötzlich ein ^M

Warum weis ich nun nicht, ich habe es eigentlich wie IMMER mit "TextPad" gemacht, das ist eigentlich ein Linuxfähiger Editor und hat bis jetzt auch noch Nie Probleme gemacht...
Zu sehen war der Fehler erst im Editor vom MC

OK trozdem danke für eure Hilfe

Gruß
Andy
 
Hi, ja leider :) warum Textpad das auch immer gemacht hat....
Ich habe es danach noch parmal getestet, und da ging es wider 100% mit Textpad....

naja, wie auch immer nun lüppt es ja wider und wenns wider mal problemme gibt, schau ich wohl voher mit MC ins File :)

Nochmal danke für eure Tipps

Gruß
Andy
 
Ggf. beachtet Textpad die bereits vorhandene End-of-Line Konvention und behält diese bei, d.h. waren vorher Zeilen mit CRLF beendet, dann wird das auch für neue Zeilen so gemacht... waren vorher nur LF an den Zeilenenden, macht Textpad das so weiter.

--gandalf.
 
AHA, wider was dazugelernt :)
danke
 
gandalf94305 schrieb:
Es sind jedenfalls keine Backslashes, die fehlen. Es fehlen Slashes, auch bekannt als "/".

Hmpf! :(
Damit hast Du natürlich vollkommen recht. Aber wenn man gerade im Büro sitzt und sich mit lauter Windows-Zeug beschäftigen muss, kann dieser Habbit mit den Backslashes doch mal verziehen werden oder? ;)

Jedenfalls empfehle auch ich SkyMaster eingehende Lektüre.
Er könnte sich so viel Arbeit ersparen. Vermutlich kennen so ziemlich alle anderen seine Probleme. Hatten wir doch anfangs auch alle (zumindest wenn man von Windows umgestiegen war). :-Ö

Aber: SkyMaster, weiter so! Nicht aufgeben. Bist doch schon auf einem guten Weg. Als sehr guter Editor unter Windows kann ich Dir auch noch UltraEdit empfehlen.
Damit hat z.B. das Problem mit Windowszeilenumbrüchen ein Ende...
 
Als sehr guten Editor unter Windows kann ich Emacs empfehlen :)

--gandalf.
 
VIM und EMACS sind beides gute Editoren, keine Frage.
Auch das Argument, Übung in VI hilft SkyMaster auf der FB am meisten ist ein bestechendes Argument.

Persönlich - und da stehe ich sicherlich nicht alleine - mag im täglichen Umgang weder vi oder gar emacs. (Ich persönlich verabscheue emacs, da sich dieser einfach nicht an den SAA-Standard oder sonstige Usability-Standards hält. Um emacs sinnvoll einsetzen zu können muss man sich schon mehrere Monate Zeit nehmen um die zig tausend tastenkombinationen auswendig zu lernen...)

Aber diesen Glaubenskrieg sollten wir hier wohl besser nicht weiterführen. VI und EMACS sind nunmal in ihrer Bedienung einzigartig. Da SkyMaster die beiden Editoren nicht so wirklich kennt, empfehle ich sie ihm in diesem Stadium auch nicht, da er damit dann noch ganz andere Baustellen aufreißt...

Er braucht einfach einen brauchbaren Editor, dem er sagen kann was zu tun ist. Ein Umstieg von UltraEdit zu z.B. Kate ist für ihn dann kein Problem mehr. vi und emacs sind da eher die königsdisziplin.

Nur weil jemand für Silvester mal eine eigene Rakete bauen will muss er doch nicht gleich Luft- und Raumfahrttechnik studieren, oder?
 
Soll ich euch mal was sagen was mir persöhnlich ab liebsten währe......
Der Editor aus den MC ;-)
Nur blöd das ich das DS-Mod nicht auf mein FBF 7170 mit der FW 29.04.21 draufbekomme, das teil streik da fürchterlich ....

Aber wie auch Immer, ich werde das alles schon hinbekommen :)
Und wenn ich etwas zeit habe dann werde ich mir auch das Oben beschrieben Online-Buch mal vorknöpfen ;-)
Un wer weis, Heute die Totale LAIE und morgen der Neuste ImageSchreiber *lach* (das war ein Scherz)

So schnell gebe ich nie auf, aber jeder weiß ja ...gute Dinge brauchen Weile

gruß
Andy
 
Status
Für weitere Antworten geschlossen.
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.