Bash-Anlegen-von-Usern: Unterschied zwischen den Versionen
Nico (Diskussion | Beiträge) |
Nico (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| (10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Bash-Anlegen-von-Usern" == | |||
== Anlegen von User inkl. DocumentRoot und symlinks == | === Anlegen von User inkl. DocumentRoot und symlinks === | ||
<nowiki> | <nowiki/> | ||
#!/bin/bash | #!/bin/bash | ||
BASEDIR=/var/www/servers/clicklabs | |||
BASEDIR=/var/www/servers/clicklabs | for IN in $(cat t|awk -F\. '{print $2}') | ||
for IN in $(cat t|awk -F\. '{print $2}') | do | ||
do | |||
echo $IN; | echo $IN; | ||
HOMEDIR="${BASEDIR}/www.$IN.de/export" | HOMEDIR="${BASEDIR}/www.$IN.de/export" | ||
| Zeile 23: | Zeile 23: | ||
echo Symlink unter DocumentRoot $DOCUMENT_ROOT ist anelegt | echo Symlink unter DocumentRoot $DOCUMENT_ROOT ist anelegt | ||
echo "- - - " | echo "- - - " | ||
done | 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 == | |||
<nowiki/> | |||
#!/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}" | |||
</nowiki> | |||
== Splitten von String in einer Variable == | |||
<nowiki/> | |||
#!/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> | |||
=== Durchschnittliche und Maximale Antwort längen in Apache Logfiles === | |||
<nowiki/> | |||
awk '($9 ~ /200/) { i++;sum+=$10;max=$10>max?$10:max; } END { printf("Maximum: %d\nAverage: %d\n",max,i?sum/i:0); }' \ | |||
www.cyberciti.biz_access.log | |||
</nowiki> | </nowiki> | ||
Aktuelle Version vom 12. Februar 2026, 17:21 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}"
</nowiki>
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.
awk '{sum+=$(NF-2);print $(NF-2)} END{print sum;}'
</nowiki>
Durchschnittliche und Maximale Antwort längen in Apache Logfiles
awk '($9 ~ /200/) { i++;sum+=$10;max=$10>max?$10:max; } END { printf("Maximum: %d\nAverage: %d\n",max,i?sum/i:0); }' \
www.cyberciti.biz_access.log </nowiki>