1

I have the following Python script, chmod +x'd. When I run this script from the command line and Putty has not been started, it launches putty:

#!/usr/bin/env python
from __future__ import print_function

import shlex
import subprocess

output = subprocess.check_output(['ps', 'aux'])
found = False
for line in output.split('\n'):
    if line.endswith('putty -load test'):
        found = True
        break

if not found:
    print("Starting Putty")
    subprocess.Popen(['putty',
                      '-load',
                      'test'])
else:
    print("Putty going strong")

However, if I don't start putty, then it will just keep saying "Starting Putty" (which I have directed to a file for logging).

My guess is that it has something to do with the display, but I'm not sure how to fix it or even exactly what I would look for.

Wayne Werner
  • 11,463
  • 8
  • 29
  • 43

1 Answers1

2

Turns out you need to set the display.

* * * * * env DISPLAY=:0 /home/wayne/.bin/run_putty

Or, if I had multiple monitors

* * * * * env DISPLAY=:0.0 /home/wayne/.bin/run_putty

And now it will check/run every minute.

Wayne Werner
  • 11,463
  • 8
  • 29
  • 43
  • 3
    Depending on your distribution, you may need to set `XAUTHORITY` as well. See [Open a window on a remote X display (why "Cannot open display")?](http://unix.stackexchange.com/q/10121) – Gilles 'SO- stop being evil' Sep 26 '12 at 23:10