- 论坛徽章:
- 6
|
练习的好机会,能符合你的要求,不过执行起来太慢了要一个个IP去ping,有时间改个多线程会好些- #!/usr/bin/python
- # -*- coding:utf-8 -*-
- import os
- import subprocess
- import re
- import socket
- import paramiko
- user = 'root'
- passwd = '123456'
- def ip(file,field):
- ip_field = field
- ip_file = open(file,'w')
- for i in range(1,256):
- ip = '%s%s\n' % (ip_field,i)
- ip_file.write(ip)
- ip_file.close()
- def test_ip(file):
- file = open(file,'r')
- ip_list = []
- port = 22
- f = open('login_ip.txt','w')
- for line in file.readlines():
- line=line.strip('\n')
- ip_list.append(line)
- for ip in ip_list:
- p = subprocess.Popen(["ping -c 1 "+ ip],
- stdin = subprocess.PIPE,
- stdout = subprocess.PIPE,
- stderr = subprocess.PIPE,
- shell = True)
- out = p.stdout.read()
- regex = re.compile("time=\d*", re.IGNORECASE | re.MULTILINE)
- if len(regex.findall(out)) > 0:
- print ip + ': Host Up!'
- s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- try:
- s.connect((ip,int(port)))
- s.shutdown(2)
- print '%d is open' % port
- try:
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(ip,22,user, passwd)
- #stdin, stdout, stderr = ssh.exec_command("你的命令")
- #print stdout.readlines()
- ssh.close()
- print 'Login successful'
- # f = open('login_ip.txt','w')
- ip = '%s\n' % ip
- f.write(ip)
- # return True
- except:
- print 'The login problem, please check your username and password'
- except:
- print '%d is down' % port
- # return False
- else:
- print ip + ': Host Down!'
- file.close()
- f.close()
- ip('test','192.168.209.')
- test_ip('test')
复制代码 |
|