가져 오기 요청 가져 오기 JSON을 은 try : 가져 오기 cookielib을 제외 : 가져 오기 http.cookiejar cookielib AS # 사용 urllib2가 HTTPS 요청 오류 제공 할 가져 오기 SSL 문맥 = ssl._create_unverified_context () 클래스 SaltAPI (객체) : "" " 클래스를 정의 인터페이스 소금 API를 초기화 GET 토큰 "" " DEF __init__ (자동) : self.url = " https://192.168.1.165:8001/ " self.username = " XXX " self.password = " XXX " self.headers = { " 사용자 에이전트 " : " 모질라 / 5.0 (윈도우 NT 10.0; WOW64) AppleWebKit / 537.36 (게코 같은 KHTML) 크롬 / 50.0.2661.102 사파리 / 537.36 " , " 내용 - 형 " : " 응용 프로그램 / JSON " # "콘텐츠 유형 ":"응용 프로그램 / X-YAML을 " } self.params = { ' 클라이언트 ' : ' 지역 ' , '재미 ' :'' , ' TGT ' : '' } self.login_url = self.url + " 로그인 " self.login_params = { ' 사용자 이름 ' : self.username, ' 비밀번호 ' : self.password, ' eauth ' : ' PAM ' } self.token = self.get_data (self.login_url, self.login_params) ' 토큰 ' ] self.headers [ ' X-인증 토큰 '= self.token DEF get_data (자체, URL PARAMS) SEND_DATA = json.dumps (PARAMS) 요청 = requests.post는 (URL로 데이터 = SEND_DATA, 헤더 = self.headers는 확인 = 거짓) 응답 = request.json () 결과 = 딕셔너리를 (대응) 리턴 결과 [ ' 복귀 ' ] [0] DEF remote_execution_module (자기, TGT, 재미 ARG) "" " 远程执行模块,有参数 : PARAM TGT : 총신 목록 : PARAM 재미 :模块 : PARAM ARG :参数 : 리턴 : DICT, { 'minion1': 'RET', 'minion2': 'RET'} "" " PARAMS = { ' 클라이언트 ' : ' 지역 ' , ' TGT ' : TGT, ' 재미 ' : 재미, ' 인수 ' : 인수} 반환 self.get_data (self.url, PARAMS) 데프 salt_command (자기, TGT, 방법, 인수 = 없음) : "" " 远程执行命令,相当于소금 'CLIENT1'cmd.run '무료 -m' " "" 만약 인수 : PARAMS = { ' 클라이언트 ' : '지역 ' , '재미 ' : 방법, ' TGT ' : TGT, ' 인수 ' : 인수} 다른 : PARAMS = { ' 클라이언트 ' : ' 지역 ' , ' 재미 ' : 방법, ' TGT ' : TGT} #의 인쇄 ('命令参数' , PARAMS) 결과 = self.get_data (self.url, PARAMS) 리턴 결과 # 获取信息 @task DEF push_host_by_salt_tasks () 염 =SaltAPI () minions_list = [ ' cpu_model ' , ' fqdn_ip4 ' , ' OS ' , ' 디스크 ' , ' GPU는 ' , ' ID ' , ' IPv4의 ' , ' 커널 ' , ' 로컬 호스트 ' , ' machine_id ' , '마스터 ', ' num_cpus ' , ' saltpath ' , ' SELinux가 ' , ' SERVER_ID ' , ' 가상 ' , ' machine_id ' , ' 경로 ' , ' swap_total ' , ' systemd ' , ' 이름 ' , ' kernelrelease ' , ] 바로salt.remote_execution_module = ( ' * ' , ' grains.item ' , minions_list) 복귀 Server_Asset_Record.Excu.insert (RET)
솔트 ' * ' grains.items의 #은 서버 매개 변수를 가져옵니다