Shuffleco.de

Yet another blog...

VLC HomeNetwork RTP Streaming

Um von einem Rechner der einen Webstream empfängt, die Daten an andere Audioclients im Lan weiterzugeben: VLC Multistreaming!

    cvlc -vvv <Stream Adresse> --sout '#duplicate{dst=rtp{dst=<Ziel-IP>},dst=display{delay=500}'

Delay an Verbindungsgeschwindigkeit anpassen, bei mir ist alles zer-W-Lan’t, daher 500ms Delay auf der Wiedergebenden Maschine.

Werden weitere Clients eingebunden, einfach ein weiteres

    dst=rtp{dst=<Ziel-IP>}

anfügen.

Grüsse,

@Shufflecode

Automounter

Ein Problem das ich Zuhause immer habe wenn ich meine Workstation boote: Meine Musik und die Filme liegen auf dem Mediaserver im Wohnzimmer. Damit ich nicht immer hinrennen muss um die Kiste von Hand zu booten, habe ich dieses Script geschrieben, das den HTPC bootet, und meine Medienfreigabe automatisch mountet. Benötigt weden die IP des Hosts und die MAC Adresse seiner Netzwerkkarte. wakeonlan bootet den Host dann und nachdem man ihm etwas Zeit gegeben hat zum Hochfahren, wird über gvfs-mount die Freigabe ins Dateisystem eingehängt.

Automounter.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#HTPC Autoboot / Automount
#ShuffleCode, 16.05.2013

#!/bin/sh

#--------------
HTPC="192.168.0.103"
HTPC_MAC="00:1f:c6:85:71:aa"
COUNT=1

ON=$(ping -c 1 $HTPC | grep received | cut -d "," -f 2 | cut -d " " -f 2)
echo "teste"
if [ $ON == "1" ]
then
  notify-send "MEDIACENTER ist an, Mounte Musik"
  gvfs-mount sftp://media@$HTPC
else
  notify-send "MEDIACENTER ist aus, boote jetzt"
  wakeonlan $HTPC_MAC
  notify-send "warte auf $HTPC..."
  #WAIT FOR HTPC to BOOT
  TEST="0"
  while [ $TEST == "0" ]
  do
      TEST=$(ping -c $COUNT $HTPC | grep received | cut -d "," -f 2 | cut -d " " -f 2)
  done
  sleep 20
  gvfs-mount sftp://media@$HTPC
  notify-send "MEDIACENTER ist an, Mounte Musik"
fi

Grüsse,

@Shufflecode

Logrotate

Ein Logrotate Bashscript. Es gibt sicher effizientere Lösungen, allerdings habe ich keine von denen selbst geschrieben :) Daher, und zum Üben hab ich das mal gemacht.

logrotate.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#Logfile Größenbegrenzung
# PARAM 1 = Datei
# PARAM 2 = Groesse in KB
#ShuffleCode, 13.05.2013

#!/bin/sh

fehlermeldung="Maximale Länge (in KByte) einer Datei ueberwachen. \nusage: $0 FILE SIZE"

#Paramter Anzahl prüfen
if [ $# -ne 2 ]
then
        echo -e $fehlermeldung >&2
        exit 1
fi

#vorhandensein der Datei prüfen
if [ -f $1 ] # Datei vorhanden
then
        echo -e "OK\n"
else
        echo -e "Datei $1 nicht vorhanden\n" >&2
        echo -e $fehlermeldung
        exit 2
fi

#Dateinamen speichern
FILE=$1
FAKTOR=1024
#KBytes in BYtes umrechnen
SIZE=$2
MAXSIZE=$(($SIZE * $FAKTOR))

#Owner speichern
OWNER=`ls -l $FILE | cut -d ' ' -f3`
GROUP=`ls -l $FILE | cut -d ' ' -f4`
#echo -e "besitzer: $OWNER \nGruppe: $GROUP"
TMP='/tmp/$$.tmp'
#echo -e "FILE TMP : $TMP"

#DateigRösse von File ermitteln
FILESIZE=`ls -l $FILE | cut -d ' ' -f5`

echo -e "Aktuelle Groesse: $FILESIZE"
echo -e "Maximale Groesse: $MAXSIZE"

ZAEHLER=0
TRUE=1
while [ $TRUE ]
do
        FILESIZE=`ls -l $FILE | cut -d ' ' -f5`
        echo -e "Aktuelle Groesse : $FILESIZE"
        if [ $FILESIZE -gt $MAXSIZE ]
        then
                touch $TMP
                echo -e "Komprimiere: "
                chown $OWNER $TMP
                chgrp $GROUP $TMP
                chmod --reference $FILE $TMP
                gzip -f $FILE
                mv $FILE.gz $FILE$ZAEHLER.gz
                mv $TMP $FILE
                let "ZAEHLER +=1"
        fi
sleep 60
done

Grüsse,

@Shufflecode

Wenn Es Dunkel Wird..

Kann man froh sein jemanden zu haben, der einem den Weg leuchtetoder einen Ausgang zeigt.

Jemanden der ein Netz spannt um Euch aufzufangen wenn Ihr fallt, Euch Halt gibt.

Ich habe so jemanden, und weiss nicht was ich ohne Sie machen würde.

Ich wünsche Euch allen so eine Person.

@Shufflecode

MySQL-Sicherheit

Das ist ein Vortag den ich im Rahmen meiner Ausbildung erstellt habe.

Er enthält:

  • eine Präsentation (pdf),
  • ein Netbeans-Projekt zum ausprobieren
  • ein SQL script zum ausführen auf dem Server (erstellt die Datenbank und einige Daten für die Java-Applikation)
  • ein Arbeitsblatt als “Workshop” für die Teilnehmer

die Java-Applikation ist nur ‘quick and dirty’ zusammengehackt und zeigt den Unterschied zwischen eingebetteten Sql strings und prepared- Statements.

..in der Hoffnung das jemand etwas damit anfangen kann:

@Shufflecode

New Octopress Post Per Bash Script

Hi,

heute habe ich ein bashscript geschrieben, das es mir einen Octopress Post erstellt und direkt im Anschluss an den server schickt.

Vielleicht hilft es dem einen oder anderen.

new_blogpost.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
#Octopress neuer Blogeintrag
#Shuflecode 30.04.13

##Paths of Octopress
octopress_dir="$HOME/octopress"
posts_dir="$HOME/octopress/source/_posts"

##Variables
date=$(date '+%Y'-'%m'-'%d')

##Show PopUp to get Blogpost-title
input=$(zenity --text "Titel" --entry)
retval=$?
echo $octopress_dir
##handling of user input
case $retval in
0) 
  #OK
  #replace spaces in input with dashes
  input=${input// /-}
  cd $octopress_dir;
  sleep 1;
  #generate file
  rake new_post["$input"];
  cd $posts_dir
  gedit $date-$input.markdown;
  notify-send "starte Post-Edit";
  #parse markdown and generate html / js/ css
  rake generate;
  #deploy on site
  rake deploy;
  notify-send "Blogpost gesendet";
  cd $HOME;;
1)
  #Cancel
  echo "ende";;
esac

Grüsse,

@Shufflecode