# Hacks und Commands

**\*\*Images mit dd:\*\***  
Komprimiertes Image Vom Laufwerk erstellen:  
dd if=/dev/sda | gzip --best &gt;kodi-Image.gz

Zurückschreiben:  
gunzip -c kodi-Image.gz | dd of=/dev/sda

  
**\*\*Dateiliste erstellen und die Liste mit einem Befehl abarbeiten:**  
\*\*  
\*#/bin/bash  
find /media/usbhd/Multimedia/Video/recordings/ -name "\*.mpeg"&gt;liste  
for f in $(cat liste) ; do   
rm $f  
done

**\*\*\*Encodieren nach Liste\*\*\***

\*#/bin/bash  
find /Media/Video/recordings/ -mtime 90 -name "\*.mpeg"&gt;mpeg\_liste  
for mpeg in $(cat mpeg\_liste) ; do   
mencoder -ovc x264 -oac mp3lame -ofps 25 -o $mpeg.mp4 $mpeg  
done

\--------------------------------------------------------------------

**Find and do something...serial**

find -iname '\*.pdf' -exec cp {} /home/willi/pdf/ \\;

\-----------------------------------------------------------------------  
**\*\*Audio extraieren aus \*.mp4\*\***  
ffmpeg -i "The Eagles - Hotel California.mp4" -vn -acodec flac file.flac

**\*\*JPG aus \*mp4 extraieren\*\***  
ffmpeg -i "vlc-record.mp4" -an -f image2 "output\_%05d.jpg"

**\*\*mp4 aus jpg + Text einfügen**

Insert Text in Video:  
ffmpeg -i output\_Montag2.mp4 -vf drawtext="fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf:text='12.04.21':fontsize=20:fontcolor=blue:x=1800:y=10" with\_text3.mp4

ffmpeg -framerate 25 -start\_number 4 -i Photo/Montag/image-%04d.jpg -c:v libx264 -profile:v high -crf 20 -pix\_fmt yuv420p /home/willi/Montag\_16-20output.mp4

ffmpeg -framerate 25 -i install/MO/image%04d.jpg -c:v libx264 -profile:v high -crf 20 -pix\_fmt yuv420p /home/willi/Montag\_19output.mp4

\------------  
**\*\*Video kodieren x265\*\***  
ffmpeg -i "Der Auftragskiller - Zimmer 164.mp4" -c:v libx265 -preset medium -x265-params crf=25 -c:a aac -strict experimental -b:a 128k output.mp4

\------------  
**\*\*HD-Streams bearbeiten\*\***  
1\. ffmpeg -i 'vlc-record-.ts' -vcodec copy -acodec copy 'Wallander.ts'  
 -korrigiert Fehler im Stream

2\. ffmpeg -ss 00:05:55 -i 'Wallander.ts' -vcodec copy -acodec copy -bsf:a aac\_adtstoasc -f mp4 'Wallander.mp4'  
\- ss: schneidet die ersten 34 Sekunden ab  
\- t : Schnitt an Streamposition 1:35:44 (gemessen ab -ss)  
\- bsf: behebt Fehler in der Audiospur  
\------------

**Permissions von Files numerisch anzeigen:**

```
stat -c "%A %a %N" *
```

\-----------------

**\*\*Leerzeichen in Dateinamen entfernen\*\***  
\*#/bin/bash  
 for i in \*\\ \*  
do mv "$i" "${i// /\_}"  
done\*  
oder:  
\*#/bin/bash  
 for i in /media/usbhd/Multimedia/Video/recordings/Deutsches\_Europa\_Kino/\*.mp4  
do mv "$i" "${i// /\_}"   
done

\------------

**\*\*Installation nach Paketliste\*\***  
\#/bin/bash  
for pkg in $(cat installed\_packages.list) ; do   
 apt-get -y install $pkg  
 done

\#Paketliste erstellt mit: dpkg -l|grep ii|awk '{print$2}'&gt;installed\_packages.list

\------------  
**\*\*Verschlüsseln/entschlüsseln mit ssl\*\***

