pythonstarcluster

Send input to command line prompt from Python program


I believe this to be a very simple question, but I have been failing to find a simple answer.

I am running a python program that terminates an AWS cluster (using starcluster). I am just calling a command from my python program using subprocess, something like the following.

subprocess.call('starcluster terminate cluster', shell=True)

The actual command is largely irrelevant for my question but provides some context. This command will begin terminating the cluster, but will prompt for a yes/no input before continuing, like so:

Terminate EBS cluster (y/n)? 

How do I automate typing yes from within my python program as input to this prompt?


Solution

  • You can write to stdin using Popen:

    from subprocess import Popen, PIPE
    proc = Popen(['starcluster', 'terminate', 'cluster'], stdin=PIPE)
    proc.stdin.write("y\r")