[英]Python: Netcat function doen't work
當我在Linux上使用此命令時,它可以工作:
echo "test.bash.stats 44 1459116000" | nc myhostname.com 2003
但是現在,我嘗試在Python腳本中實現此命令。
方法1:使用os.system("")
# this works
os.system("echo 'test.bash.stats 14 1459116000' | nc myhostname.com 2003")
#It does not work because there are a problem with quote
data['time_timestamp'] = 1459116000
os.system("echo 'test.bash.stats 14 "data['time_timestamp']"' | nc myhostname.com 2003")
方法2:使用套接字
import socket
def netcat(hostname, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
s.sendall(content)
s.shutdown(socket.SHUT_WR)
while 1:
data = s.recv(1024)
if data == "":
break
print "Received:", repr(data)
print "Connection closed."
s.close()
netcat("myhostname.com", 2003, "test.bash.stats 14 1459116000")
我沒有收到錯誤,但是我沒有收到數據。
您應該嘗試像這樣串聯字符串
os.system("echo 'test.bash.stats 14 " + str(data['time_timestamp']) + " '| nc myhostname.com 2003")
或這個
os.system("echo 'test.bash.stats 14 %d '| nc myhostname.com 2003" % data['time_timestamp'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.