2014-07-06 67 views
0

我需要將「echo/bin/meteo |在今天23:00」集成到python腳本中。如何在python中集成「at」命令

在Python腳本的命令「在今天23:00」應該叫bash腳本/斌/氣象

我沒有安裝鉛,在我的Python紙條intergrated這一點。

from plumbum.cmd import echo, grep 

不幸的是,我不知道如何從這裏開始。

我tryed:

#!/usr/bin/python2.7 

    if pfd.input_pins[0].value ==0: 
     cmd = "echo /bin/meteo | at 06:36 today" 
     subprocess.Popen(cmd, shell=True) 

但位於/ bin /氣象燈隨機swiching和關閉(不閃爍,因爲他們應該)

他們這樣做是從06:36至06:37而不僅僅是5次。

/斌/氣象:

#!/bin/bash -x 

for i in {1..5}; do #blink 5x 
echo -n -e "\x37\x00\x55" | nc -u -q 1 192.168.0.6 8899 #Zone 3 on 
sleep 0.1 
echo -n -e "\x3A\x00\x55" | nc -u -q 1 192.168.0.6 8899 #Zone 3 off 
done 
sleep 0.1 
exit 
+1

'subprocess.popen'會做你想做的。 –

回答

1

subprocess.Popen將運行命令:

import subprocess 
cmd = "echo /bin/meteo | at 23:00 today " 
subprocess.Popen(cmd, shell=True) 

在新進程中執行一個子程序。在Unix上,類使用類似os.execvp()的行爲來執行子程序。在Windows上,該類使用Windows的CreateProcess()函數。 Popen的論據如下

參數應該是一個程序參數序列或者一個單獨的字符串。默認情況下,如果args是序列,則要執行的程序是args中的第一個項目。如果參數是一個字符串,則解釋是依賴於平臺的,並在下面進行描述。查看shell和可執行參數以獲取與默認行爲的其他差異。除非另有說明,否則建議將參數作爲序列傳遞。

這是不完全清楚自己想要什麼,但你可以運行像任何命令:

In [9]: cmd = "date" 

In [10]: subprocess.call(cmd, shell=True) 
Sun Jul 6 22:30:47 IST 2014 

或者使用sudo:

import subprocess 
cmd = "sudo which python" 
my_pass="xxxx" 
subprocess.call('echo {} | sudo -S {}'.format(my_pass,cmd), shell=True) 
In [29]: subprocess.call('echo {} | sudo -S {}'.format(my_pass,cmd), shell=True) 
/usr/local/bin/python 
Out[29]: 0 
0

使用Python 3.4,可以很容易地調用命令交換輸入/輸出批量:

subprocess.check_output(["at", "23:00", "today"], input="/bin/meteo") 

因此在這種情況下,0123應該不需要,因爲我們只需使用參數調用at命令並在輸入時爲其提供腳本。

與舊版本的蟒蛇,這需要被改寫爲:

process = subprocess.Popen(["at", "23:00", "today"]) 
process.communicate(input="/bin/meteo") 

隨着plumbum模塊,你可以改用:

from plumbum.cmd import at, echo 
(echo["/bin/meteo"] | at["23:30", "today"])() 

但我不認爲它是非常有用。

+0

我以爲Popen是錯誤的命令? –

+0

@PadraicCunningham:這取決於你使用它的方式。當你不需要在'shell = True'情況下影響stdin/stdout時,沒有理由使用'subprocess.Popen'。當你使用Python 3.4時,'subprocess.check_output'就足夠了。只有當你想提供自己的輸入並且你使用的是舊版本的Python時,你必須使用它。 –

+0

所以它是必要的蟒蛇2? –