我设法通过终端在Android手机上启动Linux,甚至启动SSH服务并使用ConnectBot对其进行测试。但是,这是一个手动操作。我正在考虑更多的自动化方法。
我使用了这个Linux机制:http://mitchtech.net/android-backtrack-chroot/
我认为我的主要问题是我在chroot
完成之前和之后尝试做一些步骤,这似乎不适用于Android应用:
Runtime.getRuntime().exec("su");
//Mount the image
Runtime.getRuntime().exec("startbt");
//chroot into Linux
Runtime.getRuntime().exec("bt");
//From inside chroot, start the ssh service
Runtime.getRuntime().exec("/etc/init.d/ssh start");
这似乎也不起作用:
Runtime.getRuntime().exec("su & startbt & bt & /etc/init.d/ssh start");
我再次猜测这是一个被解释为chroot内部或外部的问题。我的主要任务最终是自动启动SSH服务,而不一定是通过Android应用程序。
答案 0 :(得分:1)
如果你执行
Runtime.getRuntime().exec("su");
这将启动su
,然后退出。下一个exec不会使用提升的权限执行。同样,在执行bt
之后,下一个命令不会在chroot环境中执行。
我认为bt
是一个脚本?您可以更改它以将参数传递给chroot
,因此您可以将命令传递给它,例如:
...
chroot new_root /etc/init.d/ssh start
...
要运行此功能,您需要使用su
选项直接将命令传递给-c
。并且您需要将命令作为String数组传递(或使用ProcessBuilder
):
Runtime.getRuntime().exec(new String[] {"su", "-c", "startbt; bt"});
另一种选择是让bt
从命令行传递参数到chroot:
chroot new_root "$@"
然后在命令行上传递它们:
Runtime.getRuntime().exec(new String[] {"su", "-c", "startbt; bt /etc/init.d/ssh start"});
答案 1 :(得分:0)
除非你真的想以这种方式做事,否则我真的只需要下载一个SSH服务器应用程序。
我个人使用 SSHDroid 。
https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&hl=en
但是从你自己的应用程序的外观来看,你自己启动内置的ssh服务器?所以你可能已经知道你已经可以使用app了。
祝你好运。