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

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

特定のカーネルモジュールを登録する必要があります(https://github.com/504ensicsLabs/LiME)Ubuntu 18.04で

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

Pythonスクリプトから。 .bashrc環境を試してみましたが、 os.system() ; subprocess.run()/call()/Popen() - shell=True/False コマンドラインで実行したときにモジュールエラーに不明なシンボルが表示され、すべて失敗しました。 Pythonスクリプトはroot権限で実行されます。私が逃したものは何ですか?サブプロセスと直接シェルの違いは何ですか?インストールしようとしているモジュールの特殊な特性に関連していますか?エラーは次のとおりです。

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과 같나요?

おすすめ記事