Iniciar un script como root a través de ADB
He creado un script para montar particiones y hacer algunas cosas en mi sistema Android. He guardado el script como install.sh en la carpeta / bin de Android.
Quiero llamar a la secuencia de comandos de ADB, que se llama de un archivo por lotes en Windows, pero tiene que ser ejecutado como root.
- Android: ¿Cómo saber si alguna aplicación ya está instalada en el dispositivo android usando adb?
- Introducción de shell ADB dentro de un directorio específico en el dispositivo conectado utilizando sólo una sola línea de código de terminal
- ¿Cómo simular el tacto del servicio del fondo con sendevent o la otra manera?
- ¿Cómo copiar y editar archivos en Android shell?
- Adb extraer archivo en una carpeta específica de Pc
La primera solución que intenté fue llamar al script usando
adb shell "su -c sh /bin/script.sh"
Pero no funciona ya que me da un acceso de shell (con permisos de root), pero no se ejecuta nada. También traté de llamar
adb root "sh /bin/script.sh"
Pero tengo el siguiente error
adbd cannot run as root in production builds
Entonces traté de escribir
su -c "command"
Para todos los comandos que necesitan un acceso root en mi script, pero tengo el mismo problema. Cuando ejecuto el script sólo obtengo un shell de raíz y no se ejecuta nada.
Si utilizo la primera solución a mano (por ejemplo, llamo adb shell su, entonces mi script), funciona. Sin embargo, todo el punto es automatizar el proceso, de modo que el shell de adb puede ser llamado desde otro script.
¿Tiene alguna idea de cómo podría lograr esto?
Gracias !
- Ejecutar Python en el terminal Android
- Android: Adb rechazó la conexión al cliente
- Adb shell su funciona, pero la raíz adb no
- Intentando obtener acceso r / w a android / system
- Cómo obtener salida de los comandos de busybox en la aplicación de Android
- Comandos ADB de Android para obtener las propiedades del dispositivo
- ¿Cómo puedo usar adb para desinstalar un APK de varios dispositivos conectados?
- Adb shell dumpsys meminfo - ¿Cuál es el significado de cada celda de su salida?
Esto funciona para mí:
Crear myscript.bat y poner en él (tenga en cuenta las comillas simples en torno a los comandos que se ejecutará en modo superusuario):
adb shell "su -c 'command1; command2; command3'"
Entonces ejecuta myscript.bat desde un shell de DOS.
Nota: no parece que el carácter de continuación de línea DOS (^) funcione en esta situación. En otras palabras, lo siguiente no funciona para mí:
adb shell "su -c '^ command1; ^ command2; ^ command3'"
Esto resulta en "Error de sintaxis: Cadena entre comillas no terminada"
Esto funciona :
adb shell echo command which needs root privileges \| su
Si necesita redirección:
adb shell echo 'echo anytext > /data/data/aforbiddenfolder/file' \| su
Para "copiar" un archivo local a una ruta de android que necesita privilegios de root (pero alocalfile no debe contener '
):
cat alocalfile | adb shell echo "echo '`cat`' > /data/data/aforbiddenfolder/file" \| su
Si usted tiene una mejor manera (incluso para las versiones su
que no tienen -c
), estoy interesado.
Esto funciona para mí:
adb shell "su -c ./data/local/tcpdump-arm -s 0 -v -w /data/local/appxpress_dump.pcap"
Pero no funciona ya que me da un acceso de shell (con permisos de root), pero no se ejecuta nada.
¿Cómo sabes que te dan permisos de root? Supongo que está intentando ejecutar el script en un dispositivo? ¿Su dispositivo ha sido arraigado?
Puede que tenga que dar permisos de ejecución a través de chmod al archivo.
chmod ugo=rwx /bin/script.sh
Parece que estaba usando una versión muy simple de su que no aceptó el argumento -c. Copié otro su que funcionó. AndyD es totalmente correcto, así que estoy aceptando su respuesta en vez de la mía 🙂
- Emulador de Android laggy en Mac
- Android usando Gradle Construir sabores en el código como un caso if