Befehl zur Automatisierung der Unterscheidung SailfishOS+Alien Dalvik von einem Android-Gerät

Befehl zur Automatisierung der Unterscheidung SailfishOS+Alien Dalvik von einem Android-Gerät

EDIT0: Ich habe 3 Smartphones:

Ein Jolla1-Smartphone mit SailfishOS v3 + Alien Dalvik und 2 Android-Smartphones.

Ich möchte sie in der Shell-Sprache unterscheiden können:

Auf meinem Jolla1 Linux:

$ uname -s
Linux
$ getprop ro.build.version.release
4.1.2
$ uname -a 
Linux myJolla1 3.4.108.20190506.1 #1 SMP PREEMPT Wed Oct 9 18:24:45 UTC 2019 armv7l armv7l armv7l GNU/Linux

Auf meinem ersten Android-Smartphone über adb shell:

shell@hlteatt:/ $ getprop ro.build.version.release
5.0
shell@hlteatt:/ $ uname -s
/system/bin/sh: uname: not found
127|shell@hlteatt:/ $ uname -a
/system/bin/sh: uname: not found

Auf meinem zweiten Android-Smartphone über adb shell:

BV9500Pro:/ $ uname -s
Linux
BV9500Pro:/ $ getprop ro.build.version.release
8.1.0
BV9500Pro:/ $ uname -a                                                                                                                             
Linux localhost 4.4.95 #9 SMP PREEMPT Wed Mar 20 18:03:34 CST 2019 aarch64

Ich habe dies versucht, aber beide Geräte verfügen über das getpropTool, sodass dies nicht funktioniert:

getprop 2>/dev/null | grep -q ro.build.version.release && export osFamily=Android || export osFamily=$(uname -s)

Übrigens:SailfishOSist ein echtes Linux basierend auf dem Linux-Kernel + demMer-Projekt-Softwareverteilung(letzteres ist ein Ableger der nicht mehr erhältlichenMeeGoLinux-Distribution)

Antwort1

Sie können drei verschiedene Antworten zurückerhalten uname -mund diese nutzen.

Wir erwarten eine Fehlerantwort vom Gerät ohne uname, aber wir unterdrücken den Fehler und verwenden die leere Antwort als unseren Indikator.

case "$(uname -m 2>/dev/null)" in
  (armv7l)  DEVICE=Jolla ;;
  (aarch64) DEVICE=Android1 ;;
  ("")      DEVICE=Android2 ;;
  (*)       DEVICE=UNKNOWN ;;
esac

Wir könnten uns zwar auf die Softwareversionsnummern beziehen, diese können sich jedoch ändern, wenn das Betriebssystem aktualisiert wird. Die Verwendung der Hardwareinformationen ist unter Ihren aktuellen Umständen zuverlässiger, führt jedoch zu Fehlalarmen, wenn Sie weitere Geräte mit derselben Hardwarearchitektur erhalten.

Antwort2

Eine andere Möglichkeit wäre, Bash (z. B. die Termux-App) auf allen Android-Geräten zu installieren und das Skript die OSTYPEBash-Variable testen zu lassen:

Auf dem Android 8.1-Gerät ist die OSTYPEBash-Variable gleich linux-android(siehe Screenshot unten):

Der Befehl zur Differenzierung lautet daher:

echo $OSTYPE | grep -q android && export osFamily=Android || export osFamily=$(uname -s)

Bildbeschreibung hier eingeben

verwandte Informationen