python3 호출 zabbix API 인터페이스를 자동으로 발견하여 호스트는 추가 한 호스트 이름을 수정

# _ * _ 코딩 : UTF-8 _ * _ 
수입 json으로
 가져 오기 요청을

# 서버 zabbix의 IP 주소 
zabbix_ip = "XXX " 
# 이름 zabbix의 
zabbix_user = "XXX " 
#의 의 암호 zabbix 
zabbix_pass = "XXX " 
# zabbix API 인터페이스 주소 
URL = " HTTP : // " + zabbix_ip + " : 80 / ZABBIX / api_jsonrpc.php " 
# 액세스 헤더 정보가 정의에 ZABBIX의 API 
post_header = { ' 내용 - 형식 ' : ' 파일 응용 프로그램 / JSON ' }



# 전화 zabbix API는 정체성을 필요로 토큰 인증 
DEF get_auth () :
    post_data = {
         " JSONRPC " : " 2.0 " ,
         " 메소드 " : " user.login " ,
         " PARAMS " {
             " 사용자 " : zabbix_user,
             " 패스워드 " : zabbix_pass
        },
        " ID " : " 1 "
    }

    RET = requests.post (URL 데이터 = json.dumps (post_data) = 헤더 post_header)
    zabbix_ret = json.loads (ret.text)
     인쇄 (zabbix_ret)
     의 경우  ' 결과 '  하지  zabbix_ret :
         인쇄 ( ' 로그인 오류 ' )
     다른 사람 :
        인증 = zabbix_ret.get ( ' 결과 ' )
         복귀 인증


# IP 호스트에 대해 언급 된 ID 위의 정보를 얻으려면 
DEF의 get_hostid을 () :
    hostid_get = {
         " JSONRPC " : " 2.0 " ,
         " 메소드 " : " host.get " ,
         " PARAMS " {
             " 출력 " : " 확장 " ,
             " 필터 " {
                 " 호스트 " :
                    host_ip
                ]
            }
        },
        " 인증 " : 토큰,
         " ID " : 2 ,
    }

    RES2 = requests.post (URL 데이터 = json.dumps (hostid_get) = 헤더 post_header)
    res3 = res2.json ()
     #에 인쇄 (res3) 
    res4 res3 = [ ' 결과 ' ]
    HOST_ID = res4 [0] ' 호스트 ID ' ]
     복귀 HOST_ID

# 호스트 이름 호스트 ID 수정하려면 
DEF의 ) (update_hostname를 :
    hostname_update = {
         " JSONRPC " : " 2.0 " ,
         " 메소드 " : " host.update " ,
         " PARAMS " {
             " 호스트 ID " : HOST_ID,
             " 이름 " : HOST_NAME
        },
        " 정식 " : 토큰,
         " ID를 " : 3
    }

    res10 = requests.post (URL 데이터 = json.dumps (hostname_update) = 헤더 post_header)
    res11 = res10.json ()
     #의 인쇄 (res11)

경우  __name__ == ' __main__ ' :
     '' '
    파일의 내용에 ips.txt :
    호스트 이름 1 IP1
    호스트 이름이 IP2
    호스트 이름 3 IP3
    '' 
    열기 (함께 " ips.txt " , " R " , 인코딩 = " UTF- " )로서 F :
         에 대한 라인 에서 F :
            라인 = line.split ( "  " )
            HOST_NAME 줄 = [0] + " . " 
            host_ip 줄 = [1 ] .strip ()
             #에 인쇄 (HOST_NAME) 
            #에 인쇄 (host_ip) 

            토큰 = get_auth ()
             #에 인쇄 (토큰) 
            HOST_ID = get_hostid ()
             #에 인쇄 (HOST_ID) 
            update_hostname ()
             인쇄 (HOST_NAME, host_ip, " 已添加完成" )

 

추천

출처www.cnblogs.com/qiufengluolei/p/11922366.html