我已经在这个网站上拖了很多年,总是找到我的答案,但今天我没有成功。我的任务是编写一个python脚本,可以从dhcp.conf文件中搜索,添加和删除主机。即。
host testnode{
option host-name "testnode";
option root-path "0.0.0.0:/foo/bar/foobar/testnode";
option subnet-mask 0.0.0.0;
option routers 0.0.0.0;
hardware ethernet 00:00:00:00:00:00;
fixed-address 0.0.0.0;
}
以上述格式。我可以使用re.search(str,line)搜索dhcp.conf文件来查找testnode,但是如何让我的代码打印出从testnode到结尾“}”的每一行?
这是我到目前为止的代码。
#!/usr/bin/env python
import re
infile = open('/etc/dhcp/dhcpd.conf', 'r')
str = raw_input('Enter hostname to search: ');
def search_host( str ):
for line in infile:
if re.search(str, line):
print line
while (line != '^}'):
line = next(infile)
print line
search_host(str);
re.search将在testnode停止,然后代码打印出dhcp.conf文件中的每一行,直到它结束。如何在主机条目结束时点击“}”时告诉while循环停止。
由于
答案 0 :(得分:1)
下面的代码会在您第一次匹配后打印所有内容,并在遇到“'”时突然显示。无需使用一段时间并干扰文件对象的迭代。
infile = '/etc/dhcp/dhcpd.conf'
str = raw_input('Enter hostname to search: ');
def search_host( str, infile):
start = False
with open(infile, 'r') as f:
for line in f:
if re.search(str, line):
start = True
if start:
print line
if re.search('}', line):
break
search_host(str, infile);