Per shell script chmod-h

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von hsg32, 26.03.2010.

  1. hsg32

    hsg32 Grünschnabel

    Dabei seit:
    20.02.2009
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo Community,

    ich such mich wund und hoffe Ihr könnt mir helfen.

    ich möchte in einem shell-skript bei einigen symlinks den benutzer und die Gruppe ändern. Also mit: chmod -h

    Bisher habe ich:
    Code:
    #!bin/sh
    
    echo
    echo "Hiermit wird der Besitzer und die Gruppe der Symlinks angepasst!!!"
    echo
    echo "Wie lautet der neue Besitzer"
    
    read besitzer
    
    echo
    echo "Wie lautet die neue Gruppe"
    
    read gruppe
    
    echo "Der neue Besitzer und die neue Gruppe werden wie folgt eingesetzt:"
    echo
    echo "$besitzer:$gruppe"
    echo
    echo "Sollen die Ordner nun angepasst werden? (ja - nein)"
    
    read antwort
    
    if [ $antwort = "ja" ]
    
    then
    
    chown -h $besitzer:$gruppe ./erster.symlink
    chown -h $besitzer:$gruppe ./zweiter.symlink
    chown -h $besitzer:$gruppe ./dritter.symlink
    chown -h $besitzer:$gruppe ./vierter.symlink
    
    Hab' viel versucht, doch nehmen die s-links die Eingaben nicht an.
    Ich arbeite als "root" mit SuSE 11.

    Frage mich mittlerweile, ob das per script überhaupt geht?
    Ich bin - wie ihr sicherlich bemerkt - noch am Anfang meiner "Skript-Karriere" :)


    Danke für jeden Tipp.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 26.03.2010
    Zuletzt bearbeitet: 26.03.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    du solltest vor allem versuchen etwas sorgfaeltiger zu arbeiten, du schreibst (auch im Titel des Threads) chmod, meinst aber chown, wie es auch richtig im Skript steht. ;)

    Ausserdem fehlt das "fi" am Ende der If-Abfrage, koennte aber ein copy-paste Fehler sein. Ansonsten wuerde ich noch drauf achten vernuenftig einzuruecken.

    Ahja, und mit der Option -e fuer echo kannst du auch Zeilenumbrueche mit in die Strings einbauen, ist IMHO besser zu lesen (z.B. echo -e "\nHallo Welt!\n").

    Ich musste erstmal nachgucken wofuer chown -h benutzt wird. Kann dein System denn Symlinks anderen Benutzern zuordnen? Ich wusste gar nicht dass das geht, und in der manpage steht auch, dass -h nur auf Systemen einen Effekt hat, die das ueberhaupt unterstuetzen.

    Im Skript funktioniert im Allgemeinen alles, was in der Konsole (sh in deinem Fall) auch geht. (Ich meine es gibt ein paar wenige Ausnahmen, aber das sind wenn dann Grenzfaelle.)

    mfg,
    bytepool
     
  4. #3 Gast1, 26.03.2010
    Zuletzt von einem Moderator bearbeitet: 26.03.2010
    Gast1

    Gast1 Guest

    Ich denke es ist kein Copy/Paste Fehler, mit dem fi klappt das hier™ zumindest problemlos.

    BTW:

    Bei read den Parameter -e mitgeben, ist sicherlich auch keine dumme Idee.
     
  5. hsg32

    hsg32 Grünschnabel

    Dabei seit:
    20.02.2009
    Beiträge:
    4
    Zustimmungen:
    0
    Vielen Dank!

    @bytepool

    Danke für den berechtigeten Tadel, ich sollte wirklich sorgfältiger arbeiten.
    "fi" hat tatsächlich gefehlt, und ich hab's einfach nicht gecheckt! :think:

    @Rain_Maker

    Danke für Dein Vertrauen in meine Fähigkeiten. Leider war es kein Copy/Paste-Fehler :(!
    Bei mir funktioniert's mit "fi" jetzt auch super!

    Danke auch noch für die anderen Tipps. Es ist einfach gut, wenn noch jemand, der sich auch auskennt, über den Code schaut. Und sei er noch so winzig :D!!!

    Grüße hsg32
     
  6. #5 bytepool, 26.03.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Ah, praktisch, die Option kannte ich auch noch nicht, wieder was gelernt. :)

    Die if-Abfrage kann man eigentlich auch besser in ein case statement umwandeln, dann gehen naemlich auch so schoene Sachen wie das hier:
    Code:
    read -e foo
    case $foo in
        j|ja|J|Ja)
            echo jawoll
            ;;
        *)
            echo noe
            ;;
    esac
    
    mfg,
    bytepool
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. Tblue

    Tblue Tripel-As

    Dabei seit:
    27.11.2007
    Beiträge:
    188
    Zustimmungen:
    0
    Ansonsten könnte das auch so aussehen:
    Code:
    read -e foo
    case "$foo" in
        [jJ]*)
            echo jawoll
            ;;
        *)
            echo nö
            ;;
    esac
    :)
     
  9. #7 bytepool, 26.03.2010
    Zuletzt bearbeitet: 26.03.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Und wenn dann jemand "jetzt nicht" tippt? ;)

    edit:
    Na gut,
    Code:
       [Jj]a|[Jj])
    
    ist vielleicht doch eleganter, aber dann werden wir echt spitzfindig. ;)
     
Thema:

Per shell script chmod-h

Die Seite wird geladen...

Per shell script chmod-h - Ähnliche Themen

  1. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  2. Shellscript für rotierende Datensicherung

    Shellscript für rotierende Datensicherung: Hallo, ich beschäftige mich erst seit ein paar Wochen mit der Shell und habe mich entschlossen meine ersten Scripterfahrungen in diesem kleinen...
  3. Shellscript unerwartetes Dateiende

    Shellscript unerwartetes Dateiende: Hallo zusammen, folgendes Script führe ich in einer .bat via cygwin und curl aus. Beim Ausführen erhalte ich die einen Syntaxfehler:...
  4. shell-script mit plink starten

    shell-script mit plink starten: Hallo, auf meinem kleinen QNAP-Backupserver möchte ich von meinem Windows 7 PC mittels Windows-Batch ein kleines shell script starten. So sieht...
  5. Einfaches Shellscript - dateinamen ändern

    Einfaches Shellscript - dateinamen ändern: Hey, kann mir jemand vielleicht bei diesem miniscript helfen? ich habe dateien die folgendermaßen aussehen MM-DD-YY-dateiname und...