そのため、問題が発生しており、何が間違っているのかがわかります。私はpython 2.4とsubprocessモジュールを使用しています。これは、私の django サイトと統合されています。ユーザー入力を求めるフォームがあり、それをファイルに入れ、ファイルがあるディレクトリでスクリプトを開始します。
ディレクトリを文字列にハードコーディングすると正常に動作し、wlst スクリプトを出力します。そうしないと動作せず、接続されただけで完了したと考えられます。
相変わらず何の情報もなく困っています。なぜに。このスクリプトは、通常のコマンド ラインで正常に動作し、通常の Python コードからでも動作します。私が言える唯一のことは、変数についてです。
コード:
if form.is_valid():
env = form.cleaned_data['env']
user = form.cleaned_data['user']
group = form.cleaned_data['group']
role = form.cleaned_data['role']
id = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
root = "/opt/tools/Mapper/output/webui/%s" % (id)
if not os.path.exists(root):
os.makedirs(root)
output = open(root+"/mapping.out", 'w')
if (user):
user_stg = "User:"+user+":"
password = User.objects.filter(user__contains=user).values('password')
password_f = open(root+"/passwords.out", 'w')
password_out = "%s:%s" % (user, password[0]['password'].encode('ascii'))
password_f.write(password_out)
if (group):
grp_stg = "GroupName:"+group+":"
if(role):
role_stg = "RoleName:"+role
out_stg = user_stg+grp_stg+role_stg
output.write(out_stg+"\n")
command = "/opt/tools/Mapper/bin/wlst /opt/tools/Mapper/bin/creator -e ldap.dev -s pacdcespopsa1:7001 -o /opt/tools/Mapper/output/webui/JBHSMN"
args = shlex.split(command)
print args
resp = HttpResponse(command_output(args));
def command_output(args):
import subprocess
return subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
このコードと可変駆動型のコードの唯一の違いは、
command = "/opt/tools/Mapper/bin/wlst /opt/tools/Mapper/bin/creator -e ldap.dev -s pacdcespopsa1:7001 -o %s" % (root)