Eggdrop Script

DonMarkeZ

Mitglied
Habe soeben mein Eggdrop Script fertiggestellt, mit dem es möglich ist per Befehl einen Eggdrop zu downloaden, konfigurieren und kompilieren ! Ich persönlich finde, dass es eine Zeitersparnis ist und wenn der Eggy mal wieder bockt, dass man ihn schnell wieder herstellen kann ^^ Wenn ihr ein Paar Comments oder verbesserungsvorschläge habt dann immer her damit :) (Ich wäre euch sehr dankbar wenn ihr nicht so auf die Lesbarkeit des Codes achten würdet ;) )

Code:
#!/bin/sh
#script um einen eggdrop zu erstellen 
#by MarkeZ ! Danke an alle die mir geholfen haben :)
#02.04.2006

case "$1" in
     install)
echo -n "eggdrop wurde installiert" cd ~ && mkdir eggdrop && wget http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2 && tar -jxvf eggdrop1.6.17.tar.bz2 && cd eggdrop1.6.17 && sed -e 's/^#define HANDLEN 9/#define	HANDLEN 30/g'	/home/$USER/eggdrop1.6.17/src/eggdrop.h	&& ./configure && make config && make && make install /home/$USER/eggdrop && rm -r /home/$USER/eggdrop1.6.17 && rm -r /home/$USER/eggdrop1.6.17.tar.bz2 && echo "eggdrop.conf 	muss noch konfiguriert werden!"
	echo
         ;;
delete)
        echo -n "eggdrop wurde gelöscht"

        cd /home/$USER/eggdrop
        kill -9 `cat pid.eggdrop`
        cd ~
        rm -r eggdrop
        echo
        ;;
stop)
	echo -n "eggdrop wurde gestoppt"
	cd /home/$USER/eggdrop
	kill -9 `cat pid.eggdrop`
	echo
	;;
start)
	echo -n "eggdrop wurde gestartet"
	cd /home/$USER/eggdrop
	./eggdrop
	echo
	;;
restart)
	echo -n "eggdrop wurde gerestarted"
	cd /home/$USER/eggdrop
	kill -9 `cat pid.eggdrop`
	./eggdrop
	echo
	;;
new)
	echo -n "eggdrop wurde wieder hergestellt"
	cd /home/$USER/eggdrop
        kill -9 `cat pid.eggdrop`
        cd ~
        rm -r eggdrop
	mkdir eggdrop && wget http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2 && tar -jxvf eggdrop1.6.17.tar.bz2 && cd eggdrop1.6.17 && sed -e 's/^#define HANDLEN 9/#define	HANDLEN 30/g'	/home/$USER/eggdrop1.6.17/src/eggdrop.h	&& ./configure && make config && make && make install /home/$USER/eggdrop && rm -r /home/$USER/eggdrop1.6.17 && rm -r /home/$USER/eggdrop1.6.17.tar.bz2 && echo "eggdrop.conf 	muss noch konfiguriert werden!"
	echo
	;;
         *)
      echo "Mehr infos bitte^^: $0 {install|delete|stop|start|restart|new}"
       exit 1
esac
exit 0

Danke noch einmal an alle, die mir geholfen haben, denn ohne euch hätte ich es nicht geschafft !!
 
Hi.

Also ein paar Kommentare hätte ich. :)

Bei
Code:
echo -n "eggdrop wurde installiert" cd ~ && ...
fehlt vor dem "cd" Befehl ein Semikolon bzw. Zeilenumbruch.

Dann kannst du ganz einfach das Skript mit der Option -e starten, dann wird das Skript sofort beendet falls ein Fehler auftritt. So mußt du nicht immer mit && die Befehle aneinander reihen.
Code:
#!/bin/sh -e

Du brauchst auch die Datei nicht unbedingt runterladen und auf der Platte speichern, du kannst die Datei gleich beim runterladen auspacken:
Code:
wget -O- http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2 | tar -jxv
Da mischt sich allerdings die Ausgabe von wget und tar - da solltest du eins von beiden dann besser zum schweigen bringen.

