Launch a script as root through ADB

后端 未结 6 1022
眼角桃花
眼角桃花 2020-12-02 15:57

I have created a script to mount partitions and do some stuff in my Android system. I saved the script as install.sh in the /bin folder of Android.

I want to call th

相关标签:
6条回答
  • 2020-12-02 16:23

    I am not sure if I provided a solution or asked for a better one. I wanted to run some 200 command in batch mode to be sent to adb I followed this approach

        adb shell "su -c command ; "
    adb shell "su -c command ; "
    adb shell "su -c command ; "
    adb shell "su -c command ; "
    

    and I saved them in a batch file

    This command

    adb shell "su -c 'command1; command2; command3'"
    

    will not work beyond a certain max size . It did not work

    error: service name too long
    
    0 讨论(0)
  • 2020-12-02 16:30

    It appears that I was using a very simple version of su which did not accept the -c argument. I copied another su which did work. AndyD is totally right though, so I am accepting his answer instead of mine :)

    0 讨论(0)
  • 2020-12-02 16:35

    This works for me:

    adb shell "su -c ./data/local/tcpdump-arm -s 0 -v -w /data/local/appxpress_dump.pcap"
    
    0 讨论(0)
  • 2020-12-02 16:37

    but it does not work as it gives me a shell access (with root permissions), but nothing is executed.

    How do you know that you are given root permissions? I assume you are attempting to execute the script on a device? Has your device been rooted?

    You may need to give execute permissions via chmod to the file.

    chmod ugo=rwx /bin/script.sh
    
    0 讨论(0)
  • 2020-12-02 16:40

    This works :

    adb shell echo command which needs root privileges \| su
    

    If you need redirection:

    adb shell echo 'echo anytext > /data/data/aforbiddenfolder/file' \| su
    

    For "copying" a local file to an android path needing root privileges (but alocalfile must not contain '):

    cat alocalfile | adb shell echo "echo '`cat`' > /data/data/aforbiddenfolder/file" \| su
    

    If you have a better way (even for su versions which don't have -c), I am interested.

    0 讨论(0)
  • 2020-12-02 16:41

    This works for me:

    Create myscript.bat and put into it (note the single quotes around the commands to be executed in superuser mode):

    adb shell "su -c 'command1; command2; command3'"
    

    then run myscript.bat from a DOS shell.

    Note: it doesn't appear that the the DOS line continuation character (^) works in this situation. In other words, the following doesn't work for me:

    adb shell "su -c '^
    command1; ^
    command2; ^
    command3'"
    

    This results in "Syntax error: Unterminated quoted string"

    0 讨论(0)
提交回复
热议问题