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.
- ¿Cómo usar el comando su sobre adb shell?
- Android adb, recuperar base de datos utilizando run-as
- Cómo hacer una línea para el bucle en el shell de Android
- Cómo usar el mono androide
- Android: Cómo restringir una aplicación con ADB shell am start
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 !
- Adb pull -> dispositivo no encontrado
- Compruebe si el directorio existe en Android sdcard con bash
- ¿Por qué el comando SQLite 3 que usa la shell ADB de Android devuelve "permiso denegado"?
- ¿Cómo desactivar el Wifi a través de ADB?
- Comandos ADB de Android para obtener las propiedades del dispositivo
- Generar android apk utilizando shell script de php?
- Cómo empujar las carpetas de la computadora en sdcard usando adb shell
- 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
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