1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Wir danken allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben.

Shell Skripts

Dieses Thema im Forum "Hardware" wurde erstellt von Kafi, 15. August 2002.

  1. Kafi

    Kafi New Member

    Also, ich habe mich gestern mal ein bisschen an Shell-Skripts (nennt man die so?) probiert (was ja auch nicht so sonderlich schwer ist: einfach ne textdatei mit den Shell-Befehlen füttern udn dann im Terminal mit sh name aufrufen).
    Nun aber meine Fragen:
    1. Kann man auch Skripts erstellen, die ein "Argument" verlangen/bzw. verwalten können?
    2. Kann man die Skripts beim Starten des Systems laufen lassen (in dem man sie z.B. in den StartupItems Ordner legt)?
    3. muss man etwas besonderes angeben, damit man sudo sh <name> eingeben muss, oder braucht der die SuperUserrechte automatisch bei Aktionen, die diese verlangen?
    4. Ich glaube, das wars schon...
    5. Danke
     
  2. zwoelf11_

    zwoelf11_ New Member

    ja, man nennt sie so.

    1. kommt es drauf an, worin diese shell-skripte geschrieben wurden. da du scheinbar "sh" (also /bin/sh bzw. /bin/zsh) benutzt, geht dies über $1 als 1tes argument etc.
    Noch ein tipp: du solltest deshalb immer eine "she-bang" zeile an den anfang des skriptes stellen (<TT>#!/bin/sh</TT>). dann kannst du den skript auch "chmod 755"-auführbar machen und ihn mit "./skriptname" starten, das "sh" davor brauchst du dann nichtmehr.

    2. sicherlich. weiss ich jetz aber nicht ganz genau, wie man das unter OS X macht. =&gt; ausprobieren
    System-Weite Start-Skripte (z.B. um den Apache beim Hochfahren zu starten und so) liegen in /System/Library/StartupItems/ und Library/StartupItems/, müssen aber ein ganzes verzeichnis sein. schau dir die dort liegen an, und form sie zu deinen zwecken um ;o)

    3. in einem shell (sh) skript gibt es die variable "$UID", die die nutzer id beinhaltet. Wenn diese "0" ist, wurde das skript mit "sudo" (oder direkt als root) aufgerufen. du kannst dann nach belieben fortfahren oder abbrechen. Beispiel:
    <TT>
    #!/bin/sh

    #ueberpruefen, ob als root gestartet
    if [ "$UID" -ne "0" ]; then
    echo "Dieses Skript muss als root ausgeführt werden!";
    exit;
    fi;

    id; #mach was als root...
    </TT>
    Direkt aus dem Shell-Skript heraus nach einer authentifizierung (z.B. dem sudo-passwort) zu fragen ist nicht so ohne weiteres möglich und ansich auch nicht wünschenswert (sicherheitsrisiko!)
    Wenn du im Skript selber sudo-befehle verwendest (also z.B. an irgendeiner stelle "sudo update_prebinding" oder so steht), fragt der beim ausführen des skriptes an dieser stelle nach dem passwort.

    4. wunderbar
    5. bitte, ich hoffe geholfen zu haben
    </TT>
     
  3. hakru

    hakru New Member

  4. Kafi

    Kafi New Member

    Klasse...dank an Euch Beide...
    aber wenn Ihr schon gerade hier seid, eine Frage ist dann doch noch aufgekommen:

    warum muss man manchmal immer dieses "./" vor skripts setzen. Was genau hat dieser "." zu bedeuten? Ich dachte immer, das wäre ein Link auf den eigenen Ordner, aber warum muss man dann beim Aufrufen der Skripts dann immer ./ machen?
    ./nochmal!!!
     
  5. zwoelf11_

    zwoelf11_ New Member

    naja, ich bin immer lieber vorsichtiger.

    also, wenn du "bla" und enter eingibst, versucht deine shell ein programm zu finden, was "bla" heisst, und dieses auszuführen.

    nun kann es sein, dass er auch tatsächlich "bla" ausführt, was dein
    skript ist. hängt z.T. auch von der shell ab.

    da du den aufwand aber nicht möchtest, und ausserdem ganz sicher gehen willst, dass genau DAS skript ausgeführt wird, fügst du ein "./" davor, was soviel heisst wie "genau in diesem verzeichnis"
    ("." ist "dieses verzeichnis, ".." ist das verzeichnis dadrüber, daher auch "cd ..")
     
  6. Kafi

    Kafi New Member

    gut danke...

    also gilt es zum Vorbeugen, damit, wenn ich Skript namens gcc habe, auch mein Skript ausgeführt wird, und nicht der Compiler...
    alles klar...

    danke nochmals ;-)
     
  7. zwoelf11_

    zwoelf11_ New Member

    jupp. und ich habs mir angewöhnt, weil ich oft an rechnern arbeite, wo er anders den skript gar nicht ausführt (--"skript: command not found")
     
  8. Kafi

    Kafi New Member

    Also, ich habe mich gestern mal ein bisschen an Shell-Skripts (nennt man die so?) probiert (was ja auch nicht so sonderlich schwer ist: einfach ne textdatei mit den Shell-Befehlen füttern udn dann im Terminal mit sh name aufrufen).
    Nun aber meine Fragen:
    1. Kann man auch Skripts erstellen, die ein "Argument" verlangen/bzw. verwalten können?
    2. Kann man die Skripts beim Starten des Systems laufen lassen (in dem man sie z.B. in den StartupItems Ordner legt)?
    3. muss man etwas besonderes angeben, damit man sudo sh &lt;name&gt; eingeben muss, oder braucht der die SuperUserrechte automatisch bei Aktionen, die diese verlangen?
    4. Ich glaube, das wars schon...
    5. Danke
     
  9. zwoelf11_

    zwoelf11_ New Member

    ja, man nennt sie so.

    1. kommt es drauf an, worin diese shell-skripte geschrieben wurden. da du scheinbar "sh" (also /bin/sh bzw. /bin/zsh) benutzt, geht dies über $1 als 1tes argument etc.
    Noch ein tipp: du solltest deshalb immer eine "she-bang" zeile an den anfang des skriptes stellen (<TT>#!/bin/sh</TT>). dann kannst du den skript auch "chmod 755"-auführbar machen und ihn mit "./skriptname" starten, das "sh" davor brauchst du dann nichtmehr.

    2. sicherlich. weiss ich jetz aber nicht ganz genau, wie man das unter OS X macht. =&gt; ausprobieren
    System-Weite Start-Skripte (z.B. um den Apache beim Hochfahren zu starten und so) liegen in /System/Library/StartupItems/ und Library/StartupItems/, müssen aber ein ganzes verzeichnis sein. schau dir die dort liegen an, und form sie zu deinen zwecken um ;o)

    3. in einem shell (sh) skript gibt es die variable "$UID", die die nutzer id beinhaltet. Wenn diese "0" ist, wurde das skript mit "sudo" (oder direkt als root) aufgerufen. du kannst dann nach belieben fortfahren oder abbrechen. Beispiel:
    <TT>
    #!/bin/sh

    #ueberpruefen, ob als root gestartet
    if [ "$UID" -ne "0" ]; then
    echo "Dieses Skript muss als root ausgeführt werden!";
    exit;
    fi;

    id; #mach was als root...
    </TT>
    Direkt aus dem Shell-Skript heraus nach einer authentifizierung (z.B. dem sudo-passwort) zu fragen ist nicht so ohne weiteres möglich und ansich auch nicht wünschenswert (sicherheitsrisiko!)
    Wenn du im Skript selber sudo-befehle verwendest (also z.B. an irgendeiner stelle "sudo update_prebinding" oder so steht), fragt der beim ausführen des skriptes an dieser stelle nach dem passwort.

    4. wunderbar
    5. bitte, ich hoffe geholfen zu haben
    </TT>
     
  10. hakru

    hakru New Member

  11. Kafi

    Kafi New Member

    Klasse...dank an Euch Beide...
    aber wenn Ihr schon gerade hier seid, eine Frage ist dann doch noch aufgekommen:

    warum muss man manchmal immer dieses "./" vor skripts setzen. Was genau hat dieser "." zu bedeuten? Ich dachte immer, das wäre ein Link auf den eigenen Ordner, aber warum muss man dann beim Aufrufen der Skripts dann immer ./ machen?
    ./nochmal!!!
     
  12. zwoelf11_

    zwoelf11_ New Member

    naja, ich bin immer lieber vorsichtiger.

    also, wenn du "bla" und enter eingibst, versucht deine shell ein programm zu finden, was "bla" heisst, und dieses auszuführen.

    nun kann es sein, dass er auch tatsächlich "bla" ausführt, was dein
    skript ist. hängt z.T. auch von der shell ab.

    da du den aufwand aber nicht möchtest, und ausserdem ganz sicher gehen willst, dass genau DAS skript ausgeführt wird, fügst du ein "./" davor, was soviel heisst wie "genau in diesem verzeichnis"
    ("." ist "dieses verzeichnis, ".." ist das verzeichnis dadrüber, daher auch "cd ..")
     
  13. Kafi

    Kafi New Member

    gut danke...

    also gilt es zum Vorbeugen, damit, wenn ich Skript namens gcc habe, auch mein Skript ausgeführt wird, und nicht der Compiler...
    alles klar...

    danke nochmals ;-)
     
  14. zwoelf11_

    zwoelf11_ New Member

    jupp. und ich habs mir angewöhnt, weil ich oft an rechnern arbeite, wo er anders den skript gar nicht ausführt (--"skript: command not found")
     

Diese Seite empfehlen