我有这个脚本用于创建'acl'以将所有服务器的IP添加到squid config
file = open("ip.txt", "r")
ip_list = [line for line in file]
for acl, tcp in zip(ip_list[::2], ip_list[1::2]):
print "acl ip" + str(ip_list.index(acl) + 1) + " myip " + acl.strip()
print "tcp_outgoing_address " + tcp.strip() + " ip" + str(ip_list.index(acl) + 1)
我的问题是,当脚本从ip.txt读取IP时,我需要输入相同IP的2倍,因此我需要在最终粘贴中使用相同的IP 2次。
我的朋友告诉我创建双循环,但我不知道该怎么做。
ip.txt看起来像这样
1.1.1.1
2.2.2.2
3.3.3.3
最终粘贴应该看起来像这样
acl ip1 myip 1.1.1.1
tcp_outgoing_address 1.1.1.1 ip1
acl ip2 myip 2.2.2.2
tcp_outgoing_address 2.2.2.2 ip2
acl ip3 myip 3.3.3.3
tcp_outgoing_address 3.3.3.3 ip3
acl ip4 myip 4.4.4.4
tcp_outgoing_address 4.4.4.4 ip4
答案 0 :(得分:1)
有一种更简单的方法,没有zip()
和index()
的开销:
file = open("ip.txt", "r")
for index, line in enumerate(file):
print("acl ip" + str(index + 1) + " myip " + line.strip())
print("tcp_outgoing_address " + line.strip() + " ip" + str(index + 1))
甚至更好(我认为):
file = open("ip.txt", "r")
tpl = """acl ip{index} myip {ip}
tcp_outgoing_address {ip} ip {index}"""
for index, line in enumerate(file):
print(tpl.format(index=index, ip=line.strip()))
,输出与您请求的输出相同:
acl ip1 myip 1.1.1.1
tcp_outgoing_address 1.1.1.1 ip1
acl ip2 myip 2.2.2.2
tcp_outgoing_address 2.2.2.2 ip2
acl ip3 myip 3.3.3.3
tcp_outgoing_address 3.3.3.3 ip3
答案 1 :(得分:0)
我也用来自用户的输入并保存到TXT
file1 = open("iplist.txt","w")
ip = raw_input("Enter IP list:").split(" ")
tpl = """acl ip{index} myip {ip}
tcp_outgoing_address {ip} ip{index}
"""
for index, line in enumerate(ip):
file1.write(tpl.format(index=index, ip=line.strip()))