在bash脚本中处理python输出数据

2024-09-28 22:44:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个bash脚本,执行一些DNS查询并返回一个IP地址值,我将其作为变量$external赋值

我想从bash脚本中获取这个变量,并将其输入python并执行一些子网智能,但我不确定如何在这之后处理数据并将其传递回bash。在

我可以看到$external变量正在从bash传递到pythonok,但这正是我不确定下一步要做什么的地方。(感谢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

以下命令将其写入文件:

^{pr2}$

但如何以相同的格式将其传递回bash呢?在

感谢您的建议和帮助。在


Tags: inip脚本bashfor智能dnsexternal
1条回答
网友
1楼 · 发布于 2024-09-28 22:44:04

您可以通过将预期结果写入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传递到pythonherdoc中,运行您的进程,并用Python打印结果。$()构造将Python脚本的标准输出捕获到Bash变量中。在

有关此问题的更一般版本,请参见How to assign a heredoc value to a variable in Bash?

相关问题 更多 >