通过 ADB 以 root 身份启动脚本

     2023-02-23     146

关键词:

【中文标题】通过 ADB 以 root 身份启动脚本【英文标题】:Launch a script as root through ADB 【发布时间】:2012-02-04 10:16:07 【问题描述】:

我创建了一个脚本来挂载分区并在我的 Android 系统中执行一些操作。我将脚本作为 install.sh 保存在 Android 的 /bin 文件夹中。

我想从 ADB 调用脚本,该脚本本身是从 Windows 上的批处理文件调用的,但需要以 root 身份执行。

我尝试的第一个解决方案是调用脚本使用

adb shell "su -c sh /bin/script.sh"

但它不起作用,因为它为我提供了 shell 访问权限(具有 root 权限),但没有执行任何操作。 我也试过打电话

adb root "sh /bin/script.sh"

但我收到以下错误

adbd cannot run as root in production builds

然后我试着写

su -c "command"

对于我的脚本中需要 root 访问权限的所有命令,但我有同样的问题。 当我运行脚本时,我只获得了一个 root shell,没有执行任何操作。

如果我手动使用第一个解决方案(例如,我调用 adb shell su,然后调用我的脚本),它就可以工作。然而,重点是自动化该过程,以便可以从另一个脚本调用 adb shell。

您知道我如何实现这一目标吗?

谢谢!

【问题讨论】:

我找到了我的解决方案here。 【参考方案1】:

这对我有用:

创建 myscript.bat 并放入其中(注意要在超级用户模式下执行的命令周围的单引号):

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

然后从 DOS shell 运行 myscript.bat。

注意:在这种情况下,DOS 行继续符 (^) 似乎不起作用。换句话说,以下内容对我不起作用:

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

这会导致“语法错误:未终止的带引号的字符串”

【讨论】:

这在我的三星 Note 4 Exynos 版本,系统版本 Android 4.4 上运行得非常好。我在网上搜索了一整天的解决方案。感谢上帝,我终于读到了这篇文章。有用。 RootAdb 以前可以在 Galaxy Note 10.1 平板电脑上工作,但现在不能在 Note4 上工作了。 在 Android 7.1.1 上,我发现在双引号中使用单引号实际上会弄乱执行。删除它们似乎使一切按预期工作。【参考方案2】:

这行得通:

adb shell echo command which needs root privileges \| su

如果需要重定向:

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

用于将本地文件“复制”到需要 root 权限的 android 路径(但本地文件不得包含'):

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

如果您有更好的方法(即使对于没有-csu 版本),我很感兴趣。

【讨论】:

当我像这样adb shell 'echo uname -a > /ggg.txt' \| su 运行带有输出重定向的命令时,我收到文件系统是只读的错误消息,但是当我通过adb shell su 以root 身份登录时,我可以成功运行相同的命令。这个问题有解决办法吗?【参考方案3】:

这对我有用:

adb shell "su -c ./data/local/tcpdump-arm -s 0 -v -w /data/local/appxpress_dump.pcap"

【讨论】:

这个命令有什么新的地方还没有提到吗? 设备命令周围没有单引号。在我删除它们之后,一切都开始工作了。谢谢。【参考方案4】:

我不确定我是否提供了解决方案或要求提供更好的解决方案。 我想以批处理模式运行一些 200 条命令以发送到 adb 我遵循了这种方法

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

我把它们保存在一个批处理文件中

这个命令

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

将无法超过某个最大尺寸。它没有工作

error: service name too long

【讨论】:

【参考方案5】:

但它不起作用,因为它为我提供了 shell 访问权限(具有 root 权限),但没有执行任何操作。

你怎么知道你被授予root权限?我假设您正在尝试在设备上执行脚本?你的设备已经root了吗?

您可能需要通过 chmod 授予文件执行权限。

chmod ugo=rwx /bin/script.sh

【讨论】:

没有执行任何操作,但控制台显示一个外壳,我可以输入我的命令,带有“#”,这意味着我有 root 访问权限。是的,我的设备已植根。我的脚本也有执行权限,但是调用 sh /bin/script.sh 应该不需要这个权限吧? 啊,我什至没有意识到这一点,但是您不需要具有执行权限是正确的。您可以尝试“source /bin/script.sh”,看看是否有任何不同(可能不是)。【参考方案6】:

看来我使用的是一个非常简单的 su 版本,它不接受 -c 参数。 我复制了另一个确实有效的 su 。不过,AndyD 是完全正确的,所以我接受他的回答而不是我的 :)

【讨论】:

我的也不行。你从哪里复制的?

以 root 身份运行 Node.js 脚本的 Elastic beanstalk

】以root身份运行Node.js脚本的Elasticbeanstalk【英文标题】:ElasticbeanstalkrunningNode.jsscriptasroot【发布时间】:2016-06-1916:51:59【问题描述】:我有一个node.js脚本/应用程序,我试图在AWSElasticbeanstalknode.js服务上运行。使用sudo启动脚本后... 查看详情

以 root 身份运行结构脚本

】以root身份运行结构脚本【英文标题】:Runningfabricscriptsasroot【发布时间】:2013-02-1308:31:48【问题描述】:我正在尝试使用结构来自动化我在几台服务器上执行的一些管理工作。一般流程如下:SSH与本地用户运行:sudosu-成为root... 查看详情

