私はServerFaultの人間であるため、初めてここで少し助けを求めています。
私はPythonでスクリプトを作成していて、これまでこの言語を愛してきましたが、スクリプトが機能しなくなるという小さな問題があります。
問題のコード行は次のとおりです。
subprocess.call('xen-create-image --hostname '+nom+' --memory '+memory+' --partitions=/root/scripts/part.tmp --ip '+ip+' --netmask '+netmask+' --gateway '+gateway+' --passwd',shell=True)
私はos.popenで同じことを試しました。すべての変数が正しく設定されています。
通常のLinuxシェルで問題のコマンドを実行すると、完全に正常に機能しますが、Pythonスクリプトを使用して実行すると、奇妙なエラーが発生します。コマンドの正確な出力を使用していることを確認するために、subprocess.call()をprint関数に置き換えました。
シェルの環境変数を調べましたが、ほとんど同じです...発生したエラーを投稿しますが、問題に関連するかどうかはわかりません。
/usr/share/perl5/Config/IniFiles.pm行614の置換(s ///)での初期化されていない値$ lines[0]の使用。/usrのパターン一致(m //)での初期化されていない値$_の使用/share/perl5/Config/IniFiles.pm行628。
私はPythonの専門家ではないので、ここで何かが足りない可能性があります。
よろしくお願いします。
アントワーヌ
編集
miaxのアドバイスに従って、shell=Trueの使用をやめました。代わりに、サブプロセスのPythonドキュメントを見て、次のコードを使用しました。
cmd = 'xen-create-image --hostname '+nom+' --memory '+memory+' --partitions=/root/scripts/part.tmp --ip '+ip+' --netmask '+netmask+' --gateway '+gateway+' --passwd'
args = shlex.split(cmd)
subprocess.call(args)
悲しいことに、それは何も変更しません...
EDIT2
miaxから提供されたヒントを使用しましたが、それでも上記のエラーが発生します...使用したコードは次のとおりです。
cmd = ['xen-create-image', '--hostname', nom, '--memory', memory, '--partitions=/root/scripts/part.tmp', '--ip', ip, '--netmask', netmask, '--gateway', gateway, '--passwd']
subprocess.call(cmd)
これは本当に奇妙です...通常のシェルで実行すると、正確なコマンドは正常に機能します...