Pimp my Elementary OS 0.4 (Loki) – Teil 2

Bash, ElementaryOS, Fun

Hier noch eine verbesserte Form des alten Skriptes:

#!/bin/bash
##
## Usage: loki_post_install [options]
##
## Removes unnecessary and add usefull software to a fresh installed Elementary OS 0.4 (Loki).
## Must be run as root.
##
## Options:
##  -h, --help      Display this message.
##

main() {
while [ $# -gt 0 ]; do
case $1 in
(-h|--help) usage;;
(--) shift; break;;
(*) break;;
esac
done
if [ $(whoami) != "root" ]; then
echo "This program must be run as root."
exit 1
fi
software
}
usage(){
[ "$*" ] && echo "$0: $*"
sed -n '/^##/,/^$/s/^## \{0,1\}//p' "$0"
exit 2
}
msg() {
(echo; echo \*\*\* $1 \*\*\*; echo)
}
software() {
msg "Prepare system"
apt update && apt upgrade -y && apt autoremove -y && apt autoclean -y
msg "Remove software"
apt purge maya-calendar pantheon-mail appcenter simple-scan -y
msg "Install software"
apt install zip unzip rar unrar gnome-disk-utility firefox lilypond fluid-soundfont-gm timidity libav-tools openjdk-8-jdk-headless -y

vbox=`dmidecode -t system | grep -i 'virtualbox' | wc -l`
if [ $vbox -gt 0 ]; then
msg "Install & configure additional software for VirtualBox"
apt install virtualbox-guest-additions-iso virtualbox-guest-utils

if [ $SUDO_USER == "" ]; then
adduser $USER vboxsf
else
adduser $SUDO_USER vboxsf
fi
fi

msg "Clean up"
apt update && apt upgrade -y && apt autoremove -y && apt autoclean -y
}

main "$@"

Feedback welcome!

Advertisements

Linux Standardprogramme Teil 1 – FIND

Bash, Fun

Es gibt ja einige sehr mächtige Standardprogramme bei linux wie awk, sed oder auch find – um nur 3 zu nennen. Letzteres benutzt man gern mal hier und da, vergisst dann aber im Laufe der Zeit wieder wie genau das mit der Syntax war. Daher hier nun einige Beispiele in Verbindung mit dem Programm wc („word count“).

# Im aktuellen Verzeichnis rekursiv absteigend die Anzahl aller Dateien zählen
find . -type f | wc -l
# Im aktuellen Verzeichnis rekursiv absteigend die Anzahl aller Verzeichnisse zählen
find . -type d | wc -l
# Im aktuellen Verzeichnis rekursiv absteigend alle MP3-Dateien zählen
find . -iname '*mp3' | wc -l
# Im aktuellen Verzeichnis rekursiv absteigend alle MP3 oder FLAC-Dateien zählen
find . -iname '*mp3' -o -iname '*flac' | wc -l
# Im aktuellen Verzeichnis (nicht rekursiv absteigend) alle Dateien auflisten
find ./* -maxdepth 0 -type f
# Im aktuellen Verzeichnis (nicht rekursiv absteigend) alle Dateien, auch die versteckten, auflisten
find ./ -maxdepth 1 -type f #This does show hidden files

Pimp my Elementary OS 0.4 (Loki)

Bash, ElementaryOS, Fun

Also das neue schicke Elementary OS ist ja nun verfügbar, jedoch fehlt hier und da das ein oder andere wichtige Tool für mich. Und da ich den Laptop nur als Zweitrechner nutze brauche ich ja kein extra Mailprogramm geschweige denn ein Scanprogramm…

Lange Rede kurzer Sinn: Einiges musste  weg, einiges noch hinzu kommen damit ich mit dem Endergebnis so richtig zufrieden bin…

#!/bin/bash
##
## Usage: loki_post_install [options]
##
## Removes unnecessary and add usefull software to a fresh installed Elementary OS 0.4 (Loki).
## Must be run as root.
##
## Options:
##   -h, --help    Display this message.
##   -d            Display debug information.
##

DBG=0;

main() {
while [ $# -gt 0 ]; do
case $1 in
(-d) DBG=1;shift;;
(-h|--help) usage 2>&1;;
(--) shift; break;;
(-*) usage "$1: unknown option";;
(*) break;;
esac
done
if [[ $(whoami) != "root" ]]; then
echo "This program must be run as root." >&2
exit 1
fi
software
}

usage() {
[ "$*" ] && echo "$0: $*"
sed -n '/^##/,/^$/s/^## \{0,1\}//p' "$0"
exit 2
} 2>/dev/null

msg() {
if [ $DBG -eq 1 ]; then
(echo; echo \*\*\* $1 \*\*\*; echo)
fi
}

software() {
msg "Prepare system"
apt update -y && apt upgrade -y && apt autoremove -y
msg "Remove software"
apt purge maya-calendar pantheon-mail appcenter simple-scan -y
msg "Install software"
apt install zip unzip rar unrar gnome-disk-utility firefox lilypond frescobaldi fluid-soundfont-gm timidity -y
msg "Clean up"
apt update -y && apt upgrade -y && apt autoremove -y
}

main "$@"

 

Bash Script zur Anzeige der lokalen und öffentlichen IP-Adresse

Bash, Fun

Immer wieder benötigt man ja mal entweder die IP-Adresse im lokalen Netzwerk oder die gerade vergebene öffentliche. Dazu gibt es ja nette Widgets (für KDE4 biespielsweise den IP Adress Monitor), kleine Anwendungen bzw. Programme oder auch Websites die einem die gerade vergebene öffentliche IP-Adresse anzeigen.

Zur einfachen Weiterverarbeitung bzw. zum scripten wäre ein Bash Script jedoch auch nicht schlecht. Daher hab ich mal folgendes geschrieben:

#!/bin/bash

# read interface
if [ $# -ne 2 ]; then
echo "Usage: myipaddress.sh INTERFACE PUBLIC|PRIVATE"
echo "Example: myipaddress.sh eth0 public"
echo "         myipaddress.sh wlan5 private"
exit 1
fi
INTERFACE=$1

# echo result
if [ $2 == "public" ] || [ $2 == "PUBLIC" ]
then
echo `wget http://ipecho.net/plain -O - -q`
else
# use ip if installed
if hash ip 2>/dev/null; then
echo `ip -f inet -o addr show wlan5|cut -d\  -f 7 | cut -d/ -f 1`
else
echo `/sbin/ifconfig wlan5 | grep 'inet ' | cut -d: -f2 | awk '{ print $1}'`
fi
fi

Bash Script zum Download von Flash Videos oder: Wie downloade ich ein Video im Streaming?

Bash, Fun

Guckt man irgendein Video im Internet und handelt es sich um modernes HTML5 (mit meistens mp4 Dateien), dann kann man auf verschiedenen Wegen sich das Video auch downloaden. Egal ob der Quelltext durchwühlt wird um dann den Link an curl oder wget weiterzureichen, mittels Menüpunkt „Extras > Seiteninformationen > Medien“ (im Firefox) oder auch via Add-on (Firefox) – an solcherlei Videos kommt man leicht.

Schwieriger ist es hingegen, wenn ein Video via Flash gestreamt wird. Da kann man mit der swf Datei oftmals nicht viel anfangen. Aber irgendwo muss doch das bereits gestreamte in Bits und Bytes auf der Platte sein?
Und nachdem ich mir diese Frage stellte und etwas gegoogelt hatte fand ich dann auch eine Antwort welche ich in dieses kleine Script gepackt habe. Damit werden alle derzeit in Streaming befindlichen Videos lokal gespeichert. Mit einem gängigen Videoplayer wie VLC können diese dann auch offline begutachtet werden…

#!/bin/bash

# check if pid exists
pid=`ps aux | grep libflashplayer.so | grep /usr/lib | awk '{print $2}'`
#echo $pid
if [[ $pid ]]; then
# find dir
idx=0
for dir in `lsof -p $pid | grep deleted | awk '{print $4}'`
do
#echo $dir
idx=$((idx + 1))
dir=${dir//[!0-9]/}
# copy video
echo "Trying to save video $idx..."
`cp /proc/$pid/fd/$dir stream_video_$idx`
done
else
echo "ERROR: Unknown error..."
fi