Android: Simples Backup der Daten inkl Flashoption

Faulheit ist eine Zierde, wenn es auch Wege gibt sich Aufgaben zu vereinfachen.
Das ist für mich eine der Dinge, welche ich an einem Unix-/Linux-System liebe. Wenn sich eine Aufgabe wiederholt, dann wiederhole ich sie nicht stupide, sondern greife zu Scriptsprachen, welche mir die Aufgabe erledigen.
Seit einiger Zeit nutze ich ein Script, welches mir das Backup von meinen Daten auf meinem Android vereinfacht.
Da ich ein G1 besitze und es mit Froyo nutze wurde ich auf ein Linuxscript von crizznaig aufmerksam, welcher das Orginal von Che123 und woSaa portiert hat.
[UTIL][01/31/11][WIN v2.4][LIN v1.3] PC Suite/Font Flasher
Das Script gibt es einmal als grafische und natürlich als Shell-Variante. Letztere ist bei mir im Einsatz.
adb wird gleich mitgeliefert und man muss das ganze nur entpacken und in das Verzeichnis des Scriptes wechseln.
Falls man nicht an das Telefon per adb-server kommt liegt es wohl daran, dass man keine Rechte hat.
In dem Fall sollte man unter Debian die Datei /etc/udev/rules.d/51-android.rules mit folgendem Inhalt anlegen:

SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666", OWNER="seraphyn"

Natürlich den eigenen Usernamen einsetzen anstelle von seraphyn.
Die VendorIDs lassen sich auf Developers Android finden.
Danach udev neu starten.

Features:
– Backup functions
– Flash new System Fonts (Big Choice )(Should work on every ROM and every device) – many different fonts (including preview)
– Fix QWERTZ Bug in Danger SPL (i guess G1 only)
– Change modellnumber (Should work on every ROM and every device)
– Flash custom launcher.apk (Should work on every ROM and every device as long as it isn’t launcher2.apk)
– Flash custom bootanimation.zip (Should work on every ROM and every device as long as it is 2.1)
– Remove GoogleMaps
– Create a list of installed Apks (installed apks and system apks)(apps only – no app data!)
– App Backup & Restore functions [APP2SD only] (on PC and/or SD)
– Backup and restore SMS/MMS (experimental)
– Get device Logs in textfiles
– Clear EXT
– Clear Dalvikcache
– Backup & Restore MarketDB (experimental)
– Delete/backup/restore Camera Sound
– Optimize system
– Backup/delete/restore ringtones
– Remove youtube.apk
– List of flashable files for this suite – so you can download what YOU need and we can keep this zip small
– Backup & Restore standard Launcher.db for HomeScreen Icons, Settings
– Flash HTC IME Keyboard
– Fix vending_preferences.xml
– Backup images & videos
– Dial Number directly out of the suite
– much more

Unterstützt werden folgende Telefone, rooted natürlich: HTC Dream / G1,HTC Magic,HTC Desire (install HTC Sync first to get the drivers!), Nexus One,Evo 4 G,CDMA Hero,T-mobile Pulse,Vodafone 845,HTC Wildfire,Hero GSM,MyTouch 3G,HTC Desire HD,HTC Desire Z,HTC Incredible,Motorola Milestone,LG Ally,Motorola Defy,Sony Xperia X10,Samsung Galaxy I5700,Samsung Galaxy 3 I5800,Samsung Galaxy S,Samsung Captivate,LG Optimus One P500,Acer Liquid

Somit kann man sich für ein Backup die Tipperei in adb sparen ;)

Rehack Chrome goo.gl shortener + share on twitter für identi.ca

Ja, Twitter, dafür gibt es einiges, aber wenn man mal eine Page an identi.ca melden möchte, welches ich favouritisiere, dann sieht es mau aus.
Somit habe ich die Erweiterung goo.gl shortener + share on twitter installiert und sie zu einem goo.gl shortener + share on identi.ca umfunktioniert.
Dazu geht man das Verzeichnis $HOME/.config/chromium/Default/Extensions/fdndabnoclcmkbdgakdhdpjghagfnapj/1.2_0 und ändert dort in der Datei googl.htmlin Zeile 92 den Aufruf der URL in:

url : "http://identi.ca/notice/new?status_textarea="+tab.title + " "+shorturl

