使用cron计划时的Python用户输入

时间:2015-02-21 01:25:33

标签: python cron raspberry-pi

我正在使用我的Raspberry Pi创建一个闹钟。

想法是禁用闹钟 - 我必须输入一个随机生成的数字序列。

如何安排此python脚本通过cron运行,允许用户从键盘输入?

或者如果不可能 - 我将如何创建一个可以在设定时间运行的一般术语,并接受用户输入?

这个Raspberry Pi正在无头运行,我的应用程序大声说出这些数字,但为了简单起见,我在这里略过了它。

import random

s = str(random.randint(10, 99))

print s

while True:
    question = raw_input("Enter code as above: ")
    if question == s:
        print "Alarm Disabled"
        break
    else:
        print "Wrong Code. Try Again"

这是在星期一到星期五早上7:30运行的cronjob:

crontab -e 30 7 * * 1-5 sudo python /home/pi/alarmclock.py

编辑:好的,我有一个解决方法:

如果我使用GUI运行Rasberry Pi:

startx

安装" xterm"并将我的crontab更改为:

crontab -e 30 7 * * 1-5 DISPLAY=:0 xterm -e /usr/bin/python /home/pi/alarmclock.py

有效。我只是希望我可以在没有运行X的情况下启动它(可能是应用程序焦点问题而我的文本没有输入到正确的窗口中)

我从哪来得到:Linux: Run cron job in foreground

1 个答案:

答案 0 :(得分:0)

您可以尝试使用命名管道。要创建它,请运行mkfifo /home/pi/pipe。更改crontab调用:python /home/pi/alarmclock.py </home/pi/pipe

要输入代码,请运行:

$ cat >/home/pi/pipe
Enter the code here and press Enter
Press Ctrl-D to signal EOF

虽然它允许以异步方式输入输入,但可能会破坏闹钟的目的。