regexer
Advanced Hacker
Anbei einige Verbesserungsvorschläge für das Script 1 und 2. Manches ist vereinfacht, maches aufgrund der Sicherheit eingefügt. Kritik ist jederzeit erwünscht! Hätte es anstatt des Scripts Nr. 3 nicht ein "grep -v -f sorti.conf" getan? Das wäre dann erheblich schneller, allerdings würden dann die schönen kommentare nicht mehr funktionieren - Zumindest nicht mehr so einfach...
Außerdem wäre eine allgemeine Prozessüberwachung mit trap usw. denkbar. Was soll z.B. passieren, wenn der User das Teil mit STRG-C abbricht? Oder was soll passieren, wenn das Script parallel läuft? Aber das wäre vielleicht für dieses Zweck übertrieben.
Außerdem wäre eine allgemeine Prozessüberwachung mit trap usw. denkbar. Was soll z.B. passieren, wenn der User das Teil mit STRG-C abbricht? Oder was soll passieren, wenn das Script parallel läuft? Aber das wäre vielleicht für dieses Zweck übertrieben.
Code:
#!/bin/bash
#
####################################################
# download von source Listen für apt für Suse #
# und Aufruf von sorti.sh zur Erstellung der #
# source.list für apt-get #
# Je nach Suse-Version bitte den richtigen wget- #
# Aufruf aktivieren! #
# feel free to copy and/or modify #
# 01.2005 #
####################################################
#
#
rm -f sources.list.FTP # rm -f macht if...then...fi überflüssig
# jetzt lade die neue sources.list.FTP runter..........
# wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.0-i386/examples/sources.list.FTP
# wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.0-x86_64/examples/sources.list.FTP
# wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/examples/sources.list.FTP
# wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-x86_64/examples/sources.list.FTP
wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/examples/sources.list.FTP
# wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-x86_64/examples/sources.list.FTP
retc=$?
if [ $retc -ne 0 ] # Abbruch bei Fehler von wget
then
echo "Fehler $retc beim Ausführen von wget! Keine Connection?"
exit 1
fi
# .... verlange das root Passwort und rufe sorti.sh auf mit
# sources.list.FTP als Eingabe
su -c "./sorti.sh < sources.list.FTP"
#-eof-
Code:
#!/bin/bash
#
#################################################################
# #
# sorti.sh formatiert die heruntergeladene sources.list.FTP so #
# um, dass für jedes Repository eine eigene Zeile vorhanden ist,#
# in der konfigurationsdatei sorti.conf kann gesteuert werden #
# welche Repositories aus der sources.list entfernt werden. #
# feel free to copy and/or modify #
# 01.2005 #
#################################################################
TEMPFILE=/tmp/sources.list # Tempfile mit Pfad, um zu verhindern, dass der aktuelle Pfad zufällig "/etc/apt" ist
FERTIG=/etc/apt/sources.list
# löschen von FERTIG.alt wird durch move erledigt
if [ -s $FERTIG ]; then # -s ist besser, da leere Datei dann nicht gemovt wird
mv -f $FERTIG $FERTIG.alt || ( echo "Fehler $? beim Archivieren von $FERTIG ! Fehlende Rechte?" ; exit 2 )
fi
rm -f $TEMPFILE || ( echo "Fehler $? beim Löschen von $TEMPFILE ! Fehlende Rechte?" ; exit 3 )
# Die array-Lösung funktioniert zwar in der bash und ist sicher elegant, wer aber die ksh oder anderes verwenden will ist mit folgendem besser bedient
while read line; do
if echo $line | grep '^#' >> $TEMPFILE # Kommentare in file
then
:
else
set -- $line
typ=$1
uri=$2
distri=$3
shift 3
for repository in $*
do
echo $typ $uri $distri $repository >> $TEMPFILE
done
fi
done
# cp /dev/null $FERTIG # Sorry, aber warum das? Besser ist doch:
rm -f $FERTIG || ( echo "Fehler $? beim Ausführen von rm $FERTIG! Fehlende Rechte?" ; exit 4 )
echo "# Erstellt am `date`" > $FERTIG # in die fertige /etc/apt/sources.list das Erstellungsdatum eintragen
cat $TEMPFILE | # Backslash ist hier überflüssig
while read ZEILE ; do
STOP="no"
# Verknüpfung mit && besser. Falls .sorti.conf nicht gefunden wird ist FERTIG dannach nicht leer
# oder soll das etwa so sein?
. sorti.conf && [ "$STOP" == "no" ] && echo "$ZEILE" | sed s/"^rpm-src"/"# rpm-src"/g >> $FERTIG # alle rpm-srcin der Liste deaktivieren
done
#-eof-