Du bist hier:Start»CyanogenMod»Hacks»ConnectBot

Shell-Skripte unter CyanogenMod

25.04.2015

ConnectBot Logo

Android ist so konzipiert, dass viele Apps auf Java basieren und das eigentliche Linux-System etwas verkrüppelt ist. Allerdings funktionieren in Android auch Shell-Skripte. Der Vorteil von Shell-Skripten ist, dass sie ohne Entwicklungsumgebung geschrieben und direkt auf dem Smartphone geändert werden können. Android bietet leider keine Möglichkeit an, ein Shell-Skript über ein Desktop-Icon zu starten - so wie es bei Apps möglich ist. Die Open-Source-App ConnectBot rüstet diese Funktion nach und kann Shell-Skripte über ein Desktop-Icon starten.

Desktop-Symbol für ein Shell-Skript einrichten

Zunächst muss die App ConnectBot von F-Droid.org auf dem Smartphone installiert werden. Nach dem Start von ConnectBot lassen sich neue "Sitzungen" anlegen. Für ein lokales Shell-Skript muss links unten "local" ausgewählt und ein Sitzungsname eingegeben werden - in dem Beispiel ist der Sitzungsname: "test".

neue lokale Sitzung in ConnectBot einrichten

neue lokale Sitzung in ConnectBot einrichten

Durch langes Drücken auf die Sitzung "test" erscheint der Menüpunkt "Host editieren".

ConnectBot Host editieren

Einstellungen über Host editieren ändern

Durch das Tippen auf "Host editieren" erscheint das Einstellungsmenü der Sitzung. Unter dem Menüpunkt "Post-Login Automatisierung" kann jetzt ein Shell-Skript eingetippt werden. Zum automatischen Ausführen des Befehls bei Sitzungsstart muss nach dem Befehl noch ein Enter-Zeichen in das Feld eingetippt werden:

Post-Login Automatisierung von ConnectBot

Post-Login Automatisierung von ConnectBot

Jetzt ist die lokale Sitzung "test" eingerichtet und kann als Desktop-Symbol über die Widgets auf den Desktop angeordnet werden.

Widgets für den Desktop einrichten

Widgets für den Desktop einrichten

ConnectBot Widget

ConnectBot Widget 1x1

In den Widgets kann ConnectBot 1x1 gedrückt und auf den Desktop gezogen werden. Dabei öffnet sich ConnectBot mit den eingerichteten Sitzungen.

Sitzung von ConnectBot auswählen

Sitzung von ConnectBot auswählen

Bei der Auswahl der Sitzung "test" wird auf dem Desktop das ConnectBot-Symbol mit dem Namen "test" angelegt.

Desktop mit Icon zum Starten eines Shell-Skript

Desktop mit Icon zum Starten eines Shell-Skript

Beim Tippen auf das ConnectBot-Symbol "test" startet ConnectBot mit der Sitzung "test". Durch die "Post-Login Automatisierung" wird jetzt das Shell-Skript ausgeführt - in dem Beispiel "echo test".

Shell-Skript mit ConnectBot ausgeführt

Shell-Skript mit ConnectBot ausgeführt

Probleme bei CyanogenMod 11

Bei CyanogenMod Version 11 hatte ich gelegentlich das Problem mit ConnectBot, dass die Post-Login Automatisierung nicht zuverlässig funktionierte. Als Alternative zur Post-Login Automatisierung benutze ich die folgenden Shell-Funktionen in der Datei .bashrc.

# edit the .bashrc file
vi /data/media/0/.bashrc

function getConnectbotSessionTime() {
  expr $(date +%s) - $(sqlite3 /data/data/org.connectbot/databases/hosts .dump | grep "$1" | sed "s|.*NULL,NULL,\([0-9]*\),'gray'.*|\1|")
}

USER_ID_OF_CONNECTBOT=$(stat /data/data/org.connectbot/databases/hosts | grep "Uid:" | sed 's|.*Uid: ( *[0-9]*/ *\([^)]*\)).*|\1|')

if [ "$USER" == "$USER_ID_OF_CONNECTBOT" ];then
  if [ $(getConnectbotSessionTime test) -lt 2 ]; then
    # put your script here:
    echo "test"
  elif [ $(getConnectbotSessionTime home) -lt 2 ]; then
    echo "Home"
  fi

  su
fi

alias ki='killall org.connectbot'

Beim Beenden der ConnectBot-Sitzung kommt immer die nervige Meldung: "Der Host hat die Verbindung beendet. Sitzung schließen ?" "Ja / Nein". Um diese lästige Abfrage zu umgehen kann der Alias ki für "killall org.connectbot" in der Shell eingegeben werden.

Falls noch etwas unklar sein sollte, dann kannst du die Kommentar-Funktion benutzen.

Kommentar schreiben