Der Code-Schnippsel-Thread

  • Hatte ich glaube ich schonmal in anderer Form gepostet: Mein scpler-Script :D

    Bash
    #!/bin/bash
    leute=$(ps aux | grep notty | grep -v grep | cut -d : -f 4 | cut -d @ -f 1)
    echo "$(echo $leute | wc -w) Leute sind per SCP aktiv."
    echo ""
    echo "Im Einzelnen sind das: $(echo $leute | sed 's/ /, /g')"
  • Was soll ich essen?

    Perl
    #!/usr/bin/perl
    @essen=("Außen-Döner", "Real Döner", "Laote/Chinese", "Kotlettbude", "Pizza La Strada", "Pizza Firenze");
    $zufall=int(rand($#essen));
    print "Geh heute zu ".$essen[$zufall]."!\n\n";

  • Was soll ich essen?

    Perl
    #!/usr/bin/perl
    @essen=("Außen-Döner", "Real Döner", "Laote/Chinese", "Kotlettbude", "Pizza La Strada", "Pizza Firenze");
    $zufall=int(rand($#essen));
    print "Geh heute zu ".$essen[$zufall]."!\n\n";

    Nützlich :D


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

  • Ich hab das vor gut 2 Jahren geschrieben und finds immernoch toll, wenn ich mich nicht entscheiden kann :D

  • Auf Mac OSX zwischen 3D- und 2D-Dock hin und herschalten:

    Bash
    #!/bin/bash
    status=$(defaults read com.apple.dock no-glass)
    if [ "$status" = "0" ]
    then
    	neu="YES"
    else
    	neu="NO"
    fi
    defaults write com.apple.dock no-glass -boolean $neu
    killall Dock
  • Für solche Kleinigkeiten installier ich keine extra Tools, wenn sie auch mit einem Bash-Dreizeiler gehen.

  • Kann man doch auch als Einzeiler bauen, ist dann halt nicht eingerückt :trollface:

    Code
    if [ "$(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 :D

    Code
    for i in ${HOSTNAME}* ca.crt client.conf; do scp stuart.shadowtux.info:/etc/openvpn/easy-rsa2/keys/${i} /etc/openvpn/; done
    sed "s/benutzer/${HOSTNAME}/" /etc/openvpn/client.conf
  • Da ich sowas gerade in der Bash gebastelt habe, habe ich noch fix ein bisschen Bash drumgemacht und fertig ist ein Script :D

  • 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 :D
    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.


  • So mein Code sieht nun so aus:

    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:

    Code
    tobias@darkstar:~$ Backup.sh 
    /usr/bin/Backup.sh: Zeile 28: [: Zu viele Argumente.
    tobias@darkstar:~$

    Zeile 28 im Script:

    Code
    if [ $RSYNC1_RET -eq 0 -a $RSYNC2_RET -eq 0 ]; then

    Ich blicke grade net durch. Unter Squeeze lief das Script einwandfrei.


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!