我正在尝试对某些开关进行快速ping检查。 我开始一个while循环,遍历文件中的所有循环。 在while循环中,我调用了一个名为pings的函数,它唯一执行的操作是ping当前IP,并使用“>”输出重定向到名为ping.txt的文件,此后,另一个函数将其正确格式化,然后插入数据库。
只要我尝试过,它只会插入最后一个ping。
我已经调试了它,它每次都将ip带到pings函数中,但是仅将最后一次ping重定向到文件。
为简单起见,我仅采用了代码的受影响部分并将其保存到文件中(已经在新文件上尝试过并且无法使用)。
class Network(object):
def __init__(self):
pass
def pings(self,ip):
os.system("ping -c 1 {}>ping.txt".format(ip))
class FullPass(object):
def __init__(self):
pass
def pings(self, ip, archivo):
net = Network()
net.pings(ip)
if __name__ == "__main__":
full = FullPass()
f = open('switches.txt')
ip = f.readline()
while ip != "":
full.pings(ip, 'ping.txt')
ip = f.readline()
答案 0 :(得分:0)
您需要使用“ >>”而不是“>”。有两个符号做一个追加,而一个符号在写入目标之前将其截断。
答案 1 :(得分:0)
感谢您的帮助,最终的方式是这样的:
def command(self, ip, file, com):
with open(file, 'a') as outfile:
subprocess.call([com+ip[:-1]], stdout=outfile, shell=True)