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.

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 !

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 🙂

  • ¿Por qué la bomba de horquilla no bloqueó el androide?
  • Hotspot Android 4.2.2+
  • Propiedades del sistema de Android: deshabilitarlas en la línea de comandos
  • Ejecución de un comando de shell para copiar archivos de la aplicación Android
  • Android Shell EOF
  • ¿Cómo traceroute en adb shell?
  • No se puede usar Runtime.exec () para ejecutar el comando shell "echo" en el código Java de Android
  • Android: Cambiar automáticamente el idioma del dispositivo sin reiniciar el dispositivo
  • ¿Cómo desinstalar la propia aplicación de / system / app?
  • Cómo salir de APK de shell
  • ¿Cómo simular el tacto del servicio del fondo con sendevent o la otra manera?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.