无法从Android的.bat文件的shell中输入su命令

时间:2018-08-26 23:01:19

标签: android adb

我需要将以下命令添加到.bat文件中,但它停止并在以下位置挂在“ root @ apq8084:/#”:

adb root
adb remount
adb shell

我可以手动输入以下所有命令,但是批处理文件不会将它们传递过来。 请有人帮我解决这个问题。

adb root
adb remount
adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
cat /system/bin/sh > /system/bin/su
chmod 4755 /system/bin/s
chmod 220 /sys/class/gpio/unexport /sys/class/gpio/export
set -A pins 8 28 55 56 76 77 95
for i in 0 1 2 3 4 5 6
do
echo ${pins[i]} > /sys/class/gpio/export;
chmod 777 /sys/class/gpio/gpio${pins[i]};
chmod 777 /sys/class/gpio/gpio${pins[i]}/value;
chmod 777 /sys/class/gpio/gpio${pins[i]}/direction;
done
mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

1 个答案:

答案 0 :(得分:1)

我怀疑脚本正在su命令处停止,因为它正在等待输入超级用户的密码。您是否要以超级用户身份在su语句之后运行所有命令?如果是这样,则可以使用 heredoc 语法并提供密码作为schell脚本的第一个也是唯一的参数 (有关更多详细信息,请参见https://en.wikipedia.org/wiki/Here_document#Unix_shells。)

#!/bin/bash

MY_PASSWORD=$1

adb root
adb remount
adb shell
echo ${MY_PASSWORD} | su -S <<EOSU
    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    cat /system/bin/sh > /system/bin/su
    chmod 4755 /system/bin/s
    chmod 220 /sys/class/gpio/unexport /sys/class/gpio/export
    set -A pins 8 28 55 56 76 77 95
    for i in 0 1 2 3 4 5 6
    do
        echo ${pins[i]} > /sys/class/gpio/export;
        chmod 777 /sys/class/gpio/gpio${pins[i]};
        chmod 777 /sys/class/gpio/gpio${pins[i]}/value;
        chmod 777 /sys/class/gpio/gpio${pins[i]}/direction;
    done
    mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
EOSU

然后这样称呼它:

my-script.sh mySuperUserPassword