2015-04-01 30 views
1

我想在一個bash腳本中嵌入一個小的python腳本,這樣我就可以將一個json對象發送到套接字。 我曾嘗試下面的代碼:嵌入在bash中的Python不起作用

python -c "$(cat << 'EOF' 
import socket 
import json 

data = {'ip':192.168.1.150', 'status':'up'} 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('127.0.0.1', 13373)) 
s.send(json.dumps(data)) 
result = json.loads(s.recv(1024)) 
print result 
s.close() 
EOF 
)" 

這: 蟒蛇-c「 進口插座 進口JSON

data = {'ip':192.168.1.150', 'status':'up'} 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('127.0.0.1', 13373)) 
s.send(json.dumps(data)) 
result = json.loads(s.recv(1024)) 
print result 
s.close() 
" 

但我不斷收到以下錯誤:

data = {'ip':192.168.1.150', 'status':'up'} 
        ^
SyntaxError: invalid syntax 

我假設這是因爲bash解釋這個,而不是python。我已經測試了python腳本中的代碼, nd它的工作。 另外,我需要-c選項嗎?我在Python中完全沒有經驗,我爲我正在編寫的項目編寫了一些相當廣泛的bash腳本,並且需要將這些輸出發送到套接字作爲json對象。這樣一個嵌入式Python代碼的小剪輯似乎是迄今爲止最簡單的答案,除非任何人有其他建議。

Python版本安裝在CentOS的Python 2.6.6

回答

4

,你具有導致SyntaxError是,你不會對在data字典的IP值的開單引號的問題。您有:

data = {'ip':192.168.1.150', 'status':'up'} 

您需要:

data = {'ip':'192.168.1.150', 'status':'up'} 
+0

感謝@約翰。凌晨3點編碼,恐慌我的解決方案不起作用。感謝您的時間,我應該注意到這一點。 – jewfro 2015-04-01 23:39:51