\*  
\*#!/bin/bash\*  
\*# make sure we get a file name\*  
if \[ $# -lt 1 \]; then  
 echo "Usage: $0 filename"  
 exit 1  
fi  
openssl enc -e -aes256 -in "$1" -out "$1".enc\*

\*#!/bin/bash\*  
\*# make sure we get 2 files\*  
if \[ $# -lt 2 \]; then  
 echo "Usage: $0 encrypted\_file decrypted\_file"  
 exit 1  
fi  
openssl enc -d -aes256 -in "$1" -out "$2"

\------------  
**\*\*Streaming mit vlc\*\***  
\*\*  
\*\*#/bin/bash  
cvlc .mplayer/Sender.conf --extraintf http --sout udp:172.16.1.164&amp;  
exit

\------------

**\#### Phpmyadmin für weiteren Server einrichten:**  
 \*\*Datei: /etc/phpmyadmin/config.inc.php\*\*:

&lt;?php   
$cfg\['blowfish\_secret'\]='multiServerExample70518';  
//any string of your choice (max. 46 characters)  
$i = 0;   
   
$i++; // server 1 :  
$cfg\['Servers'\]\[$i\]\['auth\_type'\] = 'cookie'; // needed for pma 2.x  
$cfg\['Servers'\]\[$i\]\['verbose'\] = 'no1';   
$cfg\['Servers'\]\[$i\]\['host'\] = 'localhost';  
$cfg\['Servers'\]\[$i\]\['extension'\] = 'mysqli';  
// more options for #1 ...  
   
$i++; // server 2 :  
$cfg\['Servers'\]\[$i\]\['auth\_type'\] = 'cookie';  
$cfg\['Servers'\]\[$i\]\['verbose'\] = 'no2';   
$cfg\['Servers'\]\[$i\]\['host'\] = 'banapi';//or ip:'10.9.8.1'  
// this server must allow remote clients, e.g., host 10.9.8.%  
// not only in mysql.host but also in the startup configuration  
$cfg\['Servers'\]\[$i\]\['extension'\] = 'mysqli';  
// more options for #2 ...   
   
// end of server sections  
$cfg\['ServerDefault'\] = 0; // to choose the server on startup  
   
// further general options ...  
?&gt;

\------------  
**\#### Teamviewer auf 64bit**

Vielleicht zur Erklärung:  
Das 64-Bit-Paket verwendet zum installieren das Paket Debiania32-libs, welches seit Wheezy nicht mehr vorhanden ist.  
Du musst also die 32Bit Version installieren und vorher Multiarch freischalten mit:

dpkg --add-architecture i386

Danach ein

apt-get update

Jetzt das Paket herunterladen:

wget http://download.teamviewer.com/download/teamviewer\_i386.deb

Das Paket installieren:

dpkg -i teamviewer\_i386.deb

Und fehlende Abhängigkeiten installieren:

apt-get install -f

  
Steht auch sonst alles hier:  
-&gt; http://www.teamviewer.com/en/help/363-How-do-I-install-TeamViewer-on-my-Linux-distribution.aspx

\------------

  
**\#### Samba meckert uber Cups -das gar nicht installiert ist...**

\#####prevent logsentries about cups####  
 load printers = no  
 printing = bsd  
 printcap name = /dev/null  
 disable spoolss = yes

\------------  
**\#### NATNAT:** Dem Kernel das Weiterleiten beibringen  
Wir möchten also dem Kernel das folgende mitteilen: Bei Paketen aus dem lokalen Netz, dessen IP-Adresse   
nicht mit seiner übereinstimmt, soll er die Absender-Adresse auf sich selbst ändern. Dazu machen wir noch   
die Annahme, dass das erste Netzwerk-Interface des Linux-Routers "eth0" mit dem lokalen Netz verbunden ist   
und die Internet-Verbindung am zweiten Interface "eth1" verfügbar ist.   
Der Befehl zur Freigabe der Internet-Verbindung lautet dann:

  **\*Anbinden eines LAN an das Internet\***  
 $&gt; iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE  
 iptables-Tabellen speichern

\*\*Beispiel um iptables-Tabellen zu speichern\*\*:

sudo iptables-save &gt; /etc/iptables\_01.save

\*\*Beispiel um iptables-Tabellen wieder zu laden. Vorhandenen Regeln werden dabei gelöscht bzw. überschrieben.\*\*

sudo iptables-restore &lt; /etc/iptables\_01.save

\*\*So werden bereits vorhandene Regeln nicht gelöscht:\*\*

sudo iptables-restore -n &lt; /etc/iptables\_01.save  
sudo iptables-restore --noflush &lt; /etc/iptables\_01.save

So können natürlich auch mehrere Tabellen gespeichert und je nach Bedarf wieder geladen werden.  
\*\*iptables-Tabellen löschen\*\*

sudo iptables --flush   
\#### \[Linux Nat Toutorial\](http://www.karlrupp.net/de/computer/nat\_tutorial "Linux Nat Toutorial")  
\------------

**\#### Mit sed alle Zeilen löschen, die "pattern" enthalten**  
sed '/pattern to match/d' ./infile  
To directly modify the file (and create a backup):  
sed -i.bak '/pattern to match/d' ./infile

\#/bin/bash  
mount -t cifs //fritz.box/fritz.nas /home/willi/smb -o username=Maria,password=oma

**\*\*SSH Passwordless Login\*\***   
ssh-keygen -t rsa   
ssh-copy-id -i ~/.ssh/id\_rsa.pub user@remote-system

**\*\* Dateiberechtigungen sichern\*\***

To back up permissions in the current directory and its subdirectories recursively:

getfacl -R &gt;permissions.facl  
To restore permissions:  
setfacl --restore=permissions.facl

**\*\*Filesystemcheck:\*\***

umount /media/veracrypt1  
fsck /dev/mapper/veracrypt1

**\*\*Splitten von MP3:\*\***  
mp3splt:  
Automatisch:  
mp3splt -c query file.mp3  
Manuell  
mp3splt -s -p min=2 file.mp3

**\*\*Mount Winfreigabe:\*\***  
mount -t cifs //fritz.box/fritz.nas /home/willi/smb -o username=Maria,password=oma

**wget komplette Seite**

wget -r -l 0 -p -k -D alan-g.me.uk -L -np [http://www.alan-g.me.uk/l2p/](http://www.alan-g.me.uk/l2p/)

<header class="entry-header" id="bkmrk-pihole-docker-unboun">##### PiHole Docker Unbound – Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use

<div class="neatmag-entry-meta-single"><span class="neatmag-entry-meta-single-date">  
</span></div></header>```
systemctl disable systemd-resolved.service
systemctl stop systemd-resolved.service
rm /etc/resolv.conf
echo 1.1.1.1 > /etc/resolv.conf
```

\----------------------------------------------------------------------------------------------

Symbolic links

ln -s {source-filename} {symbolic-filename}

\---------------------------------------------------------------------------------------------------------------------------------------------

#### Performance VPS-Server

```plain
apt update
apt upgrade -y
apt install sysbench fio bpytop iperf3

lscpu
lspci

ping ipv4.ipv64.net
ping ipv6.ipv64.net

iperf3 -c speedtest.myloc.de -p 5200 -P 10 -4
iperf3 -c speedtest.myloc.de -p 5200 -P 10 -4 -R

sysbench cpu run
sysbench memory run

dd if=/dev/zero of=/root/test.iso bs=128k count=10000

## Schreib- / Lesetests
fio --name=write-test --size=1G --filename=/tmp/fio-testfile --bs=128k --rw=write --direct=1 --numjobs=1 --time_based --runtime=30 --group_reporting
fio --name=read-test --size=1G --filename=/tmp/fio-testfile --bs=128k --rw=read --direct=1 --numjobs=1 --time_based --runtime=30 --group_reporting
fio --name=realistic-test --filename=/tmp/fio-testfile --size=2G --bs=64k --rw=randrw --rwmixread=70 --direct=1 --iodepth=16 --numjobs=4 --time_based --runtime=60 --group_reporting
```