Installationsscript für System -- Bitte um Hilfe
Installationsscript für System -- Bitte um Hilfe
Hallo Freunde!
Um mein System schnell wieder herstellen zu können, bzw. um einen x-beliebigen rechner neu aufzusetzen (was ich immer gleich mache) habe ich mir diesen script zusammen geschustert http://nopaste.debianforum.de/250
da ich nun aber nicht die große leuchte bin, im shell programmieren / scripten bitte ich euch um hilfe
Überall wo ich mittels read ne abfrage mache, möchte ich gern ne if-klausel danach haben, die ausließt ob j oder n geantwortet wurden und dann entsprechend drauf reagiert.
schaut es euch doch mal bitte. für kritik und hilfe bin ich jederzeit offen! danke!
Um mein System schnell wieder herstellen zu können, bzw. um einen x-beliebigen rechner neu aufzusetzen (was ich immer gleich mache) habe ich mir diesen script zusammen geschustert http://nopaste.debianforum.de/250
da ich nun aber nicht die große leuchte bin, im shell programmieren / scripten bitte ich euch um hilfe
Überall wo ich mittels read ne abfrage mache, möchte ich gern ne if-klausel danach haben, die ausließt ob j oder n geantwortet wurden und dann entsprechend drauf reagiert.
schaut es euch doch mal bitte. für kritik und hilfe bin ich jederzeit offen! danke!
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
du könntest das einspielen der pakete und deren konfig - das hast du gar nicht drinnen noch dazu bauen - könntest dann durch versch. files versch rechnertypen (nach späterer anwendung unterschiedlich on the fly generieren - also z.b. webserver, desktop maschine für sekrbunny usw.) ...
schau einmal da - musst allerdings ein paar links verfolgen bis du zu der set-selection sache kommst - orig. thread find ich gerade nicht ... verwirrter meandtheshell
http://www.debianforum.de/forum/viewtop ... 793#274793
schau einmal da - musst allerdings ein paar links verfolgen bis du zu der set-selection sache kommst - orig. thread find ich gerade nicht ... verwirrter meandtheshell
http://www.debianforum.de/forum/viewtop ... 793#274793
was meinst du damit? gib ma ne code-zeile als bsp!meandtheshell hat geschrieben:du könntest das einspielen der pakete und deren konfig - das hast du gar nicht drinnen noch dazu bauen
bis jetzt hab ich mit dem script meinen priv. rechner aufgesetzt und das klappt immer.
ich brauch noch so sachen wie:
- bestimmte zeilen in bestimmten dateien manipulieren (z.b. bei der sudoers sache. da muss ich im editor von hand den user eintragen. das möcht ich gern automatisch haben über die var $USER)
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
hmm zu deiner IF Abfrage
das REST speichert z.B. alles was nach einem Leerzeichen kommt..
also bei einer Eingabe von "j du arsch" ist unter ABFRAGE das "j" und unter REST findest du "du arsch"...
und um in eine Datei etwas einzufügen (einfach Methode)
ansonsten wenn du eine Zeile löschen willst und du weißt wie sie aussieht:
Code: Alles auswählen
ABFRAGE="nix"
while [ "$ABFRAGE" != "j" -a "$ABFRAGE" != "n" ]
do
read ABFRAGE REST
done
also bei einer Eingabe von "j du arsch" ist unter ABFRAGE das "j" und unter REST findest du "du arsch"...
und um in eine Datei etwas einzufügen (einfach Methode)
Code: Alles auswählen
echo "diesen Text möchte ich am Ende der Datei sehen" >> /pfad/zur/datei
Code: Alles auswählen
grep -v "diese Zeile soll raus" /pfad/zur/datei > /tmp/temporare_Datei
cp /tmp/temporaere_Datei /pfad/zur/datei
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
also dann benötigst du sowas wie "sed".. und da wirds jetzt komplizierter
Code: Alles auswählen
cat /pfad/zur/datei | sed -e 's/\(.*ich weiss diesen teil der Zeile.*)/\1 das wird jetzt angehaengt/' > /tmp/temporaer
cp /tmp/temporaer /pfad/zur/datei
die zeile kapier ich nicht!Savar hat geschrieben:hmm zu deiner IF Abfrage
Code: Alles auswählen
ABFRAGE="nix" while [ "$ABFRAGE" != "j" -a "$ABFRAGE" != "n" ] do read ABFRAGE REST done
das was ich will soll so aussehen!
Code: Alles auswählen
read abfrage
if abfrage = "j" or abfrage = "ja" or abfrage = "J" or abfrage = "Ja" then do
echo " ich mach jetzt was bei ja passieren soll"
end if
else echo "jetzt mache ich dinge die passieren wenn nicht ja / j eingegeben wurde"
und jetzt geht das programm normal weiter
endprogramm
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
dann so..
Code: Alles auswählen
read EINGABE REST
EINGABE=`echo $EINGABE | tr '[A-Z]' '[a-z]'`
if [ "$EINGABE" = "ja" -o "$EINGABE" = "j" ]
then
#das was du halt tun willst
else
#das was du bei "nein" tun willst
fi
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Code: Alles auswählen
Am Anfang solltes du über die $UID feststellen ob du Root bist (oder über irgendeine andere Technik) damit das Skript nicht mit tausend Fehlermeldungen durchläuft
7. read USER
=>
7. read USER REST
14. cp ./usb-storage /etc/hotplug/usb/usb-storage (und ähnliche Zeilen)
=>
relative Pfade mag ich nicht besonders.. du könntest es über eine Variable machen oder am Anfang des Skriptes den Pfad des eigenen Skripts feststellen und diesen in einer Variablen benutzen
Sonst weiß ich nicht was du gerne hättest..
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
aktuelle Verzeichnis
Userid steht in der automatisch vorhandenen $UID Variable
Der Pfad in dem ein Skript selber liegt, ist etwas kniffliger (bzw. ich kanns gard nicht testen und weiß nicht genau obs einfacher geht)...
Möglich ist es durch eine Kombination aus "pwd" und der Variable $0 aber es wird bestimmt einfacher gehen (weil mit den beiden ist es recht kompliziert und theoretisch von mir grad nicht zu leisten.. müsste an ner Linux Kiste sitzen)
Code: Alles auswählen
pwd
Der Pfad in dem ein Skript selber liegt, ist etwas kniffliger (bzw. ich kanns gard nicht testen und weiß nicht genau obs einfacher geht)...
Möglich ist es durch eine Kombination aus "pwd" und der Variable $0 aber es wird bestimmt einfacher gehen (weil mit den beiden ist es recht kompliziert und theoretisch von mir grad nicht zu leisten.. müsste an ner Linux Kiste sitzen)
dann werd ich ein wenig am script rumschreiben und die änderungen machen, die du mir vorgeschlagen hast bzw. das einbauen was ich will!
werd noch ein bisschen google befragen und freu mich darauf, dass du heute aber wieder mal zuhause sein wirst und dann die sache mit dem Pfad ausprobieren kannst und hier postern!
wär zumindest sehr nett von dir, wenn du mir da weiterhelfen könntest!
ich danke dir schonmal für deine mühen
werd noch ein bisschen google befragen und freu mich darauf, dass du heute aber wieder mal zuhause sein wirst und dann die sache mit dem Pfad ausprobieren kannst und hier postern!
wär zumindest sehr nett von dir, wenn du mir da weiterhelfen könntest!
ich danke dir schonmal für deine mühen
Ich hab den script jetzt wie folgt geändert!
http://nopaste.debianforum.de/263
bitte schaut nochmal drüber ob das so ok ist und funktioniert!
danke
http://nopaste.debianforum.de/263
bitte schaut nochmal drüber ob das so ok ist und funktioniert!
danke
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
erstmal dein PFAD Problem
Code: Alles auswählen
PFAD=`echo $0 | sed -e 's/\(.*\)\/[^\/]\{1,\}/\1/'`
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
hmm...
ansonsten hab ich auf die Schnelle nichts weiter gefunden
Code: Alles auswählen
PHAT=`pwd` <-- eher PATH oder? (also überall ändern :-))
weiß auch nicht ob das so geht... TEST... nee nach dem Test von mir gehts so nicht, also einfach den Trick aus meinem Posting was ich vorher geschrieben hatte
CHK_ROOT=`echo $UID` <-------- umständlich (siehe Abfrage darunter)
if [ "$CHK_ROOT" = "0" ] <---- einfache gehts so:
if [ $UID -ne 0 ]
then
echo "" && echo "" <-- geht (naja geschmackssache :-) ) eleganter
echo -ne "\n\n"
PATH stimmt schon.. .sorry.. da war ich wohl gestern aben zu müde als ich den script geschrieben hab. hast ja recht..
komisch das `pwd` nicht geht... naja... egal.. ich werd deine methode nehmen
den trick mit dem "-ne" kannte ich noch nicht, wie ich schon erwähnte, keine ahnung vom shell-scripten. da werd ich den jetzt gleichmal einbauen!
komisch das `pwd` nicht geht... naja... egal.. ich werd deine methode nehmen
den trick mit dem "-ne" kannte ich noch nicht, wie ich schon erwähnte, keine ahnung vom shell-scripten. da werd ich den jetzt gleichmal einbauen!
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
pwd funktioniert aus einem einfachen Grund nicht..
Beispiel.. du bist unter
/home/deinname
und dein Skript liegt unter
/usr/sbin/
dann führst du es per
$ skriptname
aus und im Skript ist dann $0 = /usr/sbin/skriptname
aber pwd gibt dem Skript /home/deinname weil es von dieser Position aufgerufen wurde
Beispiel.. du bist unter
/home/deinname
und dein Skript liegt unter
/usr/sbin/
dann führst du es per
$ skriptname
aus und im Skript ist dann $0 = /usr/sbin/skriptname
aber pwd gibt dem Skript /home/deinname weil es von dieser Position aufgerufen wurde