簡體   English   中英

使用結構同時在多個主機上運行腳本

[英]Running scripts on multiple hosts concurrently with fabric

我正在嘗試創建一個程序來創建多個液滴,向每個液滴發送一個腳本,並啟動所有腳本的執行,而無需等待 output。 我試圖在后台運行它,使用 nohup 以便在使用以下代碼從終端斷開連接時它不會被殺死:

for i in len(script_names):
    c = Connection(host = host[i], user = user[i], connect_kwargs = {"password" : password, "key_filename" : key_filename})
    c.run("nohup python3 /root/" + script_names[i] + " &")

我嘗試了相同想法的其他變體,包括設置“pty=False”,使用 "> /dev/null < /dev/null &" 將 output 重定向到 dev/null ,但似乎沒有任何效果。

是否可以發出多個命令以同時在不同主機上運行腳本而無需等待帶有結構的 output? 或者我應該使用另一個 package 嗎?

Fabric 2.x 的組還沒有完全充實,所以它們不太適合這個用例。 在結構 1.x 中,我將通過使用 script_names 的字典來完成此操作,其中鍵是host列表中的主機字符串,值是當前 script_names 中的名稱。 然后我會讓每個任務像往常一樣並行執行其運行命令,在任務中使用fabric.api.env.host_string查找值。 Fabric 2.x 的執行層還不支持這個用例 afaik。 這是我嘗試破解它,但作者正確地指出,這個功能應該在執行程序中處理,我當時無法提出解決方案: https://github.com/fabric/fabric /拉/1595

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM