#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib2
import os
import sys
import logging
from time import ctime,sleep
import threading
# 设置访问超时时间
timeout = 2
# 设置url 以字典格式存放
url={
"hcs-cloud-zuul":"http://10.41.1.132:8086/info",
"hcs-cloud-admin":"http://10.41.1.132:8089",
}
scriptpwd = os.path.split(os.path.realpath(sys.argv[0]))[0]
scriptname = os.path.split(os.path.realpath(sys.argv[0]))[1]
# 定义日志路径和名称
log_pwd = "%s/log" %(scriptpwd)
log_pwd_name = "%s/log/%s.log" % (scriptpwd, scriptname)
def judge_file_dir(filename):
    """
    : param filename: 目录或文件名
    : return: 存在为 True  不存在未 False
    """
    fdresult = os.path.exists(str(filename))
    if fdresult == False:
        logging.error("目录或者文件不存在:%s" %(filename))
    return fdresult
# 日志文件判断
if judge_file_dir(log_pwd) == False:
    os.mkdir(log_pwd)
fdresultlog = judge_file_dir(log_pwd_name)
if fdresultlog == False:
    newf = open(log_pwd_name,'w')
    newf.write("自动创建日志文件'\n'")
    newf.close()
# 定义日志
logging.basicConfig(level=logging.INFO,
                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S',
                filename= log_pwd_name,
                filemode='a')
def determineuser():
    """
    判断当前用户是否为root,若是自动退出
    : param
    : return
    """
    uid = os.geteuid()
    if uid == 0:
        logging.error("The currently executing user to root, automatic withdrawal")
        sys.exit(1)
# 访问结果处理函数
def show_status(url,time,ip):
    req = urllib2.Request(url)
    try:
        response = urllib2.urlopen(req, timeout=time)
        status_code = response.getcode()
        if status_code != 200:
            logging.error("%s 访问异常, 返回状态码为: %s" %(url,status_code))
            threadLock.acquire()        
            iplist.append(ip)
            threadLock.release()
        response.close()
        return 0
    except Exception,e:
        logging.error("%s 访问异常, 异常原因: %s" %(url,e))
        threadLock.acquire()
        iplist.append(ip)
        threadLock.release()
        return 1
if __name__== "__main__":
    #print "开始时间:%s" %ctime()
    iplist = []
    threadLock = threading.Lock()
    threads = []
    for i in url.keys():
        thread = threading.Thread(target=show_status,args=(url[i],timeout,i))
        threads.append(thread)
    for t in threads:
        t.setDaemon(True)
        t.start()
    t.join()
    sleep(timeout + 0.8)
    if len(iplist) == 0:
        print "访问正常"
        #print 0
    else:
        #print 1
        print "访问异常ip有 %s" %(" ".join(iplist)) 
    #print "结束时间:%s" %ctime()