塩-APIのgetサーバ情報、手先CMDコマンドバッチ実行

インポート要求
 のインポートJSONを
 試しインポート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 = {
             " のUser-Agent "" Mozillaの/ 5.0(Windows 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-AUTH-トークン'] = self.token

    DEF get_data(自己、URL、paramsは):
        SEND_DATA = json.dumps(paramsは)
        リクエスト = requests.post(URL、データ= SEND_DATA、ヘッダー= self.headers、ベリファイ= 偽)
        応答 = request.json()
        結果 = 辞書を(レスポンス)
         の戻り結果[ ' リターン' ] [0] 

    デフremote_execution_module(自己、TGT、楽しい、引数
        ):""」
            远程执行模块、有参数
        :PARAM TGT:子分リスト
        :のparam楽しい:模块
        :PARAM引数:参数
        :リターン:辞書、{ 'minion1': 'RET'、 'minion2': 'RET'}
        ""」
        のparams = { ' クライアント'' ローカル'' TGT ':TGT、' 楽しい':楽しい、' 引数' :引数}
         戻りself.get_data(self.url、paramsは)

    DEF 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 ' ' カーネル' ' localhostを' ' 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