2016-06-20 8 views
1

Ich gewähre regelmäßig Lese-/Schreib-/Ausführungsrechte (chmod 777) für verschiedene Systemdateien auf Android-Telefonen (gerootete Telefone). Manchmal füge ich dem Startskript den Befehl chmod 777 hinzu, um Zeit zu sparen. Auf dem Samsung Galaxy S6-Telefon aktualisiere ich die Datei (Skript): '/etc/init.sec.boot.sh' und füge den folgenden Befehl am Ende der Datei hinzu.Automatisieren von AdB-Shell-Befehlen mit Batch-Dateien (.bat)

chmod 777 <filename>

Dies funktioniert aus dem Inneren der adb Schale fein

su 
echo 'chmod 777 <filename>' >> /etc/init.sec.boot.sh 

nun mit dem folgenden Befehl, wenn ich auf das gleiche versuchen, eine .bat Datei es mir die Erlaubnis Fehler gibt. Ich verwende den folgenden Befehl

adb shell su -c "echo \"chmod 777 <filename>\" >> /etc/init.sec.boot.sh" 

Da dieser Befehl nicht funktioniert ich die Datei kopiert sdcard, sie modifiziert und dann die Originaldatei mit der modifizierten Version ersetzt. Wenn ich nun den Inhalt der Datei lese, liest es genau das, was ich wollte, aber der Befehl chmod wird nie ausgeführt. Ich habe das Telefon mehrere Male neu gestartet, aber die Datei-Erlaubnis wurde überhaupt nicht bewirkt. An dieser Stelle, wenn ich denselben Befehl aus der Shell ausführen, wenn funktioniert.

su 
echo 'chmod 777 <filename>' >> /etc/init.sec.boot.sh 

An dieser Stelle lesen die letzten zwei Zeilen in den init.sec.boot.sh-Dateien wie folgt.

chmod 777 <filename> 
chmod 777 <filename> 

Die letzten zwei Zeilen scheint genau das gleiche. Der Befehl chmod funktioniert nur, wenn er aus der Shell heraus geschrieben wird. Die einzige vernünftige Erklärung, die ich mir vorstellen kann, ist, dass es möglicherweise eine andere Textcodierung gibt, die von der Windows-Eingabeaufforderung und der Android-Linux-Shell verwendet wird. Wie Sie den Befehl chmod erfolgreich aus .bat-Dateien ausführen (oder sogar direkt von der Eingabeaufforderung).

PS: Ich habe neu montiert/System zu lesen/schreiben.

+0

'>>' bedeutet das gleiche in Windows wie in Unix. Wenn Sie möchten, dass Ihre Weiterleitung von der adb-Shell verarbeitet wird, müssen Sie sie in Windows maskieren. Also '^> ^>'. –

+0

Ich habe bereits alles in das "" eingefügt. Also sollte alles innerhalb der AdB-Shell ausgeführt werden. Ich habe auch Ihre Vorgehensweise mit ^> ^> versucht, aber es stoppt die Verkettung des Befehls chmod mit dem ursprünglichen Skript. –

Antwort

0

Ich vermute, das Problem war der Unterschied zwischen Windows EOL und Unix EOL.

Also habe ich ein Skript innerhalb des Linux-Systems (Android-Linux-System) erstellt, um das chmod-Zeug zu machen. Verwende den Befehl adb pull, um die .sh-Datei auf meine Windows-Maschine zu kopieren.

Jetzt kopiert meine ursprüngliche Stapeldatei dieses Skript zurück auf das Telefon und führt es aus. (Ich musste das Skript nach/data/local im Telefon kopieren). Das funktioniert perfekt.