以root身份在脚本中间运行命令[重复]

】以root身份在脚本中间运行命令[重复]【英文标题】:Runacommandinthemiddleofascriptasroot[duplicate]【发布时间】:2019-04-0209:55:47【问题描述】:我需要在bash的脚本中间以root身份执行一行,我有以下代码:#!/bin/bash...EOFif[[$x=true]]||[[$y="On... 查看详情

Cron,以root身份执行bash脚本,但一部分(Python脚本)以用户身份执行

】Cron,以root身份执行bash脚本,但一部分(Python脚本)以用户身份执行【英文标题】:Cron,executebashscriptasroot,butonepart(Pythonscript)asuser【发布时间】:2022-01-1718:28:24【问题描述】:我需要在JetsonNano(比如Ubuntu18.04)上定期运行bash脚... 查看详情

以root身份运行python脚本

】以root身份运行python脚本【英文标题】:Runningpythonscriptasroot【发布时间】:2014-04-2917:33:53【问题描述】:我有以下脚本:#!/usr/bin/envpythonimportsysimportpyttsxdefmain():print\'runningspeech-text.py...\'engine=pyttsx.init()str="Hi..."iflen(sys.argv)& 查看详情

确保脚本以root用户身份运行

importosifos.geteuid()!=0:print"Thisprogrammustberunasroot.Aborting."sys.exit(1) 查看详情

sh确保以root身份执行脚本(代码片段)

查看详情

在pycharm中以管理员身份运行/调试脚本(howtorun/debugprogramsasrootinpycharm)(代码片段)

...python脚本,因为pycharm本身好像没有这个特性,目前只能通过一些额外的手段来实现。思路就是让pycharm以root身份执行python编译器。这篇文章主要面向linux环境。具体可以这样做:1.建立一个可以以root身份执行python编译器的脚本,这... 查看详情

即使以 root 身份也无法执行 bash 脚本?

】即使以root身份也无法执行bash脚本?【英文标题】:Unabletoexecutebashscriptsevenasroot?【发布时间】:2011-12-2701:42:22【问题描述】:我有一个奇怪的问题,我无法执行bash脚本,即使是这样的基本脚本:#!/bin/bashecho"me"我将它保存为test... 查看详情

MariaDB - 无法以 root 身份登录

...空白,我也无法以root登录。即mysql-uroot将拒绝我访问。我通过sudomysql登录 查看详情

以 root 身份运行 Python 脚本(使用 sudo) - 有效用户的用户名是啥?

】以root身份运行Python脚本(使用sudo)-有效用户的用户名是啥?【英文标题】:RunningPythonscriptasroot(withsudo)-whatistheusernameoftheeffectiveuser?以root身份运行Python脚本(使用sudo)-有效用户的用户名是什么?【发布时间】:2011-08-0822:56:46... 查看详情

android系统如何通过$adb来获得/data/data目录的访问权限

参考技术Aandroid系统如何通过$adb来获得/data/data目录的访问权限android是linux内核/data/data是root用户的目录,普通用户是无法访问的,如果你需要访问,那么你的手机需要获取root权限。Root权限的获取方式:1.用手机连接电脑,下载一键root... 查看详情

在启动问题上以root身份运行python(代码片段)

如果这个问题已经被问到了,通常会提前道歉,但我已经花了几个小时尝试以前的答案,所以我很迷茫。我有下面的python脚本,在pizero上运行,以检测RFID卡,并作为HID键盘来输入密码。它不安全,我知道,但它的工作完美。当... 查看详情

如何以 root 身份运行 Perl 脚本但仍会影响用户 gconf 设置

】如何以root身份运行Perl脚本但仍会影响用户gconf设置【英文标题】:HowcanIrunaPerlscriptasrootyetstillaffectusergconfsettings【发布时间】:2011-04-2200:02:34【问题描述】:新问题:我正在尝试制作一个统一的脚本,根据我的喜好初始化新的U... 查看详情

以管理员用户身份重新启动 PowerShell 脚本

】以管理员用户身份重新启动PowerShell脚本【英文标题】:RelaunchingPowerShellscriptasadminuser【发布时间】:2016-10-1212:40:57【问题描述】:我有很多计算机系统需要我们部署软件。我一直在使用一种简单的方法来检测用户是否是本地管... 查看详情

嵌入式linux如何以root身份自动登录如何开机自动执行脚本文件

...文件下操作,那我应该如是实现呢?嵌入式Linux如何以root身份自动登录并开机自动执行脚本文件下面操作步骤记录如下:要设置自启动程序需要解决两个问题:1、 查看详情

如何以用户而不是 root 用户身份运行 cron 作业 [关闭]

】如何以用户而不是root用户身份运行cron作业[关闭]【英文标题】:Howtorunthecronjobasauserinsteadofrootuser[closed]【发布时间】:2011-12-3123:43:07【问题描述】:我有几个bash脚本可以添加到指定时间的cron作业中,但它需要以root用户身份执... 查看详情

如何在 Docker 容器中以非 root 用户身份启动 cron?

】如何在Docker容器中以非root用户身份启动cron?【英文标题】:Howtostartcrondasnon-rootuserinaDockerContainer?【发布时间】:2019-04-0519:34:35【问题描述】:我正在使用下面的Dockerfile和entrypoint.sh。我需要以非root用户身份在容器中启动crond... 查看详情