zy820
2017-03-12 03:30
采纳率: 16.7%
浏览 2.1k

python 批量ping同一网段(多线程)

 #coding=utf-8

import thread
import time
from subprocess import Popen,PIPE

'''
def fun1():
    print 'Hello World %s' %time.ctime()

def main():
    thread.start_new_thread(fun1,())
    thread.start_new_thread(fun1,())
    time.sleep(2)
'''

def ping_check(ip):
#    check=Popen(['/bin/bash','-c','ping -c 2'+ip],stdin=PIPE,stdout=PIPE)
    check=Popen(['ping -c 2'+ip],stdin=PIPE,stdout=PIPE,shell=True)
    data=check.stdout.read()
    if 'ttl' in data:
        print '%s is UP'%ip

def main():
    for i in range(1,255):
        ip='106.42.25'+str(i)
        thread.start_new_thread(ping_check,(ip,))
        time.sleep(0.1)

if __name__=='__main__':
    main()

哪里有问题,结果提示ping参数问题(Usage:ping...)

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2017-03-12 03:54
    已采纳

    2和ip之间缺少一个空格

    点赞 打赏 评论
  • zy820 2017-03-12 03:32

    #coding=utf-8

    import thread
    import time
    from subprocess import Popen,PIPE

    '''
    def fun1():
    print 'Hello World %s' %time.ctime()

    def main():
    thread.start_new_thread(fun1,())
    thread.start_new_thread(fun1,())
    time.sleep(2)
    '''

    def ping_check(ip):

    check=Popen(['/bin/bash','-c','ping -c 2'+ip],stdin=PIPE,stdout=PIPE)

    check=Popen(['ping -c 2'+ip],stdin=PIPE,stdout=PIPE,shell=True)
    data=check.stdout.read()
    if 'ttl' in data:
        print '%s is UP'%ip
    

    def main():
    for i in range(1,255):
    ip='106.42.25'+str(i)
    thread.start_new_thread(ping_check,(ip,))
    time.sleep(0.1)

    if name=='__main__':
    main()

    
    
    点赞 打赏 评论

相关推荐 更多相似问题