2012-06-02 4 views
1

단일 규칙 파일 형식으로 규칙 집합을 허용하는 프로그램이 있습니다.bash를 사용하여 C에서 명령 그룹을 파일에 저장하지 않고 실행하십시오.

조건 중 하나가 내 프로그램에 의해 충족되는 것으로 간주되면 조건과 관련된 명령 블록을 독립적 인 bash 스크립트로 처리하여 실행해야합니다. 나는 오히려 바람직하지 않은 공격 벡터를 남기면서 이러한 명령을 파일에 저장하는 것을 다루지 않을 것입니다. 한 줄로 bash 명령에 줄 바꿈 된 목록을 입력하는 방법이 있습니까? bash 스크립트의 조건과 다른 것들이 올바르게 작동하기를 원한다.

예 규칙 파일 : 조건이 true 일 때

내가하지 서로 독립적으로, bash는 명령의 그룹으로 bash는 코드의 네 줄을 실행할 수 있도록하려면
if CONDITION 
some nice 
bash commands 
pkill some process 
./launching something! 
endif 

에 의해 결정 내 C 프로그램.

분명히 이것은 프로그래밍 언어로 C를 사용하는 Linux에서 온 것입니다.

답변

0

가장 간단한 방법은 아마도 sh -c "string containing commands to be executed"을 사용하는 것입니다. 까다로운 것은 내장 된 개행 문자입니다. 명령 자체에 작은 따옴표가 포함되지 않으면 여러 줄 문자열을 작은 따옴표로 묶을 수 있습니다. 작은 따옴표를 포함 할 수 있다면 문자열을 이스케이프 처리하여 변경되지 않도록해야합니다.

그래서 :

  • 이 버퍼에 명령을 읽어
  • 버퍼에 대한 처리를 탈출 할; 대신 각 '
  • 형식 명령 (백 슬래시 출력에 있어야합니다, 그래서 C에서 문자열이 "'\\''"처럼 보이는 것을 기억) '\''와 : snprintf(command, sizeof(command), "sh -c '%s'", escaped_buffer);
  • 충분한 공간이 있었다 확인
  • 실행 system(command);
+0

실행 가능한 솔루션처럼 들립니다. 사실 그 부분을 실제로 구현해야 할 시점에 이르기까지, 나는 그때까지는 알지 못할 것이다. 그러나 고마워! – coder543

1

popenbash 프로세스 일 수도 있습니다.

그러나 접근 방법에는 응용 프로그램 내에 스크립팅 인터프리터를 포함시키는 것이 좋습니다. 예를 들어 퍼가기를 고려 했습니까? 안에 lua?

관련 문제