linux shell skript

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.241
Moin Leute, ich habe mal eine Frage zum Thema shell / sh "Programmierung" :)
Ich habe ein Debian System (vServer) bei Hetzner, für den Fall das ich mal einen zweiten oder dritten dazu hole, möchte ich mir ein Skript erstellen, was schon mal ein paar basics für mich einrichtet :D

Solche Standards wie "update" oder auch das anpassen der "/etc/hostname" ist gar nicht mehr so das Problem.. jetzt möchte ich aber auch, dass mein Skript prüfen kann (wenn das geht) ob z.B. der mc oder vim installiert ist, wenn nicht soll dieses installiert werden mit Hilfe von apt-get -y install mc vim :)
Code:
elif [ "${AUSWAHL}" = 2 ]
 then
  # update der apt datenbank
  apt-get update

  # install apache und php5
  apt-get -y install apache2 libapache2-mod-php5 php5 php5-cgi php5-cli php5-common php5-mysql
  rm /etc/apache2/sites-available/* && rm /etc/apache2/sites-enabled/*
So etwas habe ich als Beispiel schon mal gebaut. Aber kann mir einer sagen, wie ich es hin bekomme prüfen zu lassen, ob ein Paket existiert..? :)

Ich hoffe mal das ich hier in der "Programmier" gefragt, weil unter google alle Ergebnisse zu shell Skripten immer mit "shell Programmierung" aufgelistet sind und hoffe, dass ich hier richtig bin.

Gruß, Domi
 
AW: Frage, linux shell skript

Da gäbs wohl mehrere Varianten. Eine primitive wäre zb.

Code:
if ! dpkg -s vim-common >/dev/null 2>&1; then
    apt-get install vim-common
fi
 
AW: Frage, linux shell skript

Oder du rufst den Befehl komme was wolle einfach auf, wenns schon drauf ist, passiert nix.

Tipp:
Falls du übrigens die Abfragen, die dpkg zu einigen Paketen stellt, auch automatisieren willst, kannst du die mit debconf-get-selections (aus dem Paket debconf-utils) nach erfolgreicher manueller Installation in eine Datei schreiben. Die kannst du dann am Anfgang deines Installationsscripts mit
debian-set-selections < DATEINAME
einlesen. Dann sollte die Installation ohne die Abfragen durchlaufen und die zuvor gewählten werte übernehmen.
 
AW: Frage, linux shell skript

Ah.. cool, dass sieht schön einfach aus und kann ich einfach bei mir einbinden ins Skript :)

@redeye86, wie genau meinst Du das..? Jetzt bin ich gerade verwirrt.. :( debconf-get-selections und debconf-set-selections (wenn es das war) hatte ich letztens mit einem Kumpel durch gesprochen. Aber dann müssten die Distributionen 1:1 gleich sein, wenn ich das richtig im Kopf habe.
 
Zuletzt bearbeitet:
AW: Frage, linux shell skript

Hi,

ich rate davon ab. Es aendert sich immer was und der Arbeitsaufwand, den du in solche Scripte steckst, ist viel groesser als eine moegliche Zeitersparnis. Wenn du dann auf einem anderen System eine andere Distribution hast (insbesondere eine, die nicht auf Debian basiert), dann stehst du wieder bei null.

Viel sinnvoller finde ich es, bei solchen Sachen eine Art Install-Log als Text zu schreiben:

- apache installieren
- Modul xyz zur apache.conf hinzufuegen

..usw.

Damit kannst du ein vergleichbares System spaeter rasend schnell aufsetzen und du musst im Worst Case nur rausfinden, wie irgendwas ganz speziell auf der jeweiligen Distri gemacht wird. Das, was du planst, verliert seinen Nutzen ziemlich schnell, sowas hingegen ist fuer eine bestimmte Art von System immer wieder von Nutzen.

Ausserdem fuehren solche Scripte nach einiger Zeit dazu, dass man vergisst, was sie eigentlich genau taten und welche Voraussetzungen fuer ihren Einsatz gegeben sein mussten.

Viele Gruesse,

Jan
 
AW: Frage, linux shell skript

JanR schrieb:
Wenn du dann auf einem anderen System eine andere Distribution hast (insbesondere eine, die nicht auf Debian basiert), dann stehst du wieder bei null.
Joa, da hast Du vollkommen recht, aber ich werde primär immer Debian einsetzen, denn Ubuntu, CentOS etc. sagen mir alle nicht zu. Und da ich halt immer mit einem Debian arbeiten will / werde, wollte ich mir halt solch ein Skript schreiben :)

Was das Log (die To-Do Liste) angeht, wäre auch eine Maßnahme...
Aber mit meinem kleinen Skript bräuchte ich dann nur eben "ausführen" machen und abwarten :)
 
AW: Frage, linux shell skript

Hi,

Joa, da hast Du vollkommen recht, aber ich werde primär immer Debian einsetzen, denn Ubuntu, CentOS etc. sagen mir alle nicht zu. Und da ich halt immer mit einem Debian arbeiten will / werde, wollte ich mir halt solch ein Skript schreiben

Dir ist schon klar, dass Ubuntu ein Debian-System ist? Da wuerden deine Scripte auch funktionieren...

Ansonsten musste ich bei deinem "immer" gerade doch ein wenig grinsen, sorry.

Als ich mit Linux angefangen habe (das war 1994 auf einem 486er), habe ich Slackware verwendet. Ich bin damit gut klar gekommen und aehnlich wie du gedacht, dass es das sein wird, was ich immer verwenden werde. Tatsaechlich wurden es immerhin so knapp 3 Jahre, die ich es benutzt habe. Dann hat mir jemand Debian gezeigt und ich war sofort davon begeistert und bin umgestiegen. Dem folgten dann 8 lange Jahre mit Debian, die gegen Ende hin immer mehr von Frust gepraegt waren. Naja... inzwischen ist es auch schon wieder 7 Jahre her, dass ich auf Gentoo gewechselt bin. Momentan kommt es dem, was ich mir vorstelle, immer noch ziemlich nahe, aber fuer immer... niemand weiss das.

Soviel zum Thema "immer"...

Der zweite Punkt sind all die Aenderungen in den Systemen, vor allem in den Konfigurationen. Sicher, du kannst so Kram wie irgendwelche Installationen einfach scripten, aber das ist doch nicht das eigentlich Aufwendige. Das sind die Konfig-Files und da gibt es durchaus in kuerzerer Zeit viele Aenderungen.

Was die Programme angeht, ist das erste, was ich auf einem frischen Gentoo eingebe:

"emerge gentoolkit vim eix"

...und dann fuehle ich mich wohl. Das braucht kein Script.

Ebenso kannst du, wie oben schonmal jemand schrieb, auch einfach dein

"apt-get install was auch immer du haben moechtest"

einfach so abfeuern ohne Ruecksicht darauf, was vorhanden ist und was nicht. Wenn es das schon gibt, passiert schlicht nichts bzw. es wird nochmal druebergebuegelt, was ja auch keinen Unterschied macht, weil es rasend schnell geht. Vermutlich hat apt-get (habe das ewig nicht verwendet) auch eine Option, die bereits existierende Pakete einfach ignoriert.

Viele Gruesse,

Jan
 
Zurück
Oben