![](https://www.winhistory-forum.net/core/images/avatars/b4/232-b4e73c742627bd847aca3c94d6f6c2075ba42106.webp)
Der Code-Schnippsel-Thread
-
-
Gerade aus Langeweile beim essen was zusammengebastelt und nicht getestet, sollte so in der Art aber als Lösungsansatz taugen:
PHP
Alles anzeigen<?php $randzahlen=array(); $identische=array(); for($i=0;$i<=5;$i++) { $randzahlen[]=rand(1,48); } for(i=0;$i<=5;$i++) { foreach($randzahlen as $randzahl) { $userzahl=htmlspecialchars($_POST["zahl"][$i]); if(is_numeric($userzahl)) { if($userzahl==$randzahl) { $identische[]=$userzahl; } } else { echo '<p>Alle Felder müssen Zahlen beinhalten!</p>'; } } } if($identcount>0) { echo '<p>Glückwunsch! Folgende Treffer waren bei den Tipps dabei:</p>'; echo '<ul>'; foreach($identische as $treffer) { echo ' <li>'.$treffer.'</li>'; } echo '</ul>'; } else { echo '<p>Leider haben Sie mit Ihren Tipps keine Treffer gehabt.</p>'; } echo '<p>Folgende Zahlen haben Sie getippt:</p>'; echo '<ul>'; for(i=0;$i<=5;$i++) { echo '<li>'.htmlspecialchars($_POST["zahl"][$i]).'</li>'; } echo '</ul>'; ?>
-
-
Schnee für die Konsole, geil
-
Backupskript:
Bash
Alles anzeigen#!/bin/bash DATE=$(date +"%m-%Y") HOST=$(hostname) NAME="Backup" FULLNAME=$NAME-$HOST-$DATE SOURCE=$@ TARGET=/save/$FULLNAME/ REMOTETARGET=/data/Backup\ Clients/$HOST/$FULLNAME/ LOG=/save/logs/$FULLNAME.log TMPLOG=/save/logs/$FULLNAME.log.tmp if [ -z $@ ]; then echo "Bitte Quelle als Parameter angeben" exit 0 fi if [ -e $TARGET ]; then rsync -avu $SOURCE $TARGET |tee >> $TMPLOG else mkdir $TARGET rsync -avu $SOURCE $TARGET |tee >> $TMPLOG fi /usr/bin/Server if [ $?=0 ]; then rsync -avu $SOURCE $REMOTETARGET |tee >> $TMPLOG else echo "Spacecube nicht erreichbar" |tee >> $TMPLOG fi cat $TMPLOG >> $LOG rm $TMPLOG
Ausgabe
Coderoot@phoenix:/home/tobias/Desktop# Backup /home/tobias/Downloads/ spacecube ist nicht erreichbar rsync: link_stat "/data/Backup" failed: No such file or directory (2) rsync: mkdir "/home/tobias/Desktop/Clients/phoenix/Backup-phoenix-12-2013" failed: No such file or directory (2) rsync error: error in file IO (code 11) at main.c(674) [Receiver=3.1.0] root@phoenix:/home/tobias/Desktop#
-
Bash
Alles anzeigen#!/bin/bash DEST="/data/save/Backup Clients/$SYS[$*]/Monatsbackup/Backup-$(date-%m-%Y)" SYS=("phoenix" "voyager" "appletree") SOURCE="$SYS:/save" if [ !-e "$DEST" ]; then mkdir "$DEST" fi for $SYS[$*] ; do mount $SYS:/save /tmp rsync -avu $SOURCE $DEST unount /tmp done
Kann mal jemand das Skript überprüfen?
-
-
gist.github.com
-
Schickes und praktisches Script!
Kleiner Verbesserungsvorschlag noch: Würde jedoch definitiv was anderes als /tmp als Mountpoint nehmen, da sonst eventuell anfallende temporäre Dateien auf dem NFS landen. Dafür bietet sich doch /mnt ganz gut an. Würde mir nen /mnt/nfs machen und dann dort jeweils hinmounten.
-
Kann mal jemand das Skript überprüfen?CodeDEST="/data/save/Backup Clients/$SYS[$*]/Monatsbackup/Backup-$(date-%m-%Y)" # ... rsync -avu $SOURCE $DEST
rsync: link_stat "/data/Backup" failed: No such file or directory (2)
Erste Regel beim Umgang mit Dateinamen (mit Leerzeichen) in Shellskripten: Du. Brauchst. Mehr. Anführungszeichen.
Zitatmkdir "/home/tobias/Desktop/Clients/phoenix/Backup-phoenix-12-2013" failed: No such file or directory
Du brauchst den -p-Parameter für mkdir, um rekursiv Verzeichnisstrukturen zu erstellen.
Ich weiß nicht vollständig, was das darstellen soll; wenn du allerdings indirekte Variablenersetzung im Sinn hast, ist das der falsche Weg. $SYS wird in beiden Fällen nur einmalig durch nichts bzw. den ersten Wert im Array ersetzt. Schiebs im einfachsten Fall in deine Schleife und ersetze $SYS durch $host.
Außerdem die üblichen kleinen Tippfehler:
Zitat$(date [b]+%m-%Y[/b])"u[b]m[/b]ount /mnt/nfs
-
Code
Alles anzeigen10 PRINT "" 20 PRINT "DISKETTEN-FORMATIERUNGSPROGRAMM" 30 PRINT "" 40 PRINT "FORMATIERE DISKETTE IN LAUFWERK 8" 50 OPEN 1,8,15,"N:LEER,00":CLOSE 1 60 PRINT "" 70 DIRECTORY 80 PRINT "" 90 INPUT "ZUM NEUSTART TASTE DRUECKEN, ABBRECHEN MIT N"; A$ 100 IF A$="N" THEN GOTO 120 110 GOTO 10 120 PRINT "ENDE"
Unscheinbar, absolut nicht perfekt und für die Meisten total unnütze. Aber wenn man mal eben um die 100 doppelseitige Disketten formatieren will, will man nicht immer alle Befehle einzeln eintippern. Funzt am C128 mit 'nem 1541-II problemlos - mit dem 1570 gibts seltsamerweise ab und an Probleme. Wird nur das Inhaltsverzeichnis gelesen, aber nix formatiert vorher. Gelegentlich gibts auch mal eine Fehleranzeige durch die Laufwerks-LED.
-
Schonmal mit N0:NAME,ID probiert?
-
Was soll das "N0:" statt "N:" bewirken?
-
Was soll das "N0:" statt "N:" bewirken?Bei Multi-Laufwerken Laufwerk #0, vielleicht umschifft es hier aber einen Bug im DOS.
-
Achso, du meinst wegen dem Problemchen, was das 1570 ab und an hat?
Ich habs mittlerweile ja alles fertig - mit dem 1541-II. War mir sogar lieber, dass es etwas langsamer ging. Mit dem 1570 bin ich ja nicht mal dazu gekommen, die Etiketten abzufriemeln, so schnell war das mit einer Diskette fertig
-
Mein zusammengestackoverflowter Erguss der letzten Stunde: Passworteingabe für Batch
CodeREM defensively test for powershell, fall back to echoing solution powershell -? >nul 2>&1 && ( powershell -Command "$pword = read-host \"Password\" -AsSecureString ; $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)" > .tmp.txt & set /p pwd=<.tmp.txt & del .tmp.txt ) || ( echo WARNING: POWERSHELL NOT FOUND, FALLBACK WILL ECHO YOUR INPUT! SET /P pwd=Password: cls )
-
Code
Alles anzeigencls rem Zielserver, auf den gesynct werden soll. In unserem Falle ist es 192.168.23.96 set zielserver=192.168.23.96 rem Home korrigieren set HOME=/Users/%USERNAME% rem Sicherungsvorgang rsync.exe -e "ssh -i /cygdrive/c/Users/%USERNAME%/.ssh/id_rsa" -av --delete --exclude=AppData/ --exclude=/ntuser* --exclude=NTUSER* /cygdrive/C/Users/%USERNAME%/ %USERNAME%@%zielserver%:/data/%USERNAME%/ rem Fuer Debug entkommentieren
-
Code
Alles anzeigenecho -ne "\e]0;Plink/Polipo-Proxy\a" PATH="/cygdrive/c/Program Files/TrueCrypt:/cygdrive/c/Program Files (x86)/PuTTY:$PATH" cd /cygdrive/c/work/polipo exit_handler() { # sending Ctrl+C to the console sends SIGINT to the foreground program as well kill $1 2>/dev/null TrueCrypt /q /ly /d } if [ ! -d /cygdrive/y/cache ]; then echo Mounte Cache... # Container mit Schlüsseldatei auf Laufwerk Y: einhängen # TrueCrypt öffnet GUI, wenn Key-Datei noch nicht im Treiber-Cache TrueCrypt /q /c y /ly /v polipo-diskcache.tc [ -d /cygdrive/y/cache ] || (echo Cache nicht ordnungsgemäß gemountet.; read; exit 1) fi echo Starte Plink... # PuTTY-Profil, das Verbindung durch HTTP-Proxy auf Port 443 herstellt plink -load "[ext] polipo" & P_PID=$! trap "exit_handler $P_PID" SIGHUP SIGINT SIGQUIT SIGTERM /usr/bin/sleep 2 echo Starte Polipo... ./polipo -c polipo-diskcache.conf
-
Code
Alles anzeigen############################# # Backup - Client-Part # Author Tobias Koehler # Mail: tk1908@gmail.com # Version 1.0 ############################# #!/bin/bash NAME="Backup" DATE=`date +"%m-%Y"` DEST="/save/Monatsbackups/$FULLNAME/" FULLNAME="$NAME-$DATE" TMPLOG="/var/log/backup.tmp" SOURCE="/save" LOG="/var/log/backup" if [ !-e "$DEST" ]; then mkdir "$DEST" rsync -avu $SOURCE $DEST fi if [ $RSYNC1_RET -eq 0 ]; then mailx -s "Backup $erfolgreich" $(whoami)@$(hostname) <$TMPLOG else mailx -s "Backup fehlgeschlagen" $(whoami)@$(hostname) <$TMPLOG fi rm $TMPLOG
Code
Alles anzeigen############################# # Backup - Server-Part # Author Tobias Koehler # Mail: tk1908@gmail.com # Version 1.0 ############################# #!/bin/bash NAME="Backup" DATE=`date +"%m-%Y"` DEST="/data/save/Clientbackup/$SYS[$*]/Monatsbackup/Backup-$(date +%m-%Y)" SYS=("phoenix" "voyager" "appletree") TMPLOG="/var/log/backup.tmp" SOURCE="/mnt/save" LOG="/var/log/backup" if [ !-e "$DEST" ]; then mkdir "$DEST" fi for $SYS[$*] ; do mount $SYS:/save /mnt/save rsync -avu $SOURCE $DEST |tee -a $TMPLOG >>$LOG unount /mnt/save done
-
Alle Shorthand-Tags in PHP-Dateien durch die lange Version ersetzen. Geht rekursiv alle durch.
Unter OSX muss man noch brew install gnu-sed machen und gsed statt sed einsetzen, da es den Parameter -i nur in der GNU- und nicht der BSD-Version gibt.
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!