![](https://www.winhistory-forum.net/core/images/avatars/b4/232-b4e73c742627bd847aca3c94d6f6c2075ba42106.webp)
Der Code-Schnippsel-Thread
-
-
Ich muss das Skript dann mal testen, wenn die Hardware aufgebaut ist.
-
Aber ist der Mountpoint nicht was lang? Ich würd eher /homeserver oder so machen. Oder halt /data
-
Aber ist der Mountpoint nicht was lang? Ich würd eher /homeserver oder so machen. Oder halt /dataGrad gefixt.
-
Ist meiner Meinung nach pure Geschmackssache. Ich mags halt recht kurz, damit ich schnell hinkomme
-
-
-
Nützlich
-
Ich hab das vor gut 2 Jahren geschrieben und finds immernoch toll, wenn ich mich nicht entscheiden kann
-
-
Wohl noch nie was von "Hidden Settings Preference pane" gehört.
-
Für solche Kleinigkeiten installier ich keine extra Tools, wenn sie auch mit einem Bash-Dreizeiler gehen.
-
Nen einzeiler im Terminal fände ich cooler...
-
Kann man doch auch als Einzeiler bauen, ist dann halt nicht eingerückt
Codeif [ "$(defaults read com.apple.dock no-glass)" = "0" ] ; then neu="YES" ; else neu="NO" ; fi ; defaults write com.apple.dock no-glass -boolean $neu ; killall Dock
Und hier noch ein Beitrag zum Thread: Automatisierte OpenVPN-Einrichtung am Client einwenig erleichtert -
Bash
Alles anzeigen#!/bin/bash # Script um Benutzer umzubenennen # Usage: umbenennen.sh altername neuername ALTERNAME=${1} NEUERNAME=${2} for i in /etc/group /etc/passwd /etc/shadow do sed -i "s/${ALTERNAME}/${NEUERNAME}/g" $i done mv /home/${ALTERNAME} /home/${NEUERNAME} chown -R ${NEUERNAME}:${NEUERNAME} /home/${NEUERNAME}
Da ich sowas gerade in der Bash gebastelt habe, habe ich noch fix ein bisschen Bash drumgemacht und fertig ist ein Script
-
Das ist ein wunderschönes Beispiel für die Neuerfindung des quadratischen Rades: Nicht nur erledigt z. B. usermod unter Linux oder pw unter FreeBSD alles, was dieses Skript macht, andererseits zerschießt man sich mit dem regulären Ausdruck ziemlich sicher seine Datenbank, wenn ein Benutzername Teil des Namens anderer Benutzer oder Gruppen oder gar eines Passwort-Hashes ist. Wenn schon, sollte der Ausdruck höchstens am Anfang der Zeile matchen und u. a. das Heimverzeichnis separat setzen.
Und das chown ist unnötig, da der Benutzer-/Gruppenname nur ein Alias für eine Benutzer-/Gruppen-ID ist, die sich dadurch weder in der Datenbank noch bei Dateien im Dateisystem ändert.
EDIT: Siehe auch hier für mehr Hinweise (Mailspools, Crontabs, …):
http://unix.stackexchange.com/questions/629/…ix-user-account
-
Danke für den Link, aber ich bau sowas lieber selber
Man kann sed -i "s/${ALTERNAME}/${NEUERNAME}/g" $i ja einfach durch sed -i "s/${ALTERNAME} /${NEUERNAME} /g" $i ersetzen, dann hat man das Problem mit den Namensteilen elegant gelöst. -
Man kann sed -i "s/${ALTERNAME}/${NEUERNAME}/g" $i ja einfach durch sed -i "s/${ALTERNAME} /${NEUERNAME} /g" $i ersetzen, dann hat man das Problem mit den Namensteilen elegant gelöst.Das Trennzeichen ist doch ein Doppelpunkt, kein Leerzeichen. Zwar hast du damit dann die Benutzer-Datenbank einigermaßen sauber abgedeckt, aber dafür immer noch nicht /etc/group und /etc/gshadow, wo Benutzernamen am Ende als Teil einer kommaseparierten Liste aufgeführt werden.
-
Ist glaube ich egal, ob vor dem Komma ein Leerzeichen ist.
-
So mein Code sieht nun so aus:Bash
Alles anzeigen#!/bin/bash DATE=`date +"%m-%Y"` NAME="Backup" FULLNAME="$NAME-$DATE" SOURCE=${HOME}/Dokumente/ TARGET=/media/Daten/Backups/Monatsbackups/$FULLNAME/ TARGETB=/mnt/LAN/Sicherung\ Doku/Monatsbackups/$FULLNAME/ LOG=${HOME}/Backup.log LOGDATE=`date +"%d-%m-%Y"` TMPLOG=${HOME}/Backup.log.tmp if [ -e /media/Daten/Backups/Monatsbackups/$FULLNAME ]; then echo Backup vom $LOGDATE|tee -a $TMPLOG >>$LOG echo Sicherung auf /dev/sda3|tee -a $TMPLOG >>$LOG rsync -avu $SOURCE $TARGET |tee -a $LOG >> $TMPLOG; RSYNC1_RET=${PIPESTATUS[0]} echo ------------------------------------------------------------------------ |tee -a $TMPLOG >>$LOG echo Sicherung auf /dev/sdb1|tee -a $TMPLOG >>$LOG rsync -avu $SOURCE "$TARGETB" |tee -a $LOG >> $TMPLOG; RSYNC2_RET=${PIPESTATUS[0]} echo ------------------------------------------------------------------------ |tee -a $TMPLOG >> $LOG |tee else echo Backup vom $LOGDATE|tee -a $TMPLOG >>$LOG mkdir /media/Daten/Backups/Monatsbackups/$FULLNAME mkdir /mnt/LAN/Sicherung\ Doku/Monatsbackups/$FULLNAME/ rsync -avu $SOURCE $TARGET |tee -a $LOG >> $TMPLOG; RSYNC1_RET=${PIPESTATUS[0]} rsync -avu $SOURCE $TARGETB |tee -a $LOG >> $TMPLOG; RSYNC2_RET=${PIPESTATUS[0]} echo ------------------------------------------------------------------------ |tee -a $TMPLOG >> $LOG fi if [ $RSYNC1_RET -eq 0 -a $RSYNC2_RET -eq 0 ]; then mailx -s "Backup erfolgreich" $(whoami)@$(hostname) <$TMPLOG else mailx -s "Backup fehlgeschlagen" $(whoami)@$(hostname) <$TMPLOG fi rm $TMPLOG
Vielen Dank noch mal an DosAmp, der mch auf die Lösung gebracht hat.
So. Ich hab grade n leichtes Problem mit meinem Script. Es liegt unverändert unter /usr/bin, allerdings bekomme Ich jetzt folgende Fehlermeldung:
Codetobias@darkstar:~$ Backup.sh /usr/bin/Backup.sh: Zeile 28: [: Zu viele Argumente. tobias@darkstar:~$
Zeile 28 im Script:
Ich blicke grade net durch. Unter Squeeze lief das Script einwandfrei.
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!