Où puis-je exécuter un script .sh sur Android sans root? -- adb domaine et shell domaine et 8.0-oreo domaine et scripts domain android en relation problème

Where can I run a .sh script on Android without root?



3
vote

problème

français

Dernièrement, je joue avec des scripts .sh à Android. Au début, j'ai utilisé Busybox et c'est intégré Utilitaire de script, bien que je réalisais rapidement que le codage sur le téléphone n'est pas le meilleur, alors je suis passé sur mon bureau et j'ai commencé à utiliser adb pour pousser mes scripts à mon appareil. Tout a bien fonctionné pendant environ deux semaines, jusqu'à récemment les mêmes scripts qui fonctionnaient parfaitement, dis-moi quelques : not found[0]: syntax error: '{ erreur. J'ai copié le même code de mon script et j'ai utilisé Busybox pour le créer pour moi, et cette façon ça marche très bien. Donc, le code est bien.

Après quelques creux, je pense que c'est à cause des autorisations, à cause de l'encodage éventuellement, ou aussi à cause de l'emplacement des scripts. J'ai essayé de nombreux endroits différents (car je veux pouvoir exécuter les scripts sans root) et finir par choisir /storage/emulated/0 . Si je comprenais correctement, il s'agit d'un lien symbolique du stockage interne, qui est lu / écriture-capable sans racine. Mais peut-être parfois exécutable et parfois pas? Je ne sais pas.

Donc, ma question est comme suit: Quel est le meilleur emplacement sur un périphérique Android pour exécuter des scripts sans racine de ... de préférence un chemin qui fonctionne sur n'importe quel appareil Android.

info:

  • Enraciné Samsung S7 SM-G930F
  • Android 8.0.0
  • J'utilise #!/system/bin/sh à l'intérieur des fichiers .sh
  • Je cours les scripts avec sh script.sh
  • Lorsque vous essayez de l'exécuter sous forme d'exécutable ./script.sh , je reçois un Permission denied erreur. Avec ou sans racine.

PS: Et si quelqu'un a une idée de la raison pour laquelle les mêmes scripts ont cessé de fonctionner de nulle part, je serais heureux de savoir!

Mise à jour: Merci à @irfanlatif, j'ai réussi à corriger l'erreur 9988777666 ! J'utilisais le code Visual Studio comme éditeur d'éditeur pour les scripts, ce qui les sauvait avec la séquence de fin de ligne 9988777667 , quel Android n'aime pas. Pour une solution facile, changez simplement vos fins de ligne vers LF , problème résolu. Vérifiez les commentaires pour plus d'informations.

langue Anglaise

Lately I've been playing around with .sh scripting in Android. At first I used BusyBox and it's integrated scripting utility, though I quickly realised that coding on the phone isn't the best, so I switched over to my desktop and started using ADB to push my scripts to my device. It all worked well for about two weeks, until recently the exact same scripts that used to work perfectly, tell me some : not found[0]: syntax error: '{ Error. I've copied the exact same code from my script and used BusyBox to create it for me, and that way it works just fine. So the code is fine.

After some digging, I think it's either because of permissions, because of encoding possibly, or also because of the location of the scripts. I've tried many different locations (because I want to be able to run the scripts without root), and ended up choosing /storage/emulated/0. If I understood correctly, this is a symlink to the internal storage, which is read/write-able without root. But maybe sometimes executable and sometimes not? I don't know.

So my question is as following: What is the best location on an Android Device to run scripts without root from? Preferably a path that works on any android device.

Info:

  • Rooted Samsung S7 SM-G930F
  • Android 8.0.0
  • I'm using #!/system/bin/sh inside the .sh files
  • I'm running the scripts with sh script.sh
  • When trying to run it as an executable ./script.sh, I get a Permission denied error. With or without root.

PS: And if anyone has a clue to why the exact same scripts stopped working out of nowhere, I'd be happy to know!

UPDATE: Thanks to @IrfanLatif, I've managed to fix the : not found[0]: syntax error: '{ Error! I was using Visual Studio Code as my editor for the scripts, which was saving them with the End of Line Sequence CRLF, which Android doesn't like. For an easy fix, just change your Line Endings to LF, problem solved. Check the comments out for more info.

           
     
     

Liste de réponses

5
 
vote
vote
Meilleure réponse
 

/storage/emulated/0 est généralement monté de manière à empêcher l'exécution de programmes de cet emplacement.

Par conséquent, même avec un jeu exécutable défini pour votre script, vous ne pourrez pas l'exécuter directement. Bien sûr, vous pouvez toujours l'exécuter via SH:

/system/bin/sh /storage/emulated/0/test.sh

Alternativement, il existe le répertoire /data/local/tmp qui est écritable sans root (par exemple via adb). Là, vous pouvez placer un script et l'exécuter directement.

REMARQUE: Lister le contenu de /data et 9988777664 est refusé pour les utilisateurs non-racines, mais dans /data/local/tmp Vous avez à nouveau des autorisations. < / p>

 

/storage/emulated/0 is usually mounted in a way that prevents execution of programs from this location.

Therefore even with a set executable bit for your script you won't be able to execute it directly. Of course you can still execute it via sh:

/system/bin/sh /storage/emulated/0/test.sh 

Alternatively there is the directory /data/local/tmp which is writable without root (e.g. via adb). There you can place a script and execute it directly.

Note: Listing the content of /data and /data/local is denied for non-root users, but in /data/local/tmp you have permissions again.

 
 
         
         

Questions connexes

0  Comment exécuter un script sur un appareil Android enraciné?  ( How to run a script on a rooted android device ) 
Nous avons récemment déployé de nombreux appareils Android à l'intérieur de l'affichage de la page Web personnalisée uniquement. DISPOSITIF: RKM MK902 OS...

2  Comment puis-je scripter mon téléphone?  ( How do i script my phone ) 
Ce que je veux surtout faire, c'est rapidement modifier les paramètres, ajouter des alarmes, etc. C'est peut-être appelé quelque chose d'autre? Ceci est à...

1  Comment définir la fréquence de la CPU le plus tôt possible?  ( How to set cpu frequency as early as possible ) 
Ce que je veux dire par cette question est la séquence d'exécution des scripts au démarrage. Supposons que j'ai cette ligne de script: echo 307000 > /sys...

0  Où sont installés des binaires?  ( Where are binaries installed ) 
i juste récemment enraciné mon téléphone afin que je puisse installer sl4a. Je souhaite exécuter certaines commandes via un script Python, désactivez spécifiq...

54  Comment puis-je exécuter un script au démarrage?  ( How can i run a script on boot ) 
Je suis habitué à exécuter des scripts au démarrage de Linux, mais je ne sais pas comment faire cela dans Android. Je voudrais démarrer mon démon SSH en début...

9  Sur Android puis-je écrire des scripts (similaires à gagnez des fichiers .bat) pour combiner plusieurs commandes de ligne de commande?  ( On android can i write scripts similar to win bat files to combine several co ) 
sur Windows, je peux exécuter deux commandes à l'aide d'un fichier .bat. Comment puis-je obtenir la même chose sur Android Par exemple: Mettez à jour me...

3  Comment exécuter un exécutable au démarrage et le garder en marche?  ( How to run an executable on boot and keep it running ) 
J'ai une version exécutable à partir d'un programme ndk-build . Je veux l'exécuter sur un appareil Android enraciné. Quelle est la possibilité que Android tu...

1  Comment faire de la longue pression dans Android 4.1.2 et 4.2.2 à l'aide de ADB?  ( How to long press in android 4 1 2 and 4 2 2 using adb ) 
J'ai découvert que la commande ci-dessous n'exécute pas dans Android 4.1.2 et 4.2.2, mais elle s'exécute de Android 4.4 +. input touchscreen swipe x1 y1 x2...

1  Comment créer un fichier update.zip pouvant copier et renommer un fichier?  ( How to create an update zip file that can copy rename a file ) 
Voici exactement ce que je recherche - j'ai besoin d'un fichier 'update.zip' qui peut copier un fichier (exemple): /system/framework/file-to-copy.apk à un...

3  Exécution de votre propre script .sh à Vold.Decrypt = trigger_shutdown_framework via init.rc (Android 5.0)  ( Running your own sh script at vold decrypt trigger shutdown framework via init ) 
Je veux contourner un bogue de fournisseur dans un téléphone Android 5.0 (chinois, mtk, pas de source appropriée) Le problème est dû à un bogue dans certain...




© 2022 www.demandez.top All Rights Reserved. Questions et réponses Accueil Tous les droits sont réservés