Ausführbares Script entwerfen

xtratz

Gesperrt
Hallo Leute,

für eine Datensicherung auf einem Server verwende ich folgende Befehle die ich nacheinander per KOnsole eingebe:

Code:
tar cfv /root/backup/mysql.tar /var/lib/mysql/
tar cfv /root/backup/htdocs.tar /srv/www/htdocs/

scp /root/backup/mysql.tar  root@xxxxxxxxxxxx:/root/backup/mysql.tar
scp /root/backup/htdocs.tar  root@xxxxxxxxxxxx:/root/backup/htdocs.tar

Kann man das nicht in ein ausführbares Script schreiben, dies per KOnsole aufrufen damit der Ablauf automatisiert wird.?.

Ist so ein Script kompliziert?!.

Hat jemand einen Ansatz für einen Linux Einsteiger ?!.

Gruss und Danke.
 
Schreib die Befehle mit vi o.ä. in eine Datei und gebe ihr dann das execute-Recht. That`s it!
Code:
$ vi backup
#
# My Backup-Script
#
tar cfv /root/backup/mysql.tar /var/lib/mysql/
tar cfv /root/backup/htdocs.tar /srv/www/htdocs/
scp /root/backup/mysql.tar  root@xxxxxxxxxxxx:/root/backup/mysql.tar
scp /root/backup/htdocs.tar  root@xxxxxxxxxxxx:/root/backup/htdocs.tar

$ chmod +x backup
$ ./backup
 
Hi und danke für die schnelle Antwort.
Das is ja recht easy.

Aber geht das jetzt auch das ich das Passwort des entfernten Servers in der Datei hinterlege, damit ich es nicht mehr eingeben muss ?.
Damit ich das dann als Cronjob ausführen lassen Kann.

Und kannst Du mir die Variablen erklären die Du dem Script beigefügt hast ?!.

Wäre echt nett von Dir.

DAnke.
 
Zuletzt bearbeitet:
xtratz hat gesagt.:
Hi und danke für die schnelle Antwort.
Das is ja recht easy.

Aber geht das jetzt auch das ich das Passwort des entfernten Servers in der Datei hinterlege, damit ich es nicht mehr eingeben muss ?.
Nein, das geht normalerweise nicht (soweit ich weiß). Aber du könntest verschiedene Methoden von SSH benutzen um den Login ohne Passwort zu machen, dann solltest du aber nicht unbedingt als root die Verbindung herstellen. Da mußt du einfach mal die Dokumentation von ssh lesen.

xtratz hat gesagt.:
Und kannst Du mir die Variablen erklären die Du dem Script beigefügt hast ?!.
Da sind doch überhaupt keine Variablen drin? :confused:

Das $ Zeichen steht für den Standard Prompt von Bash, d.h. die Zeilen mit diesem Zeichen sind Zeilen, die du so in ein Terminal eingeben solltest. Du Zeilen mit einem führenden # sind Kommentare.
 
Aha.

Wenn ich dann also das Backupscript aufrufe dann mit z.b. :

/root/sicherung vi backup

Wird alles was unterhalb von $vi backup steht ausgeführt.
So könnte man dann mehrere Funktionen einbauen oder ?!

Also selbse Prinzip wie /etc/init.d/apache2 restart

Hab ich das richtig verstanden mit dem Zeichen.

Schade ist nur das ich das ja dann nicht als Cronjob ausführen kann wenn man das Passwort nicht festlegen kann.

Gruss
 
Code:
Wenn ich dann also das Backupscript aufrufe dann mit z.b. :

/root/sicherung vi backup
Nein.
vi ist ein Texteditor. Mit dem Befehl vi backup erstellst bzw. bearbeitest du eine Datei.
Das kannst du genausogut auch mit joe (ebenfalls ein Texteditor auf Shell-Ebene) oder auch mit kwrite (unter KDE) machen. Das spielt keine Rolle.

Wenn das Script mit dem entsprechenden Inhalt existiert, musst du ihm nur noch die execute Rechte geben und kannst es dann wie folgt ausführen:
Code:
$ ./backup
oder
$ sh backup

Und wie meinst du das mit dem Passwort? Kommst nach Eingabe eines Befehls ein Prompt, wo man ein Passwort eingeben muss?
 
xtratz hat gesagt.:
Aha.

Wenn ich dann also das Backupscript aufrufe dann mit z.b. :

/root/sicherung vi backup

Wird alles was unterhalb von $vi backup steht ausgeführt.
Nein. Du solltest in der Konsole den Teil hinter dem $ Zeichen eintippen und mit Enter bestätigen. (das $ Zeichen steht ja normalerweise schon da, außer du bist root, dann ist es das # Zeichen).

Wenn du also in die Shell in der Konsole "vi backup" eintippst, dann führt das dazu, dass der Editor "vi" gestartet wird und die Datei namens "backup" in diesen Editor geladen wird.

Der vi ist allerdings recht gewöhnungsbedürftig (verlassen kannst du ihn, indem du ein paarmal wie wild auf Escape hämmerst und dann :q!<Enter> drückst ;)).

Die 8 darauffolgenden Zeilen in dem Textabschnitt von suye waren der Inhalt der Datei "backup". (Also die ersten 3 Zeilen Kommentare, die anderen Zeilen Befehle die nacheinander ausgeführt werden. Diese Zeilen solltest du einfach in den Editor eingeben und dann speichern.

Die 2 Zeilen mit dem $ Zeichen danach, solltest du wieder in deine Shell in der Konsole eingeben, wenn du den Editor verlassen hast.

Aber ich sehe gerade, da fehlt noch eine wichtige Zeile am Anfang der Datei. Man muß angegeben mit welchen Interpreter die Datei abgearbeitet werden soll. Die erste Zeile sollte so aussehen:
Code:
#!/bin/sh

xtratz hat gesagt.:
Schade ist nur das ich das ja dann nicht als Cronjob ausführen kann wenn man das Passwort nicht festlegen kann.
Wie gesagt, man kann das als Cronjob ausführen lassen sowie man SSH so konfiguriert hat, das bestimmte Benutzer von bestimmten Rechnern ohne Passwort einloggen können.
 
deepthroat hat gesagt.:
Aber ich sehe gerade, da fehlt noch eine wichtige Zeile am Anfang der Datei. Man muß angegeben mit welchen Interpreter die Datei abgearbeitet werden soll. Die erste Zeile sollte so aussehen:
Code:
#!/bin/sh
Ok, hast Recht, ist besser und schöner!
Es hätte aber auch ohne funktioniert ... :-(
 
Und wie meinst du das mit dem Passwort? Kommst nach Eingabe eines Befehls ein Prompt, wo man ein Passwort eingeben muss?

Ja genau ! Es kommt dann eine Passwortabfrage.

Aber SSH so zu konfigurieren das lass ich mal denn da steig ich noch nicht durch.

Übrigens ich habe festgestellt das man das Script auch ausführen kann ohne das man SH eingibt.

Oder meint Ihr was anderes ?!.

Gruss
 
suye hat gesagt.:
Es hätte aber auch ohne funktioniert ... :-(
Aber nur, wenn die aktuelle Shell auch die Shell ist, für die man das Skript erstellt hat.

/edit: OK. Also in diesem speziellen Falle, da nur andere Programme aufgerufen wurden und keine Shell Befehle drin stehen, hätte es wohl mit fast jeder Shell funktioniert - aber bestimmt nicht mit scsh (Scheme Shell). :)
 
Zuletzt bearbeitet:
Zurück