um
Wer mag kann nun noch das twitter.png in ein identica.png ändern usw.
Wer Lust hat kann auch gleich eine neue Extension daraus machen und jene hochladen ツ

Angepasste Version von browser-select

Da ich wie schon an diesem Ort erwähnt mehrere Browser benutze und in dem Sinne keinen Standardbrowser habe, brauche ich ein Script,
– welches in dem schon geöffneten Browser einen Tab öffnet
– meinen Lieblingsbrowser öffnet, falls kein Browser offen ist

Ich habe nun dem Script den Browser Chromium hinzugefügt und somit sind nun Opera, Firefox und Chromium vorhanden.
Da Chromium ein bisschen schneller startet als der von mir favoritisierte Opera ist dieser nun angegeben, falls kein Browser offen ist. Wobei Opera fast immer offen ist ;)
Ich gebe das File in meinen Programmen als Standard an.
Im Falle von Newsbeuter ( .newsbeuter/config)wäre dies:
browser /home/seraphyn/bin/browserstart
Bei URXVT:
URxvt*urlLauncher: /home/seraphyn/bin/browserstart
Und so weiter und so fort
Markieren und in $HOME/bin/ abspeichern.

#!/bin/bash
 # available are the following commands:
 #
 # firefox_new_tab
 # opera_new_tab
 # chrome_new_tab
 #
 # firefox_new_win
 # opera_new_win
 # chrome_new_win
 #
 order=(
 opera_new_tab
 firefox_new_tab
 chrome_new_tab
 chrome_new_win
 opera_new_win
 )

# helper function for firefox_new_tab and swiftfox_new_tab
 function mozlike_new_tab {
 if [ "`pidof $2-bin`" ]; then
 $2 -new-tab "$1"&
 else
 return 1
 fi
 }
 # new firefox tab
 function firefox_new_tab {
 mozlike_new_tab $1 firefox
 }
 # helper function for firefox_new_win and swiftfox_new_win
 function mozlike_new_win {
 $2 -new-tab "$1"&
 }
 # new firefox window
 function firefox_new_win {
 mozlike_new_win $1 firefox
 }
 function opera_new_tab {
 if [ "`pidof opera`" == "" ]; then
 return 1
 fi
 opera -newpage $1
 }
 # new opera win
 function opera_new_win {
 opera -newwindow $1
 }

function chrome_new_tab {
 if [ "`pidof chromium-browser`" == "" ]; then
 return 1
 fi
 chromium-browser --new-tab $1
 }

function chrome_new_win {
 chromium-browser --new-window $1
 }
 # call functions based on order defined above
 for i in `seq 1 ${#order[@]}`;
 do
 ${order[$i-1]} $1 && exit
 done
 

Shell: Fotos anhand der EXIF-Daten umbennen

Ich bin ein BackUp-Fan, sprich wenn ich mit meiner Digitalkamera fotografieren werden die Bilder noch am gleichen Tag eingepflegt und dann per rsync auf den Server kopiert. Sprich ich traue den SD-Karten nicht wirklich, warum auch immer und Momente, welche mir wichtig sind, sollen doch bitte erhalten bleiben. Ich meine damit in Fotoform im Herzen wird nichts gelöscht;)
Nun wollte ich mich schon hinsetzen und ein nettes feines Script schreiben, welches die EXIF-Daten ausliest und die JPGs doch bitte in der Form Datum_Zeit.JPG umbenennt. Als Werkzeug braucht man dafür das nette Programm exiv2. Unter FreeBSD befindet es sich im Portszweig (cd /usr/ports/graphics/exiv2/ && make install clean oder pkg_add -r exiv2) und bei Debian liegt es im Repository ( aptitude install exiv2).
Welchen nutzen hat das Ganze?
Beschreibung: Werkzeug zur Bearbeitung von EXIF-/IPTC-Metadaten
Exiv2 kann:

