以前我使用像 os.system("kubectl exec --it bash xxx") 這樣的 python 陳述句來執行到 kubernetes pod,它最終將我重定向到 pod 的 bash,我可以直接鍵入命令。有人推薦使用 subprocess.Popen 代替,因為它更安全,所以我嘗試了類似的東西
subprocess.Popen(["kubectl", "exec"] kube_args ["-it", pod_name, "--", "bash"],
stdout=subprocess.PIPE)
python腳本運行,但最終就像什么都沒發生(沒有將我重定向到pod的互動式bash。為了實作這一點,該命令的正確等效項應該是什么?謝謝。
uj5u.com熱心網友回復:
那是原語,你正確地呼叫它。你得到一個 subprocess proc,你可以進一步與之互動:
proc = Popen( ... )
或更好:
with Popen( ... ) as proc:
在原語之上有一些便利功能。
check_call()在這里最有意義。它會耐心地等待孩子死去,通常是在你在遙控器上鍵入“exit”時bash。它為您呼叫 Popen() 并管理詳細資訊,因此您不必這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/498077.html
標籤:重击 python-2.7 Kubernetes Kubernetes-pod
上一篇:使用PythonOs.system打開cmd并在新打開的cmd中運行命令
下一篇:正則運算式獲取資料后|
