簡體   English   中英

在bash腳本中處理python輸出數據

[英]Handling python output data in a bash script

我有一個bash腳本,該腳本會熄滅,執行一些DNS查詢並返回我分配為變量$ external的IP地址值

我想從bash腳本中獲取此變量,並將其輸入到python中,並進行一些子網智能處理,但是我不確定在此之后如何處理數據並將其傳遞回bash。

我可以看到$ external變量正在從bash傳遞到python ok,但這是我不確定下一步要做什么的地方。 (感謝Farhan.K幫助我完成了已有的工作)

python3 <<END
import ipaddress
ipsub = {"10.10.10.0/24": "Firewall-Denver", "10.10.20.0/25": "FirewallNewYork"}
iplist = [$external]

ipfirewall = []


for i in ipsub:
    for j in iplist:
        if ipaddress.ip_address(j) in ipaddress.ip_network(i):
            ipfirewall.append([j,ipsub[i]])

 END

以下將其寫入文件:

with open('output.txt', 'w') as file:
file.writelines('\t'.join(i) + '\n' for i in ipfirewall)

但是,如何以相同格式將其傳遞回bash?

在此先感謝您的建議和協助。

您可以通過將預期結果寫入Python的標准輸出中並將結果捕獲到變量中來實現。

#!/bin/bash

external="'10.10.10.1','10.10.20.1'"

result="$(python3 <<END
import ipaddress
ipsub = {"10.10.10.0/24": "Firewall-Denver", "10.10.20.0/25": "FirewallNewYork"}
iplist = [$external]

ipfirewall = []


for i in ipsub:
    for j in iplist:
        if ipaddress.ip_address(j) in ipaddress.ip_network(i):
            ipfirewall.append([j,ipsub[i]])
print(ipfirewall)
END
)"

echo "$result"

在上面的腳本中,我將$external傳遞給Python Heredoc,運行您的過程,並在Python中打印結果。 $()構造將Python腳本的標准輸出捕獲到Bash變量中。

有關此問題的更通用版本,請參見如何在Bash中將Heredoc值分配給變量?

暫無
暫無

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

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