Die Exif-Metadaten diverser Formate wie JPEG, TIFF und mehrerer RAW-Dateiformate als Zusammenfassung, interpretierte Werte oder die Rohdaten für jedes Tag anzeigen.
Die IPTC-Metadaten von JPEG-Bildern ausgeben.
Die JPEG-Kommentare von JPEG-Bildern anzeigen, setzen und löschen.
Die Exif-/IPTC-Metadaten von JPEG-Bildern erzeugen, setzen und löschen.
Die Exif-Zeitmarke anpassen (Damit begann alles …).
Exif-Bilddateien anhand des Exif-Zeitstempels umbenennen.
Exif-Metadaten, IPTC-Metadaten und JPEG-Kommentare entnehmen, einfügen und löschen.
Die in die Exif-Metadaten eingebetteten Vorschaubilder entnehmen, einfügen und löschen.
Die Exif-ISO-Einstellungen von Bildern von Nikon-Kameras korrigieren.
Homepage: http://www.exiv2.org

Ein Beispiel:
Vorher: DSCI0010.JPG  DSCI0011.JPG  DSCI0012.JPG
Rename: seraphyn@sayuri:~/Bilder/Rollei/April/$ exiv2 mv "%Y-%m-%d_%H-%M-%S" $STERN
Nachher: 20090424_181126.JPG  20090424_181137.JPG  20090424_184538.JPG

Das ganze geht auch recursiv: seraphyn@sayuri:~/Bilder/Rollei/April/$ exiv2 mv -r "%Y-%m-%d_%H-%M-%S" $STERN
und man kann noch selbst etwas hinzufügen: seraphyn@sayuri:~/Bilder/Rollei/April/$ exiv2 mv -r "%Y-%m-%d_%H-%M-%S_SupercomputerCray" $STERN
Achtung $STERN ist das nette Zeichen über den plus und der Tilde, welches erreichbar ist mit_Shift_. Mein Blog interpretiert es leider als nettes BOLD:(

Neue Mails auf IMAP-Server per Perl anzeigen in ion3/screen

Da ich darum gebeten wurde, doch mal das Perlscript „rauszurücken“, welches ich in ion3 in der Statusbar nutze, werde ich dies nun doch mal machen;)
Installiert werden muss unter Debian libnet-imap-simple-ssl-perl .
Bei diesem Perlmodul handelt es sich um eine Subklasse des Perlmoduls Net::IMAP::Simple, welches aber die SSL-Verschlüsselung beherrscht.
Angesprochen werden die beiden in der gleichen Art, welches sich auch auf cpan.org nachlesen lässt.
Das Script kann auch unter screen genutzt werden, dafür nimmt man die Option backtick und lässt das Script dann, sage ich mal, alle 10 Minuten von screen aufrufen. Ich würde empfehlen es bei 10 Minuten zu belassen, denn alles andere könnte von dem Administratoren des Mailserver als Hammering angesehen werden und ich gehe davon aus, dass man dies nicht möchte.
Ich nutze dieses Script zweimal, einmal für meinen Seraphyn- und einmal für meinen Vollnamen-Account. Abgelegt habe ich es in meinem Dokumente-Ordner, welcher eine verschlüsselte Partition ist, somit brauche ich mir in dem Sinne keine Gedanken wegen den Klartextpasswörtern machen.
Zeile 4-6 sind mit den jeweiligen Daten anzupassen und in den Zeilen 16 und 19 sollte das Sera gegen ein aussagekräftiges Kürzel für den Mailaccount ausgetauscht werden.
Bis Dato werden nur die neuen Mails in der INBOX beachtet, falls Jemand sieve bzw. Regeln nutzt, welche die Mails gleich in die richtigen Ordner verschiebt muss das Script angepasst werden.
[perl]#!/usr/bin/perl -w
use strict;
use Net::IMAP::Simple::SSL;
my $server = ‚DEINIMAPSERVER‘;
my $user = ‚DEINBENUTZERNAME‘;
my $pass = ‚DEINPASSWORT‘;
my $imap = Net::IMAP::Simple::SSL->new($server);
$imap->login($user => $pass) || die "cannot connect";
my $messages = $imap->select(‚INBOX‘);
my $count = 0;
for my $msg (1..$messages) {
$count++ unless $imap->seen($msg);
}
$imap->quit();
if ($count == 0) {
print "Sera: 0";
}
if ($count > 0) {
print "Sera: $count";
}[/perl]

Das ganze wird dann in die Datei $HOME/.ion3/cfg_statusbar.luaper exec eingebunden:

