0

これは、sysinternals コマンドを実行しない Python スクリプトからの続きです。

私のスクリプトは入力を取ります

python ps.py sender-ip=10.10.10.10

送信者 IP は、変数 userIP に読み込まれます。ただし、次のサブプロセスに userIP を渡すと

pst = subprocess.Popen(
        ["D:\pstools\psloggedon.exe", "-l", "-x", "\\\\", userIP],
        stdout = subprocess.PIPE,
        stderr = subprocess.PIPE
    )

out, error = pst.communicate()

userLoggedOn = out.split('\n')[1].strip()
print 'userId={}'.format(userloggedon)

スクリプトは出力します

userId=

サブプロセスに userIP を読み取らせて実行させるにはどうすればよいですか

D:\pstools\psloggedon.exe  -l -x \\userIP

そして出力

userId=DOMAIN\user

編集

スクリプトを実行するコマンドラインは

python py.ps sender-ip=10.10.10.10

手動で実行すると

D:\PSTools\PsLoggedon.exe -l -x \\10.10.10.10

探している結果が得られます

4

3 に答える 3

1

これを機能させる最も簡単な方法は、生の文字列リテラルを使用して文字列リテラル内のバックスラッシュをエスケープせず、Windows でコマンドを文字列として渡すことです。

from subprocess import check_output

output = check_output(r"D:\pstools\psloggedon.exe  -l -x \\userIP")
print(output.splitlines())
于 2014-05-16T05:30:57.920 に答える