Archiv

Archive for the ‘BASH’ Category

LVM2 unter Gentoo

September 25, 2011 Hinterlasse einen Kommentar

In meiner Workstations stecken mittlerweile drei Festplatten.
Eine 320 GB Platte (HDD1) von Western Digital, eine 320 GB Platte (HDD2) von Seagate und 160 GB Platte (HDD3) wiederum von Western Digital.

Auf HDD1 läuft mein Gentoo System, auf HDD2 lief ein Windows 7. HDD3 wird eigentlich nur als zusätzlicher Speicher verwendet. Da die Windows Installation auf HDD2 immer nutzloser wurde, da ich es so gut wie nie benutzt habe, habe ich mich dazu entschlossen, diese Installation zu löschen.

Nun hat sich aber das Problem ergeben, das ich auf HDD1 ca. 250 GB habe, auf der meine Daten liegen. HDD2 und HDD3 werden nach der Löschung von Windows nun nicht verwendet.

Nun wollte ich den gesamten freien Speicherplatz zusammenhängend nutzen und habe dafür nach dieser Anleitung: http://en.gentoo-wiki.com/wiki/LVM ein LVM eingerichtet.
Damit kann ich nun den gesamten Platz zusammenhängend nutzen und muss mir nicht für jede Partition/Platte einen eigenen Mount-Punkt anlegen und meine Daten sozusagen trennen. Außerdem ist es für mich so viel einfacher Backups zu erstellen und sinnvoll zu verwalten.

Da ich gerade Probleme mit der libpng habe gibt es keinen Screenshot sondern nur den „Konsolencode“:

fabi@schnecki-workstation ~/Musik $ df -h
Dateisystem           Size  Used Avail Use% Eingehängt auf
rootfs                 60G   26G   31G  45% /
/dev/root              60G   26G   31G  45% /
rc-svcdir             1,0M   92K  932K   9% /lib64/rc/init.d
udev                   10M  348K  9,7M   4% /dev
shm                   2,0G     0  2,0G   0% /dev/shm
/dev/mapper/home_group-home
670G  272G  364G  43% /home
/dev/sdd1             459G  269G  167G  62% /mnt/backup

Kategorien:BASH, Linux, Windows Schlagwörter: , , ,

Awesome Battery Widget

Seit einer Woche bin ich stolzer Besitzer eines Netbooks (Lenovo S10-3).

Auf dem Netbook läuft natürlich Gentoo mit aktuellem 2.6.38 Kernel (leider noch ~amd64), den brauche ich für den W-LAN-Chip (bcm4313) in dem Netbook. Dort wird nämlich der seit 2.6.37 enthaltene Staging Treiber brcm80211 benötigt. Über Google solltet ihr aber mehr dazu finden. Ein kleiner Tipp hier schon, wenn ihr die sys-kernel/linux-firmware installiert müssen die Symlinks noch angepasst werden ;).

Soviel also dazu.

Als Window-Manager setze ich awesome ein. Leider bietet awesome keine Widget zur Anzeige des Akku-Ladestandes bzw. wird eines angeboten über die Vicious Bibliothek, welches aber bei mir nicht funktioniert hat.
Deshalb hab ich mir gedacht, ich bau mir da selbst was.

Gesagt, getan….

Ich habe mir folgendes Script geschrieben, welches mit Hilfe von sys-power/acpi die Ladezustand bzw. die verfügbare Kapazität ausliest.


#!/bin/bash

# Get ACPI-State
str_ACPI=$(acpi | awk '{print $4}')
str_State=$(acpi | awk '{print $3}')

# Get Length of strings
i_ACPI_Length=$(expr length $str_ACPI)
i_State_Length=$(expr length $str_State)

# Get length of the strings without comma
let i_New=$i_ACPI_Length-1
let i_StLen=$i_State_Length-1

# Get substrings to delete comma
i_State=${str_ACPI:0:$i_New}
str_State=${str_State:0:$i_StLen}

# Print state;
# Return state to rc.lua

echo " $str_State $i_State"

Der Zustand des Akkus und die Restkapazität werden dann mit Hilfe des echo-Befehls zurückgegeben.

Dieses Script wird automatisch alle 10 Sekunden aus der lua.rc aufgerufen.
Hier mal der Code dazu:


-- Eigenes Widget
mybat = widget( {type = "textbox"} )
mytimer = timer( {timeout = 10 } )
mytimer:add_signal("timeout",  function() local fd =  io.popen("/home/fabi/Programmierung/Bash/bat_state.sh") mybat.text =  fd:read("*a") fd:close() end)
mytimer:emit_signal("timeout")
mytimer:start()

