Bash-Anlegen-von-Usern: Unterschied zwischen den Versionen

Aus Nicos Spickzettel
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
awk SUM ergänzt
Zeile 64: Zeile 64:
  done
  done
</nowiki>
</nowiki>
== Summen mit AWK berechnen ==
Hier berechnen wir die Summen aus dem 3 letzten Element
NF = number of fields einer Zeile, das ist hilfreich, wenn man unterschiedlich viele Felder hat, aber immer vom letzten aus gesehen etwas berechnen möchte.
<nowiki>
awk  '{sum+=$(NF-2);print $(NF-2)} END{print sum;}'
</nowiki

Version vom 13. Januar 2026, 12:38 Uhr

Bash-Anlegen-von-Usern"

Anlegen von User inkl. DocumentRoot und symlinks

  #!/bin/bash
  BASEDIR=/var/www/servers/clicklabs
  for IN in $(cat t|awk -F\. '{print $2}')
  do
       echo $IN;
       HOMEDIR="${BASEDIR}/www.$IN.de/export"
       DOCUMENT_ROOT="/${BASEDIR}/www.$IN.de/htdocs"
       mkdir $HOMEDIR
       useradd -g 33 -d ${BASEDIR}/www.$IN.de/export  -s /bin/false $IN
       PW=$(pwgen -s -1)
       echo $PW > /tmp/password.txt
       echo $PW >> /tmp/password.txt
       passwd $IN < /tmp/password.txt
       cd ${DOCUMENT_ROOT}
       ln -s ../export
       echo User $IN mit Passwort $PW und HOMEDIR $HOMEDIR ist anglegt
       echo Symlink unter DocumentRoot $DOCUMENT_ROOT ist anelegt
       echo "- - - "
  done

</nowiki> aus der Datei "t" werden die user aus der datei www.muster.de extrahiert und dann in einer For-Schleife verarbeitet.


Datei einlesen

 #!/bin/bash

# Set the path to the input file
INPUT_FILE="userliste-mit-alt-und-neuem-passwort.txt"

# Loop through each line in the input file
while IFS=$'\t' read -r field1 field2 field3 field4; do
    # Print the values of each field
    echo "Field 1: ${field1}"
    echo "Field 2: ${field2}"
    echo "Field 3: ${field3}"
    echo "Field 4: ${field4}"
done < "${INPUT_FILE}"
 

Splitten von String in einer Variable

#!/bin/bash
for EMAIL in $(cat ist-postfach.txt)
do
       echo $'\t'$EMAIL
       LINE=$(grep ${EMAIL} userliste-mit-alt-und-neuem-passwort.txt)
       read -r EMAIL_NEW PASS_OLD PASS_NEW field4 <<< "$LINE"
       LOGIN_OLD=${EMAIL_NEW%@rotary.de}
   # Print the values of each field
   echo "Field 1: ${LOGIN_OLD}"
   echo "Field 2: ${PASS_OLD}"
   echo "Field 3: ${PASS_NEW}"
   echo "Field 4: ${EMAIL_NEW}"
   ../bin/sync-postbox.sh  ${LOGIN_OLD} ${PASS_OLD} ${PASS_NEW}  ${EMAIL_NEW}
done

</nowiki>

Summen mit AWK berechnen

Hier berechnen wir die Summen aus dem 3 letzten Element NF = number of fields einer Zeile, das ist hilfreich, wenn man unterschiedlich viele Felder hat, aber immer vom letzten aus gesehen etwas berechnen möchte. <nowiki>

awk  '{sum+=$(NF-2);print $(NF-2)} END{print sum;}'

</nowiki