[英]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.