exec = {
 sera={
 program='/home/seraphyn/Dokumente/bin/imapseraphyn',
 retry_delay=6000*1000,
 },
 UND SO WEITER UND SOFORT

In dem Abschnitt template= setzt man dann %exec_sera ein, bzw wenn nicht wie in Zeile 2 sera= genutzt wurde natürlich das à„quivalent. Ich gehe aber davon aus, wer ion3 nutzt, weiss was er tun muss;)

Shellthusiast: trash-cli, denn manchmal ist rm zuviel

Viele Unixer und Linuxer leben gerne in der Shell. Im Normalfall ist man nicht der geneigte Windowsbenutzer, welcher bei einem Löschkommando die Fragen: Ja, Nein, Vielleicht, Ich weiß nicht und Abbrechen bekommt ( dieser Humor sei mir gegönnt). Sprich, wenn Du etwas löschtst, dann bist Du dir auch sicher, dass Du jenes möchtest, typisch Unix/Linux und das ist auch Gut so. Jedem ist es schon einmal passiert, dass er eine Datei in der Orkus geschossen hat und danach durch die Gegend gesprungen ist wie Rumpelstilzchen. Nun könnte man ext3undel, foremost, oder ext3grep nutzen und sich auf ein bischen DeepLevel-Hacking von ext3 begeben. Kenntnisse vorausgesetzt¹
Wer wirklich löschen möchte sollte/muss shred nutzen, in der Default-Einstellung wird die Datei 25 mal überschrieben, aber leider kein Fortschritt angezeigt, dies kann mit der Option -v geschehen. Am besten einen alias anlegen.
Da ich mich zu 99% auf der Shell bewege und nur das nötigste per GUI nutze hatte ich auch schon den Fall der Löschung eines wichtigen Files, zum Glück nicht mit shred. Dies brachte mich zu dem Finden von trash-cli.
trash-cli bietet einem einen Mülleimer in der Shell und hilft somit, manchen Vertipper ohne eine daraus hervorgehende Halbglatze durch Haare raufen zu verhindern und befindet sich auch als schlechgepflegtes Paket in den Debian-Repositories. Bei FreeBSD muss es mit der Hand kompiliert werden, welches bei den Abhängigkeiten ( python >= 2.5 ; python-setuptools >= 2.5) nicht die Herausforderung für ein Shellfreund sein sollte.
Ich kann aber nur davon warnen das Debian-Paket zu nehmen, da es sich um eine veraltete Version handelt, welche nicht wirklich die Befehle nutzt, welche hier vorgestellt werden und vor allem einen massiven Bug besitzt, welcher die Daten zerstören kann. Siehe dazu auch den Hinweis auf der Download/Install-Seite der Homepage.

Nach der Installation stehen folgende Befehl zu der Verfügung:
trash-put > Datei in den Mülleimer
trash-list > Mülleimerinhalt anzeigen
restore-trash > Ergibt einer nummerierte Liste mit dem Inhalt des Mülleimers
trash-empty > ALLE Dateien aus dem Mülleimer entfernen
trash-empty $TAGE > Löscht die Dateien, welche länger als n-Tage schon in dem Mülleimer sind
Die Dateien werden unter dem Freedesktop.org-Standard (XDG-PATH) für den Müll/Trash abgelegt. Wer dies nicht möchte muss den Pfad per Softlink umbiegen. Ich weise extra daraufhin. Es ist vielleicht gewünscht den Mülleimer eher auf einem Enc. Datenträger zu haben, was auch eine bessere Lösung ist. Was nützt eine verschlüsselte HD, wenn die Dateien unverschlüsselt in dem Müll liegen. Eine neue Art von DumpsterDiving, wenigstens stinkt man da nicht;)
Am besten legt man sich einen Softlink auf trash-put Namens del an und nutzt einen cron-job bzw. nutzt die .bash_logout für das Leeren des Mülleimers. Natürlich geht auch ein Script, welches bei einem Shutdown ausgeührt wird. Am besten verknüpft man die ganze Sache mit shred.
Viel Spaß beim löschen;)

¹ Eine sehr gute Übersicht schrieb Carlo Wood 2008 mit dem Artikel HOWTO recover deleted files on an ext3 file system

Meine .bash_functions

Gerne nutze ich kleine Funktionen, welche nicht in der Bash, oder in anderen Programmen vorhanden sind. Um die Datei ~/.bash_functions mit einzubinden habe ich die Zeile:

