insmod에 대한 Python 하위 프로세스 호출이 정의되지 않은 기호 오류를 생성하며 std 쉘에서 작동합니다.

insmod에 대한 Python 하위 프로세스 호출이 정의되지 않은 기호 오류를 생성하며 std 쉘에서 작동합니다.

특정 커널 모듈을 등록해야 합니다(https://github.com/504ensicsLabs/LiME) 우분투 18.04에서

sudo insmod /path/to/lime.ko path=~/dump.raw format=raw

파이썬 스크립트에서. .bashrc 환경을 사용해 보았지만 os.system() ; subprocess.run()/call()/Popen() - shell=True/False명령줄에서 실행했을 때 모듈 오류에 알 수 없는 기호가 표시되어 모두 실패했습니다. Python 스크립트는 루트 권한으로 실행됩니다. 내가 놓친 게 무엇입니까? 하위 프로세스와 직접 쉘의 차이점은 무엇입니까? 설치하려는 모듈의 특수한 특성과 관련이 있습니까? 오류는 다음과 같습니다

insmod: error inserting 'path/to/lime.ko': Unknown symbol in module

답변1

이것이 문제의 원인인지는 모르겠지만 ~in은 cmd path=~/dump.raw해당 옵션이 활성화되지 않은 경우(해당 옵션에 대해) 쉘에 의해서만 확장됩니다(그리고 남은 것이 유효한 변수 이름처럼 보이는 경우에만). )로 호출될 때 활성화되고 해당 옵션이 활성화되면 셸에 의해 활성화됩니다.bashmkshbash=posixbashposixshzshmagicequalsubst

다른 껍질에는 없습니다. 의 경우 shPOSIX에는 echo path=~출력이 필요합니다 path=~.

따라서 sh빌드에 기본적으로 해당 모드가 활성화되어 있지 않으면 mksh셸을 사용하여 내부에서 실행하는 경우 홈 디렉터리로 확장되지 않습니다.posixpythonsh~

여기서는 다음을 사용하세요.

sudo insmod /path/to/lime.ko path="$HOME/dump.raw" format=raw

대신에. 또는 쉘이 호출되지 않으면 python환경 변수 값을 검색하여 HOME매개변수를 구성합니다.path=....

확장 주제에 대한 자세한 내용은 ~다음을 참조하세요.~ 항상 $HOME과 같나요?

관련 정보