2017-07-14 15 views
0

バットをオフにすると、同様の質問hereがありますが、それは全く答えていません私の質問。私はそこにコメントを残した。 asyncio長いbashコマンドをasyncio.subprocess.create_subprocess_exec()に渡すことはできますか?

シェルインジェクションから保護するためにshell=Falseで、より一般的なsubprocess.Popenコマンドを模倣asyncio.subprocess.create_subprocess_execコルーチンがあります。 Popenは、文字列のリストを受け入れますが、create_subprocess_execは文字列のみを受け入れ、

asyncio.subprocess.create_subprocess_exec('ls', '-lah', 'myfile', stdout=..., stderr=..., stdin=...) 

ように私は、例えば、大きな文字列としてbashコマンドを持っていますs = 'ls -lah myfile'。私はcreate_subprocess_execにコマンドを渡したいが、s.split()のようなリストは機能しない!どうすればよいですか?

答えて

0

asyncio.subprocess.create_subprocess_execは、一連の引数として主演リストを受け付けますので、解決策は特にrsync Iで、

cmd = ['ls', '-lah', 'myfile'] 
asyncio.subprocess.create_subprocess_exec(*cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, stdin=asyncio.subprocess.PIPE) 

注意の言葉、このようにbashのコマンドをフォーマットすることは難しいことであるべきと思われます見つけた

関連する問題