Der Timer (mytimer) ruft das Script alle 10 Sekunden auf, und der übergebene Wert wird in den Inhalt des zuvor erstellten Text-Widget mybat geschrieben.

Dieses Widget muss nun noch in den Tray eingefügt werden:


mywibox[s].widgets = {
 {
 mylauncher,
 mytaglist[s],
 mypromptbox[s],
 layout = awful.widget.layout.horizontal.leftright
 },
 mylayoutbox[s],
 mytextclock,
 mybat,
 s == 1 and mysystray or nil,
 mytasklist[s],
 layout = awful.widget.layout.horizontal.rightleft
 }

So, nun sollte das ganze funktionieren.

Hier mal ein paar Screenshots davon:

Laufen bzw. getestet ist das ganze unter awesome 3.4.8.

Das Script wurde auch schon hier im Winfuture-Forum veröffentlicht. Entstanden ist das ganze mit freundlicher Unterstützung von psychon aus dem Winfuture-IRC-Channel (irc.spotchar.org/#winfuture).

Für Kritik und Anregungen bin ich wie immer dankbar.
Viel Spaß damit.

Backup Script

September 24, 2010 Hinterlasse einen Kommentar

Hier mal mein Backupscript zum sicher meiner /home-Partition.
Das Script steht unter der LGPL.

Ich nutze es in Verbindung mit vixie-cron. Das Script macht eine alles 15 min ein Backup.

Abhängigkeiten:
rdiff-backup

</span>#!/bin/bash

#Backup-Script um Backups der Ordner /home und /etc
#Mit kleiner Logging-Funktion
#Die Log-Files werden nach /home/$user/BackupLog geschrieben

#Definition des Backup-Directories für den /home-Ordner
bkphome="/mnt/backup/workstation/home"
#Definition des Backup-Log-Files
bkplog="/home/fabi/BackupLog/log.txt"
#Definition des Backup Devices
bkpdev="/dev/sdb1"


#Überpfüfen ob das Tool rdiff-backup installiert ist
bkptool=`which rdiff-backup`

if [ $bkptool ]
then
 #Auslesen ob auf dem Backup-Medium genügen Speicher vorhanden ist.
 devinf=`df -h | grep $bkpdev | awk '{print $5}'` #Used Ausgabe von df-h
 rest=`expr match "$devinf" '\(.*[0-9]\)'` #Zahlen von Buchstaben trennen; für Vergleich
 echo $rest
 #Wenn mehr als 90% belegt sind erhält der User eine Meldung
 if [ $rest -lt "90" ]
 then
 #------------------------------/home-Backup----------------------------start
 rdiff-backup --exclude /home/lost+found /home $bkphome


 #Überprüfen des Return-Codes
 if [ $? -eq 0 ]
 then
 date >> $bkplog #Ausgabe des Datums
 echo "/home-Backup wurde erfolgreich ausgeführt." >> $bkplog
 echo "Verwendeter Speicher: " >> $bkplog
 echo $rest"%" >> $bkplog
 echo >> $bkplog #Leerzeile ausgeben
 else
 errcode=$?
 date >> $bkplog #Ausgabe des Datums
 echo "/home-Backup konnte nicht erfolgreich ausgeführt werden." >> $bkplog
 echo "Verwendeter Speicher: " >> $bkplog
 echo $rest"%" >> $bkplog
 echo "Return-Code = " >> $bkplog
 echo $errcode >> $bkplog #Return-Code ausgeben
 echo >> $bkplog #Leerzeile ausgeben
 fi
 #------------------------------/home-Backup----------------------------end
 else
 xmessage -center "Weniger als 10% Speicherplatz sind auf dem Backupmedium vorhanden."
 date >> $bkplog
 echo "Zu wenig Speicher auf dem Medium vorhanden." >> $bkplog
 echo "Genutzter Speicherplatz: " >> $bkplog
 echo $rest"%" >> $bkplog
 echo $bkplog
 fi
else
 xmessage -center "Bitte rdiff-backup installieren! Programm wird beendet."
 date >> $bkplog
 echo "Bitte rdiff-backup installieren! Programm wird beendet." >> $bkplog
 echo >> $bkplog
fi
<span style="color: #000000;">

Kategorien:BASH, Debian, Gentoo, Linux, Terminal, VIM

youmplayer – Youtube + mplayer

September 14, 2010 Hinterlasse einen Kommentar

Vor ein paar Tagen bin ich auf das hier: http://wonkabar.org/2010/06/24/gentoo-youtube-flash-mplayer/ gestoßen.
Da ich hier Linux in der 64-bit Version am laufen habe und Flash zwar funktioniert (im Firefox) das ganze aber im Vollbildmodus ruckelt hab ich mir ne eigene Lösung gebastelt.

Ich habe mir mit Zenity, mplayer und youtube-dl eine kleines BASH-Script gebastelt, dass das Youtube-Video lädt und dann im mplayer abspielt.

Screenshots:

URL-Eingabe

URL-Eingabe

Breite des mplayer Fensters

Breite des mplayer Fensters

Höhe des mplayer Fensters

Höhe des mplayer Fensters

Beispiel Video

Beispiel Video

Benötigt wird dafür:

  1. mplayer
  2. zenity
  3. youtube-dl

Die Tools sollten normalerweise über das jeweilige Paketmanagementsystem der Distribution verfügbar sein.

Hier mal noch das Script:


#!/bin/bash
#Script um Youtube-Videos mit mplayer und youtube-dl abzuspielen
#Aufbau der GUI mit Zenity (http://www.fedorawiki.de/index.php/Zenity)

#Eingabe der Youtube-URL, Bsp.: http://www.youtube.com/watch?v=SJaMtBKnN-I
yourl=`zenity --entry --title="Youtube URL" --text="Bitte geben Sie die Youtube-URL ein"`
echo $yourl
#Eingabe der Breite des mplayer-Fensters
xwidth=`zenity --entry --title="Breite" --entry-text="800" --text="Bitte geben Sie die Breite des mplayer-Fensters ein"`
echo $xwidth
#Eingabe der Höhe des mplayer-Fensters
yheight=`zenity --entry --title="Hoehe" --entry-text="600" --text="Bitte geben Sie die Hoehe des mplayer-Fensters ein"`
echo $yheight

#Aufruf von Mplayer
mplayer -x $xwidth -y $yheight $(youtube-dl -b -g $yourl)

Update:

Hier mal noch gmplayer für arme 😉 (oder all die jenigen, die ihn wie ich mit absicht ohne GUI kompiliert haben)


#!/bin/bash
#Script um Videos mit dem mplayer abzuspielen
#Aufbau der GUI mit Zenity (http://www.fedorawiki.de/index.php/Zenity)

#Öffnen eines Films mit Hilfe eines FileOpen-Dialog
vidfl=`zenity --file-selection --title="Datei" --text="Film-Datei öffnen"`
echo $vidfl
#Eingabe der Breite des mplayer-Fensters
xwidth=`zenity --entry --title="Breite" --entry-text="800" --text="Bitte geben Sie die Breite des mplayer-Fensters ein"`
echo $xwidth
#Eingabe der Höhe des mplayer-Fensters
yheight=`zenity --entry --title="Hoehe" --entry-text="600" --text="Bitte geben Sie die Hoehe des mplayer-Fensters ein"`
echo $yheight

#Aufruf von Mplayer
mplayer -x $xwidth -y $yheight $vidfl

Update2:

Aus irgendeinem Grund scheint das ganze mit Youtube nicht mehr zu funktionieren.
Kann das jemand bestätigen?

Update3:

Anscheinend lag das ganze an der Option -b. Ich hab das ganze jetzt nochmal bearbeitet.
Jetzt sollte das Skript wieder ganz normal seinen Dienst tun.
Viel Spaß damit ;-).


