iptables에서 항목을 추가하기 위해 코드를 통해 shell 명령을 실행하려고합니다. 다음은 여기에 iptables에 업데이트를위한 쉘 명령과 writeIptables()를 구축하기위한 두 가지 방법 즉, createshellCommand()가 android에서 셸 명령을 실행하는 방법은 무엇입니까?
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");
}
}
코드
의 내 작품이다. 하지만 프로그램 로그 캣은 "거부 19,913 스와 요청 W (0-> 0/시스템/빈/SH)"다음과 같은 경고를 표시하고 실행하지만 수동으로 명령 프롬프트를 통해 항목을 추가 할 수 있습니다 언제 그 iptables에 추가하지만 위의 코드를 사용하여 업데이 트되지 않습니다. 내 전화는 루틴이고 리눅스 커널 2.6.29와 함께 안드로이드 2.3.4를 사용하고 있습니다. 그리고 루트 접근을 검사하기 위해 외부 라이브러리 "Roottools"를 사용하고 있습니다.
오류를 수정하는 데 도움을주십시오.
제안 해 주셔서 감사합니다 ... – Unnikrishnan