소금 API를 GET 서버 정보, 미니언 cmd를 명령 배치 실행

가져 오기 요청
 가져 오기 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의    #은 서버 매개 변수를 가져옵니다

추천

출처www.cnblogs.com/lutt/p/12037631.html