#!/bin/bash
#Script um Youtube-Videos mit mplayer und youtube-dl abzuspielen
#Aufbau der GUI mit Zenity (http://www.fedorawiki.de/index.php/Zenity)

#Eingabe der Youtube-URL, Bsp.: http://www.youtube.com/watch?v=SJaMtBKnN-I
yourl=`zenity --entry --title="Youtube URL" --text="Bitte geben Sie die Youtube-URL ein"`
echo $yourl
#Eingabe der Breite des mplayer-Fensters
xwidth=`zenity --entry --title="Breite" --entry-text="800" --text="Bitte geben Sie die Breite des mplayer-Fensters ein"`
echo $xwidth
#Eingabe der Höhe des mplayer-Fensters
yheight=`zenity --entry --title="Hoehe" --entry-text="600" --text="Bitte geben Sie die Hoehe des mplayer-Fensters ein"`
echo $yheight

#Aufruf von Mplayer
mplayer -x $xwidth -y $yheight $(youtube-dl -g $yourl)

Kategorien:BASH, Flash, Linux, mplayer Schlagwörter: , , ,

Backups – Ersatz für Timemachine

An meinem iMac war ich dank TimeMachine meiner Meinung nach vor Datenverlust sehr gut abgesichert.
Mir gefällt/gefiel TimeMachine immer sehr gut, alle Daten wurden in relgemäßigen Abständen und im laufenden Betrieb gesichert.
So ging mir nie was verloren.

