【问题标题】:Tryin to do ping to several pc with python. .尝试用 python 对几台电脑进行 ping 操作。 .
【发布时间】:2019-03-05 14:16:08
【问题描述】:

我正在尝试读取一个包含 300 台计算机 ips 的文件,然后写入一个新文件(如果存在或不存在)。

import os
import datetime
import platform
import subprocess

date = datetime.datetime.now()
day = date.day
hour = date.hour

os.chdir ('Path')
openips = open ("ips.txt","r")
ipfile = openips.readlines()
print (ipfile)

for ips in ipfile():
    ips = ips.strip()
    print (ips)
    args = ["ping", "-n", "4", "-l", "1", "-w", "1000", ips]
    pping = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
    for line in pping.stdout:
        print (line)
    os.chdir ('Path')
    presult = open ("pingresults_{}_{}.txt".format(day,hour), 'a')
    presult.write ('{}_{}\n'.format(ips, line))
    presult.close ()

不知道为什么,每次我测试我的代码。 . .结果是:

TypeError: 'list' 对象不可调用

我已经尝试了所有方法,即使我将变量更改为 string 也是如此。 . .说同样的,只是改变字符串的列表

【问题讨论】:

  • 您需要在问题中提供完整的回溯(不仅仅是最终错误)。
  • 也使用标准的 tcp 或 udp 连接到 python 而不是“ping”,这是一个非常慢的程序测试端口 0(可以关闭)。还要为每个连接测试生成一个线程,因为您的程序可以没有很多“等待”时间。
  • @thebjorn 很抱歉,下次我会写所有的回溯
  • @ege 谢谢你的建议,我会考虑的。 . .真的,我只是想知道装备是否还活着(比如真假),不关心其他任何事情。但再次感谢,我会考虑使用 tcp 或 udp。

标签: python python-3.x subprocess ping


【解决方案1】:

改变:

for ips in ipfile:
   ...

没有括号

【讨论】:

  • ¡谢谢! :) 还有一个问题。 . .这个和普通的有什么区别?为什么在这种情况下我不应该使用它?再次,非常感谢。 . .我是新来的。
  • xxx() 正在调用该方法。 xxx 正在使用变量的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
相关资源
最近更新 更多