Code:
sed -e 's/^#define HANDLEN 9/#define	HANDLEN 30/g'	/home/$USER/eggdrop1.6.17/src/eggdrop.h
sed verändert standardmäßig nicht den Inhalt der Datei die es verarbeitet sondern gibt den Ergebnistext auf der Standardausgabe aus. Wenn du GNU sed 4.x hast dann kannst du die Option -i bzw. --in-place angeben; damit wird es dann funktionieren. Ansonsten mußt du die Datei erstmal kopieren und dann die Ausgabe in die alte Datei umleiten.
Code:
cp datei.h datei.h.neu && sed -e 's,#define...,g' datei.h.neu > datei.h && rm -f datei.h.neu

Gruß
 
Danke, allerdings funktioniert das Script jetzt nicht mehr (bei mir zumindest) ich weiß nicht was ich da nun wieder falsch gemacht habe ^^

Code:
#!/bin/sh -e
#script um einen eggdrop zu erstellen 
#by MarkeZ ! Danke an alle die mir geholfen haben :)
#02.04.2006

case "$1" in
     install)
	echo -n "eggdrop wurde installiert"	
	cd ~ 
	mkdir eggdrop 
	wget -O- http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2 | tar -jxv 
	cd eggdrop1.6.17
	cp /src/eggdrop.h /src/eggdrop.h.neu && sed -e 's/^#define HANDLEN 9/#define HANDLEN 30/g' eggdrop.h.neu > eggdrop.h && rm -f eggdrop.h.neu 	
	./configure 
	make config 
	make 
	make install /home/$USER/eggdrop 
	rm -r 	/home/$USER/eggdrop1.6.17 
	rm -r /home/$USER/eggdrop1.6.17.tar.bz2 
	echo
	echo "eggdrop.conf muss noch konfiguriert werden!"
         ;;
         .
         .

Habe nun mit Absicht nur den ersten Teil kopiert, da er mir dort schon eine fehlermeldung ausgibt !
Code:
: command not found: 
'ggdrop2.sh: line 6: syntax error near unexpected token `in
'ggdrop2.sh: line 6: `case "$1" in
 
Hm. Wie hast du denn das Skript aufgerufen?

Du mußt bei der Umleitung von sed natürlich auch die richtigen Pfade angeben (das erste hast du absolut angegeben, den Pfad gibt es höchstwahrscheinlich nicht und beim zweiten hast du das Verzeichnis weggelassen):
Code:
cp src/eggdrop.h eggdrop.h.neu && sed -e 's/^#define HANDLEN 9/#define HANDLEN 30/g' eggdrop.h.neu > src/eggdrop.h && rm -f eggdrop.h.neu

Code:
rm -r /home/$USER/eggdrop1.6.17.tar.bz2
Das kannst du ja dann weglassen wenn du gleich mittels der Pipe auspackst - sonst tritt natürlich ein Fehler auf weil es die Datei nicht gibt. Und die Option -r ist eigentlich auch nicht sinnvoll bei Dateien, allerdings solltest du in Skripten besser -f angeben damit rm nicht nachfragt ob es bestimmte Dateien wirklich löschen soll.

Gruß
 
Bekomme leider immer noch die gleiche Fehlermeldung :( Was kann ich nur tun ?
Ich habe es erst so geschrieben wie du es meintest (hoffe habe es richtig verstanden) und danach nochmal mit absoluten Pfaden (zu den richtigen Stellen) !
 
Wie hast du denn das Skript ganz genau aufgerufen? Also ich bekomme nämlich keine solche Meldung wenn ich das ausprobiere. Evlt. ist es am besten wenn du nochmal das komplette Skript postest?!

Gruß
 
Das Script rufe ich auf wenn indem ich
Code:
sh eggdrop2.sh install
eingebe, wobei ich natürlich install ersetzen kann durch die anderen Befehle.

Das Script sieht zur Zeit so aus:
Code:
#!/bin/sh -e
#script um einen eggdrop zu erstellen 
#by MarkeZ ! Danke an alle die mir geholfen haben :)
#02.04.2006

case "$1" in
     install)
	echo -n "eggdrop wurde installiert"	
	cd ~ 
	mkdir eggdrop 
	wget -O- http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2 | tar -jxv 
	cd eggdrop1.6.17
	cp src/eggdrop.h eggdrop.h.neu && sed -e 's/^#define HANDLEN 9/#define HANDLEN 30/g' 	eggdrop.h.neu > /home/$USER/eggdrop1.6.17/src/eggdrop.h && rm -f eggdrop.h.neu 	
	./configure 
	make config 
	make 
	make install /home/$USER/eggdrop 
	rm -f 	/home/$USER/eggdrop1.6.17 
	echo
	echo "eggdrop.conf muss noch konfiguriert werden!"
         ;;
