Lancer un script en tant que root via ADB
J'ai créé un script pour monter les partitions et faire quelques trucs dans mon système Android. J'ai enregistré le script que install.sh dans le dossier /bin de Android.
Je tiens à appeler le script à partir de la BAD, qui est elle-même appelée à partir d'un fichier batch sur Windows, mais il doit être exécuté en tant que root.
La première solution, j'ai essayé a été d'appeler le script à l'aide de
adb shell "su -c sh /bin/script.sh"
mais il ne fonctionne pas comme il me donne un accès shell (avec les permissions root), mais rien n'est exécuté.
J'ai aussi essayé d'appeler
adb root "sh /bin/script.sh"
mais j'ai l'erreur suivante
adbd cannot run as root in production builds
J'ai ensuite essayé d'écrire
su -c "command"
pour toutes les commandes qui ont besoin d'un accès root dans mon script, mais j'ai le même problème.
Lorsque je lance le script, je seulement obtenir un shell root et rien n'est exécuté.
Si j'utilise la première solution à la main (par exemple, j'appelle la commande adb shell su, alors mon script), il fonctionne. Cependant, le but est d'automatiser le processus, de sorte que la commande adb shell peut être appelé à partir d'un autre script.
Avez-vous une idée de comment je pourrais faire ?
Merci !
- J'ai trouvé ma solution ici.
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne pour moi:
Créer myscript.chauve-souris et y mettre (notez les guillemets simples autour de l'commandes qui doivent être exécutées en mode super-utilisateur):
puis exécutez le script.chauve-souris à partir d'un shell DOS.
Remarque: il n'apparaît pas que le DOS caractère de continuation de ligne (^) travaille dans cette situation. En d'autres mots, le code suivant ne fonctionne pas pour moi:
Le résultat est "erreur de Syntaxe: Indéterminé chaîne de caractères entre guillemets"
Cela fonctionne :
Si vous avez besoin de redirection:
De "copie" d'un fichier local vers un android chemin avoir besoin des privilèges root (mais alocalfile ne doit pas contenir
'
):Si vous avez une meilleure façon (même pour
su
versions qui n'ont pas-c
), je suis intéressé.adb shell 'echo uname -a > /ggg.txt' \| su
j'obtiens l'erreur que le système de fichiers est en lecture seule, mais je peux exécuter la même commande avec succès, lorsque j'ouvre une session en tant que root paradb shell su
. Est-il solution de contournement pour ce problème?Cela fonctionne pour moi:
Comment savez-vous que vous êtes donné les permissions root? Je suppose que vous tentez d'exécuter le script sur un appareil? A votre appareil pour prendre racine?
Vous pouvez avoir besoin de donner les autorisations d'exécution via chmod du fichier.
Il semble que j'ai été en utilisant une version très basique de la ligue, qui n'a pas accepté l'argument-c.
J'ai copié une autre ligue qui a fait un travail. AndyD est totalement droit si, si je suis accepter sa réponse au lieu de la mienne 🙂
Je ne suis pas sûr si j'ai fourni une solution ou demandé pour un meilleur.
Je voulais courir quelques 200 de commande en mode batch pour être envoyé à la bad
J'ai suivi cette approche
et je l'ai enregistré dans un fichier de commandes
Cette commande
ne fonctionnera pas au delà d'une certaine taille max . Il n'a pas de travail