1 votos

¿Cómo puedo detectar si un shell script se está ejecutando en Android?

¿Cuál es la forma más fiable de detectar si un script se está ejecutando en Android (en lugar de una compilación normal de Linux)?

Para ejecutar scripts, estoy usando bash, la aplicación Terminal y BusyBox.

0voto

ollydbg23 Puntos 186

Para ello, necesitamos el siguiente código en un archivo en algún lugar del dispositivo Android (en /data/checkdroid por ejemplo):

ANDROID_HOST=0
ANDROID_BUSYBOX=/system/bin/busybox
ANDROID_BUSYBOX_APPLETS="acpid add-shell addgroup adduser adjtimex arp arping ash awk base64 basename beep blkid blockdev bootchartd brctl bunzip2 bzcat bzip2 cal cat catv chat chattr chgrp chmod chown chpasswd chpst chroot chrt chvt cksum clear cmp comm conspy cp cpio crond crontab cryptpw cttyhack cut date dc dd deallocvt delgroup deluser depmod devmem df dhcprelay diff dirname dmesg dnsd dnsdomainname dos2unix du dumpkmap dumpleases echo ed egrep eject env envdir envuidgid ether-wake expand expr fakeidentd false fbset fbsplash fdflush fdformat fdisk fgconsole fgrep find findfs flock fold free freeramdisk fsck fsck.minix fsync ftpd ftpget ftpput fuser getopt getty grep groups gunzip gzip halt hd hdparm head hexdump hostid hostname httpd hush hwclock id ifconfig ifdown ifenslave ifplugd ifup inetd init insmod install ionice iostat ip ipaddr ipcalc ipcrm ipcs iplink iproute iprule iptunnel kbd_mode kill killall killall5 klogd last less linux32 linux64 linuxrc ln loadfont loadkmap logger login logname logread losetup lpd lpq lpr ls lsattr lsmod lsof lspci lsusb lzcat lzma lzop lzopcat makedevs makemime man md5sum mdev mesg microcom mkdir mkdosfs mke2fs mkfifo mkfs.ext2 mkfs.minix mkfs.vfat mknod mkpasswd mkswap mktemp modinfo modprobe more mount mountpoint mpstat mt mv nameif nanddump nandwrite nbd-client nc netstat nice nmeter nohup nslookup ntpd od openvt passwd patch pgrep pidof ping ping6 pipe_progress pivot_root pkill pmap popmaildir poweroff powertop printenv printf ps pscan pstree pwd pwdx raidautorun rdate rdev readahead readlink readprofile realpath reboot reformime remove-shell renice reset resize rev rm rmdir rmmod route rpm rpm2cpio rtcwake run-parts runlevel runsv runsvdir rx script scriptreplay sed sendmail seq setarch setconsole setfont setkeycodes setlogcons setserial setsid setuidgid sh sha1sum sha256sum sha3sum sha512sum showkey slattach sleep smemcap softlimit sort split start-stop-daemon stat strings stty su sulogin sum sv svlogd swapoff swapon switch_root sync sysctl syslogd tac tail tar tcpsvd tee telnet telnetd test tftp tftpd time timeout top touch tr traceroute traceroute6 true tty ttysize tunctl udhcpc udhcpd udpsvd umount uname unexpand uniq unix2dos unlzma unlzop unxz unzip uptime users usleep uudecode uuencode vconfig vi vlock volname wall watch watchdog wc wget which who whoami whois xargs xz xzcat yes zcat zcip"

checkAndroid() {
    [ ! -e "/system/bin/adb" ] && return
    ANDROID_HOST=1
    if ! type $ANDROID_BUSYBOX >/dev/null 2>&1; then
        echo "FAILED! this program needs busybox to work on Android" 1>&2
        exit 1
    fi
    for i in $ANDROID_BUSYBOX_APPLETS; do
        eval "alias '$i=$ANDROID_BUSYBOX $i'"
    done
}

Este es un ejemplo de uso de este accesorio:

source "/data/checkdroid"
echo "ANDROID_HOST=$ANDROID_HOST" && type rdate
# output:
# ANDROID_HOST=0
# rdate not found
checkAndroid
echo "ANDROID_HOST=$ANDROID_HOST" && type rdate
# output:
# ANDROID_HOST=1
# rdate is an alias for '/system/bin/busybox rdate'

Fuente: https://gist.github.com/enten/67c4e332908b248a59a9

1 votos

Por favor, aclare el uso de su script.

0voto

Brian Mains Puntos 31772

Para determinar si el propio script se está ejecutando en un dispositivo Android o en otro tipo de Linux utilice getprop para detectar si el script se está ejecutando en Android en lugar de en un Linux normal.

Si desea utilizar el getprop en un script para determinar qué versión de Android está instalada, utilice getprop ro.build.version.release . Será algo así como COMMANDIF="$(command -v getprop ro.build.version.release)" en un script. Referencia de la fuente https://github.com/TermuxArch/TermuxArch/blob/master/setupTermuxArch.bash#L657 ejemplo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X