delete)
        echo -n "eggdrop wurde gelöscht"

        cd /home/$USER/eggdrop
        kill -9 `cat pid.eggdrop`
        cd ~
        rm -r eggdrop
        echo
        ;;
stop)
	echo -n "eggdrop wurde gestoppt"
	cd /home/$USER/eggdrop
	kill -9 `cat pid.eggdrop`
	echo
	;;
start)
	echo -n "eggdrop wurde gestartet"
	cd /home/$USER/eggdrop
	./eggdrop
	echo
	;;
restart)
	echo -n "eggdrop wurde gerestarted"
	cd /home/$USER/eggdrop
	kill -9 `cat pid.eggdrop`
	./eggdrop
	echo
	;;
new)
	echo -n "eggdrop wurde wieder hergestellt"
	cd /home/$USER/eggdrop
        kill -9 `cat pid.eggdrop`
        cd ~
        rm -r eggdrop
	mkdir eggdrop 
	wget -O- http://files.planet-rcs.de/article/e/eggdrop/eggdrop1.6.17.tar.bz2 | tar -jxv 
	cd eggdrop1.6.17
	cp src/eggdrop.h eggdrop.h.neu && sed -e 's/^#define HANDLEN 9/#define HANDLEN 30/g' 		eggdrop.h.neu > /home/$USER/eggdrop1.6.17/src/eggdrop.h && rm -f eggdrop.h.neu 	
	./configure 
	make config 
	make 
	make install /home/$USER/eggdrop 
	rm -f 	/home/$USER/eggdrop1.6.17 
	echo
	echo "eggdrop.conf muss noch konfiguriert werden!"
	;;
tcl-install)
	echo -n "TCL wurde installiert"
	cd /usr/local/src 
	wget -O- http://mesh.dl.sourceforge.net/sourceforge/tcl/tcl8.4.12-src.tar.gz | tar xfzv 
	cd tcl8.4.12/unix/ 
	./configure --prefix=/usr --sysconfdir=/etc 
	make 
	make install
	echo
	;;
         *)
      echo "Mehr infos bitte^^: $0 {install|delete|stop|start|restart|new|tcl-install}"
       exit 1
esac
exit 0
 
DonMarkeZ hat gesagt.:
Das Script rufe ich auf wenn indem ich
Code:
sh eggdrop2.sh install
eingebe
Und dann bekommst du den Fehler von oben? Kann ich irgendwie nicht nachvollziehen. Bei mir geht das so. Obwohl du wie gesagt die -e Option angeben solltest wenn du das aufrufst. Am besten machst du das Skript ausführbar (chmod +x eggdrop2.sh) und rufst es dann so auf
Code:
./eggdrop2.sh install
dann wird die -e Option in der Shebang Zeile nämlich auch verwendet.

Ansonsten bekomme ich hier nie und nimmer so eine Fehlermeldung. Wo kommen denn vor allem da die Anführungszeichen her?! :confused:

Gruß
 
Ich hab keinerlei Ahnung wieso das bei dir geht und bei mir nicht......Naja ich versuch das mal per chmod oder lass es so undeutlich wie vorher ;) Danke für deine Hilfe und die Tipps :-)

P.S. Ich habe es per chmod bekommen, doch da bekomme ich die Fehlermeldung
Code:
: invalid option

Naja lass ich es halt wie vorher :)
 
Zuletzt bearbeitet:
Welche Shell benutzt du denn genau? (sh --version) Evlt. ist das so eine abgespeckte Mini-Shell? Du könntest statt der Option -e beim Shellaufruf auch set -e im Skript ganz am Anfang angeben.

Gruß
 
Zurück