if [ -f ~/.bash_functions ]; then
    . ~/.bash_functions
fi

in meiner ~/.bashrc.
Das erleichter mir den Überlick und das gleiche mache ich mit den Dateien ~/.bash_aliases ~/.bash_exports.
Niklot. Nein, ich nehme keine zsh;) (ein Insider).

~./bash_functions:

function wikipedia() { w3m  http://de.wikipedia.org/w/wiki.phtml?search="$*" ;}
function mtube {
  video_id=$(curl -s $1 | sed -n "/watch_fullscreen/s;.*(video_id.+)&title.*;1;p");
  mplayer -fs $(echo "http://youtube.com/get_video.php?$video_id");
}
function mkcd() {
  [ -n "$1" ] && mkdir -p "$@" && cd "$1";
}
  
cp_p()
{
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i< =percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

1. wikipedia lässt mich in der Shell mit Hilfe von w3m nachschlagen
2. mtube lässt mit Youtube-Videos mit der Hilfe des mplayers anschauen ( Ich muss mal ein irssi-Script schreiben, das …)
3. mkcd lässt mich ein Verzeichnis erstellen und gleichzeitig in jenes hineinwechseln, parents werden auch erstellt, falls nicht vorhanden.
4. cp_p gibt mir einen progress bar für den Kopierbefehl cp. # Der Befehl ist von Chris Lamb .Thank You, Chris

Shellthusiast: undvd, denn es muss keine GUI haben

Es gibt Momente, da ist eine GUI etwas feines. Es gibt Momente da ist eine Shell eine Klasse über der GUI und das Programm kann einfacher sein, als sein Pendant im grafischen Bereich.
Shellthusiast sagt sich, wenn der Server läuft und nichts zu tun hat, dann mache mir meine DVDs bitte bereit für XBMC und störe mich nicht bei der Arbeit. Gesagt getan, ich wollte schon ein kleines Script schreiben, da fiel mir ein, dass da mal auf Cli-Apps.org ein kleines nifty Script vorhanden war. Ich meine, wenn ich mich schon als Fan eintrage, dann sollte ich auch undvd einmal vorstellen;)
undvd ist eine kleine Ansammlung an Scripts, welche aufgrund von Backendprogrammen es ermöglicht, in der Shell eine DVD/File/ISO in ein anderes Format umzuwandeln. Das ganze hat schon Voreinstellungen, welche für den Ottonormalbenutzer ausreichen.
Mit dem Befehl scandvd wird der Inhalt der DVD angezeigt und als Ausgabe erhält man nun als Bsp:

* Scanning DVD for titles with lsdvd...
01  length: 01:25:05  audio: en de  subs: en de
02  length: 00:00:00
03  length: 00:00:00
04  length: 00:00:01
05  length: 00:00:01
06  length: 00:00:01
07  length: 00:00:01
08  length: 00:00:01
09  length: 00:00:01
10  length: 00:00:01
11  length: 00:00:01
12  length: 00:00:01
13  length: 00:00:01
14  length: 00:00:00
15  length: 00:00:01
16  length: 00:00:01

Nun kann der Auftrag an undvd weitergegeben werden, ich möchte Titel 1 (den Film) auf Deutsch ohne Untertitel als xvid und mp3 als Sound:

undvd -d /dev/dvd -t 01 -a de -2 --vcodec xvid

Das war es. Simpel. Es können noch andere Parameter wie das Kopieren der DVD als ISO auf die HD vor dem Umwandeln, oder auch mehrere Titel angegeben werden. Der Aufruf ohne Paramter von undvd und scandvd bieten Beispielparameter und ich verweise wie immer gerne auf das Handbuch oder das Blog von numerodix.
Pakete: tar.gz; ebuild; rpm und natürlich deb. Jene sind bei Sourceforge zu finden.
Somit ein kleines leckeres Ding, was für den Privatgebrauch vollkommen ausreicht. Ja, auch H264 und Konsorten sind möglich, bevor noch Jemand fragt…
Auch weise ich wie immer darauf hin, Du sollst nicht stehlen und nur das auf Deine HD kopieren, wofür Du auch das Recht hast. Somit ein kleiner Disslamer ;)