Nun unter Linux war die Frage, was nehme ich jetzt für meine Backups.
Ich habe verschiedene Anforderungen an das Backup Tool.

Die Backups sollten automatisch in bestimmten Zeitabständen erstellt werden, es sollten verschieden Stände gesichert werden und der Restore sollte auch schnell und unkompliziert von statten gehen.

Ich habe mir folgende Tools angesehen, zum einen gibt es da FlyBack. Was mich hier eigentlich nur bzw. so gestört hat, dass ich das Tool nicht verwende ist das es nicht über Portage verfügar ist.
Ein weiteres Tool das ich mir angeschaut habe ist BackInTime, dieses Tool erfüllt eigentlich alle Anforderungen die ich habe, leider ist es nur per GUI konfigurierbar. Für die GUI hätte ich Gnome installieren müssen (oder KDE), da ich mein System aber von allem frei halten will, was ich nicht wirklich brauche wollte ich das nicht installieren.

Nach einiger Recherche bin ich dann bei rdiff-backup gelandet. Mit diesem CLI-Tool kann ich meine Daten (/home und /etc) auf meine externe Festplatte sichern.

Damit das ganze permanent abläuft werde ich eine BASH-Script bauen das alles nötige ausführt, ein Log-Schreibt und im Fehlerfall informiert.
Das ganze wird dann z.B. alle 15 min. per Cronjob ausgeführt. Da muss ich aber mal noch schaun wie ich das am besten mache.

Wenn ich das ganze dann fertig habe werde ich es natürlich hier posten.

Kategorien:BASH, Gentoo, Linux Schlagwörter:

prgftp – Ein kleines Versionierungsscript (BASH)

September 21, 2009 Hinterlasse einen Kommentar

prgftp ist ein kleines Script mit dem man belibige Verzeichnisse und Quellcode in ein *tar.gz-Archiv packen und dann auf einen FTP-Server hochladen kann.

Das Script enstand aus dem Gedanken heraus, meine geschribenen Java Programme automatisch auf meinen FTP-Server upzuloaden und mit einer Versionsnummer zu versehen.


<code>#!/bin/bash</code>

#Bash Script um erstellte Porgramme auf einen FTP-Server hochzuladen
#und zu packen (tar.gz)

#-----------------------------Variablen-----------------------------
#Arbeitsverzechnis (Dort wo die Ordner mit den Quellcodes liegen)
PRG_PATH=

#zu packende Ordner
#1. Quellcode -> Unterordner "src"
SRC_PATH=/src
#2. JAR-File -> Unterordner "jar"
JAR_PATH=/jar
#3. APP -> Unterordner "app"
#APP_PATH=/app

#usw

#Bezeichungen der Archive
src=_src
jar=_jar
#_app=app

#Zugangsvariablen FTP
#Benutzername
user=
#Password
paswd=
#FTP-Adresse
serv=
#Arbeitsverzeichnis
srvdir=

#-----------------------------Packen-------------------------------
#Wechseln ins Programmierverzeichnis
cd $PRG_PATH

#Ordnername des Programms das gepackt und hochgeladen werden soll
echo "Programmname :"
read prgname

#Versionsnummer des Programms z.B. (-)0.0.2
echo "Versionsnummer :"
read prgversion

#erstellen der *.tar.gz -Archive im Programmierverzeichnis
#Quellcode
tar cfvz $prgname$prgversion$src.tar.gz $prgname$SRC_PATH/

#JAR-File
tar cfvz $prgname$prgversion$jar.tar.gz $prgname$JAR_PATH/

#OS X App
#tar cfvz $prgname$prgversion$app.tar.gz $prgname$APP_PATH/

#---------------------------Uploaden----------------------------
ftp -n <<eoftp
open $serv
user $user $paswd
bin
cd $srvdir

put  $prgname$prgversion$src.tar.gz  $prgname$prgversion$src.tar.gz
put  $prgname$prgversion$jar.tar.gz  $prgname$prgversion$jar.tar.gz
#put  $prgname$prgversion$app.tar.gz  $prgname$prgversion$app.tar.gz

quit
EOFTP

#-----------------------------Löschen----------------------------
#löschen der lokal angelegten Archive
rm $prgname$prgversion$src.tar.gz
rm $prgname$prgversion$jar.tar.gz
#rm $prgname$prgversion$app.tar.gz

#---------------------------Ende--------------------------------
echo "Fertig!"

Der Code darf gerne kopiert und weiterentwickelt werden.
Für Anregungen und Kritik bin ich wie immer dankbar.