Archiv nach Schlagworten: Shell

SVN :: Backup and Restore Scripting

Hat man ein privates SVN Repository muss man sich auch selbst um ein Backup kümmern. Wird nicht vom ganzen Rechner ein Backup gemacht, so helfen kleine Scripte, die durch Crontabs gestartet werden. Zu diesem Zweck habe ich mir selbst ein kleines Script gebaut:

#!/bin/bash
backupDate=$(date +%Y%m%d-%H%M)
backupSrc="/svn"
backupDest="/svn/_BACKUP"
restoreScript="#!/bin/bash
sudo mkdir /$backupSrc
mkdir /$backupDest"

rm $backupDest/*
cd $backupSrc

for repo in *; do
        if [ "$repo" != "_BACKUP" ] ; then
                echo "backup: $repo"
                svnadmin dump $repo > $backupDest/$backupDate-$repo.svn.dump
                restoreScript="$restoreScript
sudo svnadmin create $backupSrc/$repo
sudo svnadmin load $backupSrc/$repo < $backupDate-$repo.svn.dump
"
        fi
done

cd $backupDest


restoreScript="$restoreScript
cd /
sudo chown -R www-data:subversion $backupSrc"
cd $backupDest
echo "$restoreScript" > restore.sh
chmod +x restore.sh

tar -cf $backupDate-svn.tar *.dump restore.sh

#copy
cp $backupDate-svn.tar /BACKUP/svn/

Will man noch sicherer sein, kann man das Backup mittels scp auch noch auf einen über das Internet erreichbaren PC speichern. Hierfür muss der RSA oder DSA Key noch auf dem Remote PC in die Datei „authorisized_keys“ eingetragen werden, und folgende Zeile im Script ergänzt werden:

scp -P PORT $backupDate-svn.tar USER@SERVER.de:/PFAD_ZU_BACKUP
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

SVN :: TortoiseSVN over SSH, different port

Manch einer hat unter einer Domain mehrere PC’s hängen, die per SSH erreicht werden können – über verschiedene Ports nach außen.

Windows

Ist dies der Fall und SVN soll über SSH genutzt werden, dann sind folgende Konfigurationen vorzunehmen:

C:\Users\[YOUR_NAME]\AppData\Roaming\Subversion\config

editieren und dort nach „[tunnel]“ suchen. direkt darunter kommt jetzt die Anpassung des SSH Befehls:

ssh2345 = C:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe -P 2345

wobei „ssh2345“ frei wählbar ist.

In TortoiseSVN muss man jetzt für einen Checkout folgendes eingeben:

svn+ssh2345://NAME@DOMAIN/PATH_FROM_ROOT_DIRECTORY

als Beispiel:

svn+ssh2345://me@mydomain.com/var/repos/svn/testProject

Linux

Unter Linux geht es ähnlich. Dort gibt es im home – Verzeichnis ein Unterverzeichnis „.subversion“ in diesem Ornder gibt es eine „config“ Datei. Diese muss editiert werden, und auch hier nach „[tunnel]“ gesucht werden.
Hier muss jetzt unter dem „[tunnel]“ folgendes eingefügt werden:

ssh2345 = ssh -p 2345

ein Beispiel zum auschecken wäre dann:

svn co svn+ssh2345://me@mydomain.com/var/repos/svn/testProject
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

RaspberryPi :: Backup SD-Card / Restore SD-Card

Um ein Backup der SD-Karte zu erstellen, habe ich ein anderen Linux-PC verwendet und die Karte mittels Card-Reader angesteckt.

Dort wird sie automatisch gemountet was bedeutet, dass man per

df -h

den Device-Namen erfährt, bei mir sdc

daher kann ich jetzt ein Backup erstellen mittels

sudo dd if=/dev/sdc of=/home/linux/myImage.img bs=1M

man kann es auch gleich zippen:

sudo dd if=/dev/sdc of=~/myImage.img bs=1M  | gzip > ~/myImage.gz

zurückgeladen kann es wenn die Pfade getauscht werden:

gzip -dc ~/myImage.gz | sudo dd of=/dev/sdc bs=1M
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

RaspberryPi :: uninstall unused software

Der RaspberryPi muss früher oder später mit einem Bootimage versehen werden. Nimmt man das angebotene Debian Wheezy, ist allerhand Software bereits installiert, die man nie verwenden wird. Hier ein Fileserver – dort wird die grafische Oberfläche nicht benötigt – der RPi wird nur per SSH bedient.

Eine kleine Einführung habe ich hier gefunden, die ich etwas erweitert habe mit weiteren Deinstallationen.

von http://www.stefan-seelmann.de/wiki/rasperrypi-homeserver

apt-get purge --auto-remove scratch
apt-get purge --auto-remove debian-reference-en dillo idle3 python3-tk idle python-pygame python-tk
apt-get purge --auto-remove lightdm gnome-themes-standard gnome-icon-theme raspberrypi-artwork
apt-get purge --auto-remove gvfs-backends gvfs-fuse desktop-base lxpolkit netsurf-gtk zenity
apt-get purge --auto-remove mupdf gtk2-engines alsa-utils lxde lxtask menu-xdg gksu
apt-get purge --auto-remove midori xserver-xorg xinit xserver-xorg-video-fbdev
apt-get purge --auto-remove libraspberrypi-dev libraspberrypi-doc
apt-get purge --auto-remove dbus-x11 libx11-6 libx11-data libx11-xcb1 x11-common x11-utils
apt-get purge --auto-remove lxde-icon-theme
apt-get purge --auto-remove python3 python3-minimal python3-numpy python-pifacecommon
apt-get purge --auto-remove python2.7-minimal python2.7 python-rpi.gpio python-minimal python
apt-get purge --auto-remove desktop-file-utils git-core git-man git java-common omxplayer penguinspuzzle wireless-tools

danach ist die nicht auf die ganze SD-Karte ausgeweitete Speichernutzung folgendermaßen:

pi@raspberrypi ~ $ df
Filesystem     1K-blocks   Used Available Use% Mounted on
rootfs           2786872 735168   1910136  28% /
/dev/root        2786872 735168   1910136  28% /
devtmpfs          216108      0    216108   0% /dev
tmpfs              44876    216     44660   1% /run
tmpfs               5120      0      5120   0% /run/lock
tmpfs              89740      0     89740   0% /run/shm
/dev/mmcblk0p1     57288  18560     38728  33% /boot

weitere Software, die man noch deinstallieren könnte findet man mit folgendem Befehl:

dpkg --get-selections | grep -v deinstall

FYI:

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/Linux

keine Angst weil sämtliche Desktop und X11 Komponenten deinstalliert werden, der RPi gibt weiterhin per HDMI die Konsole aus (wichtig für Debugzwecke beim Bootvorgang)

Mein Raspberry startet jetzt in 24 Sekunden … leider weiß ich nicht wie es vorher war, aber ich denke hier ist der Unterschied eher gering.

VN:F [1.9.22_1171]
Rating: 5.0/5 (4 votes cast)
VN:F [1.9.22_1171]
Rating: +2 (from 2 votes)

RaspberryPi :: Fileserver

Ich habe mir einen Raspberry Pi besorgt um diesen als Fileserver einzusetzten. Hierfür habe ich eine externe USB 2.0 HDD angeschlossen, auf der die Files abgelegt werden.

1) Raspberry Pi einrichten:

sudo raspi-config
sudo apt-get install samba samba-common samba-common-bin
sudo apt-get install vim
sudo apt-get install fuse ntfs-3g

2) neuen Benutzer anlegen:

sudo useradd -G users NAME

das Samba Passwort muss extra gesetzt werden:

smbpasswd - U NAME

3) Externe HDD einbinden

Da meine HDD mit NTFS formatiert ist musste ich noch folgendes Programm installieren:

sudo apt-get install cifs-utils

Jetzt ist es nötig ein Verzeichnis anzulegen, in welches die Festplatte eingebunden werden soll. Danach muss das Verzeichnis noch der Gruppe „users“ zugeordnet werden, damit diese Zugriff erhalten.

sudo mkdir /daten/server
sudo chgrp users -R /daten

danach die Festplatte in die „fstab“ Datei eintragen, damit sie automatisch gemountet wird

sudo vim /etc/fstab

ich habe folgendes eingetragen:

UUID=3C58E62B58E5E39C   /daten/server   ntfs    users,rw        0       0

die UUID kann so herausgefunden werden (gibt auch gleich Auskunft über das Device, bei mir „/dev/sda1“:

blkid

die Konfiguration kann getestet werden:

sudo mount -a

4) Samba Konfiguration anpassen:

sudo vim /etc/samba/smb.conf

dort dann nach „[printers]“ suchen, darüber für jede Freigabe folgendes einfügen:

[daten]
   comment = Daten
   browseable = yes
   path = /daten/server
   valid users = @users
   force group = users
   create mask = 664
   directory mask = 0775
   read only = no

danach Samba Service neustarten:

sudo service samba restart

5) Optional :: Debian – Package aus CVS Sourcen erzeugen

(Dieser Punkt kann überspruchen werden, also direkt weitermachen bei 6.)

Ist das alles geschaft hat man schon weitere Ansprüche an das System. Man verwendet ja nicht ohne Grund einen Raspberry Pi als Fileserver – man will Strom sparen. Das ist ja alles schön und gut, aber die externe 3.5″ HDD läuft einfach munter weiter, auch wenn kein User diese momentan verwendet. Abhilfe schaft hier das Programm „hd-idle“ welches zuerst kompiliert werden muss oder von hier (ganz unten) runterladen. Ich habe die bei mir auf dem Raspberry (Debian wheezy, Version 2013-02-09) kompilierte Datei angehängt.

Das Programm herunterladen mit einem CVS Client (der erste CVS Befehl muss einfach bei der Passwortabfrage mit ENTER bestätigt werden -> kein Passwort)

sudo apt-get install cvs
cvs -d:pserver:anonymous@hd-idle.cvs.sourceforge.net:/cvsroot/hd-idle login
cvs -z3 -d:pserver:anonymous@hd-idle.cvs.sourceforge.net:/cvsroot/hd-idle co -P hd-idle

um jetzt ein eigenes Debian Pakacke zu erzeugen benötigt man folgendes Programm

sudo apt-get install debhelper

danach das Paket erzeugen (zuerst in das neu angelegte Verzeichnis „hd-idle“ wechseln:

cd hd-idle
sudo dpkg-buildpackage -rfakeroot

Die fertig kompilierte Datei befindet sich ein Verzeichnis höher.

6) hd-idle installieren

Archiv des schon erzeugten Debian Packages: hd-idle_1.04.tar
falls Punkt 5) übersprungen wurde, dann einfach die verlinkte Datei auf den Raspi laden.
hd-idle installieren, anschließend den Service starten und den Autostart des Programms vorbereiten:

sudo dpkg -i hd-idle_*.deb
sudo service hd-idle start
sudo update-rc.d hd-idle defaults

getestet werden kann hd-idle folgendermaßen (Dieser Befehl setzt für die Festplatte „sda“ eine automatische Abschaltung nach 10s, mehrere Festplatten können mit einem weiteren „-a …“ hinten angefügt werden):

hd-idle -i 0 -a sda -i 10

Jetzt will man diese Prozedur natürlich nicht nach jedem reboot neu starten, daher automatisieren wir dies:
Also editieren wir die Konfigurationsdatei:

sudo vim /etc/default/hd-idle

und ändern ganz oben die Zeile in folgende:

START_HD_IDLE=true

und fügen ganz am Ende der Datei einen zu oben ähnlichen Befehl ein (auch hier ist die vom Mounten bekannte UUID notwendig, damit die Festplatte immer richtig angesprochen wird, auch wenn sich einmal der USB Port ändern sollte):

HD_IDLE_OPTS="-i 0 -a /dev/disk/by-uuid/3C58E62B58E5E39C -i 900"

7) Sicherheit erhöhen

Standardmäßig hat der Benutzer „pi“ das Passwort „raspberry“. Dieses muss geändert werden, zudem ist es nicht sinnvoll keine Passwortabfrage bei der Eingabe von „sudo“ zu bekommen.
Um dies zu ändern folgenden Befehl ausführen:

sudo visudo

hier habe ich folgende Zeilen geändert:

root    ALL=(ALL:ALL) ALL
lukas   ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

und die wichtigste:

#pi ALL=(ALL) NOPASSWD: ALL

Anhang

hd-idle_1.04.tar

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 2 votes)

Automatic execute on startup :: Debian Linux (Raspberry Pi)

I’ve got a Raspberry Pi with connected camera. When the Pi boots up there should be executed a script which starts the camera software.

You must create an new file in /etc/init.d/ and then add the following content:

# /etc/init.d/startcam

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    /home/pi/start.sh
    ;;
  stop)
    pkill webcam
    echo "stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/startcam {start|stop}"
    exit 1
    ;;
esac

exit 0

then make the file executeable

sudo chmod +x /etc/init.d/startcam

to test your script, you must be shure that it isn’t active

ps -ef | grep webcam

then start the script using

sudo /etc/init.d/startcam start

or just reboot your computer and check once again if your script is active.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +2 (from 2 votes)

Shell Script Zähler in Datei

Ein einfaches Script um z.B. bei einem Backupscript alles 7 Tage einen bestimmten Befehl auszuführen.
einfach in eine Datei schreiben, und diese mit

chmod +x zaehler.sh
zaehler=0
while read line
do
        zaehler=$((line + 1))
        echo $zaehler
done < "zaehler.txt"

rm "zaehler.txt"

if [ $zaehler -gt 7 ]; then
        zaehler=0
fi

echo $zaehler >> "zaehler.txt"

ausfürhern mit

./zaehler.sh
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Ubuntu Startsound abstellen

Wie man schnell feststellt kann man den Startsound unter Linux nicht einfach so komplett abstellen. Hierfür ist noch zusätzlich dieses Kommando nötig:

sudo -u gdm gconftool-2 -s -t bool /desktop/gnome/sound/event_sounds false
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

von Shell auf anderen Rechner via SSH

wenn man zum Beispiel einen File-Server hat und nicht extra den Rechner wechseln möchte wird oft SSH verwendet. Um dies unter Linux zu nutzen muss erst mit

sudo apt-get install ssh

das SSH-Paket installiert werden und kann dann wie folgt aus der Kommandozeile verwendet werden

ssh -l [benutzer] [rechner]

mit einem -p [port] kann man einen abweichenden Port angeben

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Datei überwachen und Veränderungen ausgeben

nützlich wenn die Veränderungen einer Logdatei beobachtet werden soll

tail -f /logdirname/log.log
VN:F [1.9.22_1171]
Rating: 4.5/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)