Installationsscript für System -- Bitte um Hilfe

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Installationsscript für System -- Bitte um Hilfe

Beitrag von comes » 17.05.2005 17:08:43

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!
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 17.05.2005 17:19:49

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 :wink:

http://www.debianforum.de/forum/viewtop ... 793#274793

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 17.05.2005 17:23:07

meandtheshell hat geschrieben:du könntest das einspielen der pakete und deren konfig - das hast du gar nicht drinnen noch dazu bauen
was meinst du damit? gib ma ne code-zeile als bsp!
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)
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 17.05.2005 17:27:34

comes hat geschrieben: was meinst du damit? gib ma ne code-zeile als bsp!
follow me - the link said ... see above

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.05.2005 09:59:24

nochjemand ideen?

ich möchte gezielt einträge in ner datei manipulieren (via script)
- so möchte ich z.b die fstab per script erweitern und wieder etwas entfernen
- bestimmte dateien sollen in einer bestimmten zeile etwas hinzufügt werden

wie realisiert man sowas in einem script
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2005 10:15:05

hmm zu deiner IF Abfrage

Code: Alles auswählen

ABFRAGE="nix"

while [ "$ABFRAGE" != "j" -a "$ABFRAGE" != "n" ]
do
   read ABFRAGE REST
done
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)

Code: Alles auswählen

echo "diesen Text möchte ich am Ende der Datei sehen" >> /pfad/zur/datei
ansonsten wenn du eine Zeile löschen willst und du weißt wie sie aussieht:

Code: Alles auswählen

grep -v "diese Zeile soll raus" /pfad/zur/datei > /tmp/temporare_Datei
cp /tmp/temporaere_Datei /pfad/zur/datei
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.05.2005 10:21:04

sagen wir mal so! ich weiß nur einen teil der zeile die gelöscht werden soll!

und ich möchte in mitten einer bestehenden datei etwas eintragen!
in zeile 10 von 102 möchte ich einen eintrag erweitern, als bsp
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2005 10:23:17

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
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.05.2005 10:39:33

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
die zeile kapier ich nicht!

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
in die abfrage soll noch ein "missachte_großundkleinschreibung" glaube mit charup oder so was in der art
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2005 10:51:37

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
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.05.2005 10:55:58

das sieht doch schon sehr nach dem aus was ich haben will, ich bedanke mich für deine hilfe!

jetzt wär ich dir noch sehr dankbar, wenn du dir den script nochmal anschaust und mir sagst, was ich auf jedemfall ändern sollte und was ich anders machen könnte!
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2005 11:03:58

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
Ansonsten vielleicht das ganze modularer gestalten..?

Sonst weiß ich nicht was du gerne hättest..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.05.2005 11:07:47

gut, dann bin ich bis dahin schonmal zufriden dass es nichts zu meckern gibt!

wie les ich die userid aus?
wie les ich den pfad des scriptes aus bzw. das aktuelle verzeichnis?
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2005 11:11:50

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)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.05.2005 11:15:46

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! :lol:

wär zumindest sehr nett von dir, wenn du mir da weiterhelfen könntest!

ich danke dir schonmal für deine mühen
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 19.05.2005 09:29:45

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
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 19.05.2005 09:58:25

erstmal dein PFAD Problem

Code: Alles auswählen


PFAD=`echo $0 | sed -e 's/\(.*\)\/[^\/]\{1,\}/\1/'`

MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 19.05.2005 10:00:50

meinst du?
über PHAT=`pwd` hat der das in der console eigentlich kapiert gehabt... aber ich teste mal deine version, sieht mir nach besser aus
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 19.05.2005 10:04:48

hmm...

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"
ansonsten hab ich auf die Schnelle nichts weiter gefunden
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 19.05.2005 10:12:20

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!
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 19.05.2005 10:33:56

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
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 19.05.2005 13:10:52

ah, ok! verstehe, daran habe ich allerdings nicht gedacht!
danke
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Antworten