簡體   English   中英

使用pdsh通過linux解析內聯python命令

[英]Parsing inline python command via linux using pdsh

因此,我試圖從python腳本發出此命令,該腳本收集群集中預定數量節點上的cpu信息。 在這里,我使用2的扇出,並且僅在節點b127到b129上運行它以進行測試。

    pdsh -f2 -w b[127-129] 'python -c "import multiprocessing
    num_cpu = multiprocessing.cpu_count()
    stat_fd = open('/proc/stat')
    stat_fd.close()"'

我打印了命令,這就是終端上顯示的內容。 因此,告訴我引號和命令的格式正確。 我通過執行以下代碼來獲取此字符串:

    python_command = "'python -c "\
                 + "\"import multiprocessing\n"\
                 + "num_cpu = multiprocessing.cpu_count()\n"\
                 + "stat_fd = open(\'/proc/stat\')\n"\
                 + "stat_fd.close()\"'"

    command = "pdsh -f2 -w b[127-129] " + python_command
    print command

不幸的是,帶有open(\\'/ proc / stat \\')的行似乎是問題所在,因為這是導致解析器由於嵌套的單引號而失敗的唯一行。 我嘗試了多種引號和轉義組合,以使其無效。 為了省去發布的代碼,我在文件的打開和關閉之間省略了一些代碼。

我四處搜索並找到了此鏈接 ,但是發現它太簡單了,因為我可以復制這些命令。 是的,我知道我可以使用bash命令來完成我想做的事情,但我最終可能會這樣做,但這使我無法自拔。 我也有使用top和ps收集數據的腳本,因此不需要使用它們的解釋。 我非常感謝提前提供的幫助。

嘗試這個:

python_command = """pdsh -f2 -w b[127-129] 'python -c "import multiprocessing
num_cpu = multiprocessing.cpu_count()
stat_fd = open(\\"/proc/stat\\")
stat_fd.close()"'"""

在Python中,您可以對包含換行符和單/雙引號的字符串使用三引號( """..."""'''...''' )。

最后一級的引號(在open()行上)將需要轉義,以免與外部引號沖突。 您還需要轉義反斜杠,以便Python在解釋字符串\\\\"時不會立即使用它們。

暫無
暫無

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

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