我想通過我的代碼在Iptables中添加條目來執行shell命令。以下是我的一段代碼如何在android中執行shell命令?
private void createShellCommand(String uidValue_param, String interface_param) {
// TODO Auto-generated method stub
StringBuilder cmdScript=new StringBuilder();
script.append("iptables -A OUTPUT " + interface_param + "-m owner --uid-owner " + uidValue_param + "-j REJECT");
writeIptables(cmdScript);
}
private void writeIptables(StringBuilder scriptfile) {
// TODO Auto-generated method stub
String cmd=scriptfile.toString();
if(RootTools.isRootAvailable())
{
Process exec;
try {
exec = Runtime.getRuntime().exec(new String[]{"su","-c"});
final OutputStreamWriter out = new OutputStreamWriter(exec.getOutputStream());
out.write(cmd);
// Terminating the "su" session
out.write("exit\n");
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("IPtables updation failed", "Iptable write failed"+e);
}
}
else
{
Log.e("Root Access denied", "Access Denied");
}
}
這裏有兩種方法即,createshellCommand()用於構建外殼命令和writeIptables()用於更新的iptables。但每當我運行該程序的logcat正在顯示以下警告
「W 19913蘇請求拒絕(0-> 0 /系統/ bin/sh的)」
但我可以手動添加通過命令提示的入口和它添加到iptables,但通過使用上面的代碼,它不更新。我的手機已經植根,我正在使用Android 2.3.4和Linux內核2.6.29。我正在使用外部庫「Roottools」來檢查根訪問權限。
請幫我糾正錯誤。
感謝您的建議... – Unnikrishnan