Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Variablen für ausführbare Dateien

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
xTraMen
Newbie
Newbie
Beiträge: 20
Registriert: 25. Jul 2005, 11:40

Variablen für ausführbare Dateien

Beitrag von xTraMen »

Hallo Leute,

ich habe mir eine Datei mit einer Befehlskette erstellt.
Diese Datei rufe ich in der KOnsole mit :

./sicherung

auf.

Gibt es nun eine Möglichkeit diese Datei mit Variablen so zu erstellen dass ich diese mit bestimmten Befehlen ausführen kann ?!.

Ich meine so wie z.b.

/etc/init.d/apache2 start

Also start ist in diesem Fall der Befehl.


Hintergrund ist dass ich eine Datei mit vielen Befehlen erstellen will damit ich bestimmte dinge nicht immer erst langwierig in die KOsnole eingeben möchte.

Meine Datei sieht z.b. so aus:


Code: Alles auswählen

tar cfv /root/backup/mysql.tar /var/lib/mysql/
tar cfv /root/backup/htdocs.tar /srv/www/htdocs/
scp /root/backup/htdocs.tar  root@xxxxxxxxxx:/root/backup_s4you/htdocs.tar
scp /root/backup/mysql.tar  root@xxxxxxxxxxxx:/root/backup_s4you/mysql.tar

Ich würde ganz gerne per Befehl hinter dem Dateinamen das PAcken und das Übertragen steuern können.
Sodass es nicht einfach hintereinander ausgeführt wird.

Geht das ?!
Könntet Ihr mir da ein wenig behilflich sein ?!.

Gruss und Danke.
taki
Advanced Hacker
Advanced Hacker
Beiträge: 974
Registriert: 30. Apr 2004, 17:40
Wohnort: Berlin

Beitrag von taki »

Du möchtest ein Script mit Argumenten aufrufen können.

Die Argumente stehen in Bash-Scripten in der Spezialvariable $*.

Diese kann man auswerten. Mit...

Code: Alles auswählen

#!/bin/bash
# Ein recht nutzloses Script, was nur als Beispiel dienen soll

for Argument in $*
do
   case $Argument
     hallo)
           echo "Hallo $USER";;
     tschuess)
           echo "Tschuess auch, und danke für den ><||||:> ";;
     *)
           echo "Was willst Du?";;
   esac
done
exit 0
...abgespeichert als test.sh kannst Du dann z.B. folgendes machen:

Code: Alles auswählen

bash-2.03$ test.sh hallo soso tschuess   
Hallo                                    
Was willst Du?                           
Tschuess auch, und danke für den ><||||:>
bash-2.03$                               
...oder so:

Code: Alles auswählen

bash-2.03$ test.sh trallalla tschuess   
Was willst Du?                           
Tschuess auch, und danke für den ><||||:>
bash-2.03$                               
...oder so:

Code: Alles auswählen

bash-2.03$ test.sh hallo trallalla   
Tschuess auch, und danke für den ><||||:>
Was willst Du?                           
bash-2.03$                               
SuSE 12.3 kernel 3.7.10-1.16-desktop, K Desktop Environment Version 4.10.5 r1 - Medion Titanium Aldi v. 03/2009
xTraMen
Newbie
Newbie
Beiträge: 20
Registriert: 25. Jul 2005, 11:40

Beitrag von xTraMen »

Danke Dir für die Hilfe, damit kann ich sicher was anfangen.

Allerdings bekomme ich mit Deinem Script folende Fehlermelsung:

./test.sh: line 7: syntax error near unexpected token `hallo'
./test.sh: line 7: ` hallo)'


Gruss
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

man bash -> suchen nach case

Code: Alles auswählen

case VAR in ...

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
xTraMen
Newbie
Newbie
Beiträge: 20
Registriert: 25. Jul 2005, 11:40

Beitrag von xTraMen »

OK danke habs nun kapiert.

Jetzt noch eine Frage.

Kann ich in der Datei auch das Passwort festlegen das ich zum einloggen per scp auf dem entfernten Rechner benötige.

Damit ich das nicht jedesmal neu eingeben muss ?!.

Gruss
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

ungut :) Passwörter niemals speichern, schau Dir lieber mal das public-key-Verfahren an, dann erzeugst Du einen ssh-key und legst den öffentlichen Teil auf der anderen Maschine ab (erstellen ohne Passphrase) jetzt kannst Du Dich ohne Passwort auf der anderen Maschine einloggen.

ok, Du könntest auch das Passwort speichern, musst dann aber mit expect arbeiten.

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Antworten