Scripte

Scripte zum Linuxen :)


MD5 Sums über Partitionen ziehen

#!/bin/bash
datum=`date +%d.%m.%y_%H.%M`
find /mnt/hda2 -type f -print0 > md5dateien.lst
cat < md5dateien.lst | xargs -0 md5sum > $datum.md5dateien.md5
rm md5dateien.lst
wc *.md5


Swapverhalten einstellen

echo -n "10" > /proc/sys/vm/swappiness


vim Einstellungen speichern

.vimrc im Homeverzeichnis erstellen oder die /etc/vim/vimrc editieren

Inhalt:

autocmd!
syntax on
set nowrap


Abmeldedialog mit Zenity

einfach als exit.sh abspeichern und mit Gnome-Starter aufrufen ( die Sudoer Einträge nicht vergessen!) Inhalt:

ARG=`zenity --list --radiolist --text "Aktion wählen" --title "Was möchten sie tun?" 
            --column "Aktiv" --column "Name" TRUE "Logout" FALSE "Reboot" FALSE "Shutdown"

if test "$ARG" = "Logout"; then
   #echo "Logge aus"
   gnome-session-save --kill --gui
elif test "$ARG" = "Reboot"; then
   #echo "Reboote"
   sudo reboot
elif test "$ARG" = "Shutdown"; then
   #echo "Schalte aus" 
   sudo shutdown -h now
else
   echo ""
fi
exit 0


Festplattenpartition über SSH sichern

Image auf einen Server schieben und mit gzip komprimieren

dd if=/dev/hda4 bs=512 | gzip -9 | ssh user@host "cat > /mnt/backup/imagedatei_part4.gz"

Image zurücksichern (noch nicht getestet)

ssh user@host "gzip -d -c imagedatei_part4.gz" | dd of=/dev/hda4

besser:
=======

(Sven) - unzippen auf Zielrechner

1. ssh Login
2. cat Dateistream ausgeben
3. gunzip Dateistream unzippen
4. dd Dateistream in 8192 Blöcken auf die Festplatte (Partition 4) schreiben

ssh user@host "cat imagedatei_part4.gz" | gunzip | dd of=/dev/hda4 bs=8192


MBR über DD sichern / wiederherstellen

MBR in Datei sichern

// bs= Anzahl der Bytes -> MBR = 512 Bytes + Partitiontable
// count = Anzahl Eingabeblöcke kopieren

dd if=/dev/hda of=/root/mbrbackup/mbrbackup.mbr bs=512 count=1

MBR aus Datei zurückschreiben

dd if=/root/mbrbackup/mbrbackup.mbr of=/dev/hda bs=512 count=1 

Reboot oder fdisk w nicht vergessen ^^ d.h. Partitiontable neu einlesen


Auffinden von Dubletten innerhalb eines Dateibaums

  # findet alle Dateien ab dem aktuellen Verzeichnis, die höchstwahrscheinlich
  # mehrfach identisch vorkommen; mit find wird die Liste aller Dateien
  # erstellt; durch die korrespondierenden Optionen -print0 von
  # find und -0 von xargs werden auch File-Namen mit Leer-
  # und Sonderzeichen korrekt behandelt; für alle ermittelten Dateien wird die
  # 32 Zeichen lange externe Repräsentation der MD5-Summe errechnet; die Liste
  # wird nach dieser Summe sortiert; mittels uniq -D werden alle
  # Einträge der Liste ausgegeben, die mehrfach vorkommen; durch die Option
  # -w 32 betrachtet uniq nur die ersten 32 Zeichen jeder Zeile,
  # also die MD5-Summe und nicht den dahinter folgenden Dateinamen

find . -type f -print0 | xargs -0 md5sum | sort | uniq -D -w 32


Erstellen von VPN Zertifikaten für den Server

#!/bin/bash

mkdir certs
cd certs
echo "CA Cert erstellen..."
openssl genrsa -aes256 -out ca_key_vpn.pem 2048
openssl req -new -x509 -days 3650 -key ca_key_vpn.pem -out ca_cert_vpn.pem -set_serial 1
chmod 700 ../certs
touch serial
echo "01" > serial

echo ""
echo "Server Cert erstellen..."
echo "Wichtig: Common Name einzigartig halten und merken - wird sp&#65533;eter im VPN Script gebraucht"
echo ""
openssl req -new -newkey rsa:2048 -out server_csr_vpn.pem -nodes -keyout server_key_vpn.pem -days 3650
openssl x509 -req -in server_csr_vpn.pem -out server_cert_vpn.pem -CA ca_cert_vpn.pem -CAkey ca_key_vpn.pem -CAserial serial -days 3650
rm server_csr_vpn.pem

echo ""
echo "Zufallszahlen erstellen..."
openssl dhparam -out dh2048.pem 2048
echo ""

echo "Client Certs mit folgendem Commando vorbereiten:"
echo "./clientcerts <clientname>" 

Erstellen von VPN Zertifikaten für den Client

#!/bin/bash
cd certs
echo "Client Cert vorbereiten..."
openssl req -new -newkey rsa:2048 -out $1_csr_vpn.pem -nodes -keyout $1_key_vpn.pem -days 3650

echo ""
echo "Client Certs erstellen..."
openssl x509 -req -in $1_csr_vpn.pem -out $1_cert_vpn.pem -CA ca_cert_vpn.pem -CAkey ca_key_vpn.pem -CAserial serial -days 3650
echo ""
echo "CSR Cert loeschen..."
rm $1_csr_vpn.pem
echo "Clientcert $1_cert_vpn.pem und Clientkey $1_key_vpn.pem erstellt..."
cd .. 

Brennen von CDs in der Konsole

cdrecord -v -eject -driveropts=burnfree -dao dev=0,1,0 speed=24 /tmp/cd.img

CDRW löschen

cdrecord dev=0,0,0 -v blank=all

    * -v >>verbose<<
    * -driveropts=burnfree ,verwendet burnproof, oder ähnliche Schutzmechanismen zum vermeiden von Bufferunderruns
    * -eject ,wirft die CD nach dem Brennen aus
    * dev=0,1,0 ,hierüber wird das Gerät festgelegt, mit dem gebrannt wird: erste Nummer SCSI-Bus, 
                          zweite Nummer SCSI-ID, dritte Nummer Logical Unit Number ( LUN )
      die Werte sind mit >> cat /proc/scsi/scsi << oder cdrecord -scanbus >> herauszufinden
    * -dao ,schreibt unser ISO-File im Disk AT Once Modus, siehe weiter oben
    * -speed=24 der Brenner soll mit 24-facher Geschwindigkeit brennen
    * /tmp/cd.img Dies ist der Name des CD-Image, das auf den Rohling gebrannt werden soll.


FritzBox Restart Script

#!/bin/bash
SITEPASSWD=fritzbox
wget -O /dev/null --user-agent="Mozilla/5.0" --post-data="login:command/password=$SITEPASSWD" "http://fritz.box/cgi-bin/webcm?getpage=../html/index_inhalt.html"
wget -q -O /dev/null --post-data="logic:command/reboot" http://$SITEPASSWD@fritz.box/cgi-bin/webcm | echo "Fritzbox wird neu gestartet.."

Verzeichnis über Netzwerk auf SSH Server in Tar File sichern

tar -c * | ssh backupserver "cat - > /backups/backup.tar";

komprimiertes tar File übertragen

tar -cz * | ssh backupserver "cat - > /backups/backup.tgz";


Wlan Karte Ad-Hoc ueber Madwifi

    sudo wlanconfig ath0 destroy
    sudo wlanconfig ath0 create wlandev wifi0 wlanmode adhoc

Wlan über WPA Supplicant Konfigurieren

Wlan Device anlegen

sudo wlanconfig ath0 destroy
sudo wlanconfig ath0 create wlandev wifi0 wlanmode sta

Konfigurationsdateien ändern

/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1

network={
    ssid="tommlonair"
    scan_ssid=1
    proto=WPA
    key_mgmt=WPA-PSK
    pairwise=TKIP
    group=TKIP
    psk="wpakey1234"
}

/etc/network/interfaces

# Wlan Interface ath0
iface ath0 inet static
   address 192.168.0.250
   netmask 255.255.255.0
   network 192.168.0.0
   broadcast 192.168.0.255
   gateway 192.168.0.1
   dns-nameservers 192.168.0.1
   dns-search planetensystem
   wpa-driver madwifi
   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto ath0

Clamscan Script für LOG File mit Datum

#!/bin/bash
datestring=$(date +"%Y%m%d")

clamscan --recursive --verbose --log=clamscan_$datestring.log

Pakete aus seinen Sourcen installieren

Pakete saugen ..meist tar.gz

auspacken mit tar xzf <name>.tar.gz

z.B. tcpdump

http://www.tcpdump.org/release/libpcap-0.9.8.tar.gz
http://www.tcpdump.org/release/tcpdump-3.9.8.tar.gz

oder nload

http://prdownloads.sourceforge.net/nload/nload-0.6.0.tar.gz

ins Verzeichnis wechseln und folgendes aufrufen:

./configure
make

Script mit Aufruf testen ./nload z.B.

Ins System installieren

make install

fertsch xD

Iso Image aus Verzeichnis erstellen

mit Hilfe von mkisofs

http://wiki.ubuntuusers.de/mkisofs

l = lange Dateinamen (bis 31 Zeichen)
R = Rockford File System (255 Zeichen und tiefere Verzeichnisebenen, sichert ausserdem Unix Dateisystemrechte)
J = Joilet File System Format (bis 64 Zeichen + Sonderzeichen und Umlaute)

mkisofs -o home.iso -l /home

PDFs zusammenfügen / splitten

apt-get install pdftk

pdftk beispiel.pdf formular.pdf cat output beispiel_gesamt.pdf 

Festplatten über SSH Klonen

dd if=/dev/hda | ssh user@host "dd of=/dev/hda"

Mplayer Datei per SSH Streamen

ssh root@192.168.0.100 "cat /mnt/hdb7/iso/copy/video.avi" | mplayer -cache 8192 -

Festplatten Wiping

#!/bin/bash
for i in `seq 1 10`
do
dd if=/dev/zero of=/dev/sda bs=2m progress=100 conv=noerror
dd if=/dev/urandom of=/dev/sda bs=2m progress=100 conv=noerror
wipe -T -x 1 -o 2097152 -a | dd of=/dev/sda bs=2m conv=noerror
done

funktioniert bei mir nur in abgeänderter Form

#!/bin/bash
for i in `seq 1 10`
do
dd if=/dev/zero of=/dev/sda bs=2097152 conv=noerror
dd if=/dev/urandom of=/dev/sda bs=2097152 conv=noerror
done

Festplattenzugriffe loggen

Eine 1 in der Datei /proc/sys/vm/block_dump schaltet einen Debug-Modus ein.
die bekommt man mit dem Befehl echo 1 > /proc/sys/vm/block_dump in die Datei.

Alle Zugriffe auf die Platte werden dann in /var/log/kern.log protokolliert.

eine 0 schaltet den Modus wieder aus, also mit der Eingabe von
echo 0 > /proc/sys/vm/block_dump. 

Windows selbstextrahierende Archive entpacken *.exe

unzip [12345].exe

Script zum kopieren der Firefox Einstellungen auf alle User im System

# Update des Dateibaumes
# Lokalisieren der vorhandenen prefs.js
# Überschreiben der Dateien in pref-dateien.dat mit pref.js im Skriptverzeichnis

updatedb
locate /pref.js | grep Firefox > firefox-pref-dateien.dat
for file in $(cat firefox-pref-dateien.dat); do cp pref.js "${file}"; done

defektes Paket entfernen

bei Meldung aptitude: ".. Paket entfernen.." Fehler

Zusammenfassung:
# cd /var/lib/dpkg/
# sudo cp status status-backup
# sudo gedit status

- Abschnitt mit dem Betreffenden Paket finden und entfernen
- Änderungen speichern

# sudo apt-get update