條件1:必須搭建好cobbler服務,並且可以通過web訪問:http://cobbler_ip/cobbler_web 測試可以打開。然后再用以下命令測試。
1 #!/opt/python3/bin/python3 2 #Author: zhaoyong 3 4 import xmlrpc.client,time 5 6 if __name__ == '__main__': 7 time_str = time.time() 8 server = 'http://cobbler_ip/cobbler_api' 9 user = 'cobbler' 10 passwd = '賬號密碼' 11 12 try: 13 remote_server = xmlrpc.client.Server(server) 14 tokin = remote_server.login(user, passwd) 15 except Exception as e: 16 exit('URL:%s no access' % server) 17 18 # print(remote_server.ping()) # cobbler服務器狀態監測 19 # print(remote_server.get_user_from_token(tokin)) # 返回cobbler系統登錄賬號 20 # print(remote_server.get_item('distro','Centos6.9-x86_64')) # 獲取指定發布版本的信息 21 # print('-------------------------') 22 # print(remote_server.get_distro('Centos6.9-x86_64')) #返回distro指定名稱的詳細信息 23 # print('-------------------------') 24 # print(remote_server.get_profile('CT6.8_PHY_db_high')) # 返回profile 指定名稱的詳細信息 25 # print('-------------------------') 26 # print(remote_server.get_distros()) # 返回所有distro 的已有內容 27 # print('-------------------------') 28 # print(remote_server.get_profiles()) # 返回所有profiles的已有內容 29 # print('-------------------------') 30 # print(remote_server.find_system()) # 以列表返回所有的 system 名稱 31 # print('-------------------------') 32 # print(remote_server.find_distro()) # 以列表返回所有的distro名稱 33 # print('-------------------------') 34 # print(remote_server.find_profile()) # 以列表返回所有profile的名稱 35 # print('-------------------------') 36 # print(remote_server.has_item('distro','Centos6.9-x86_64')) # 檢測指定distro中指定的名稱是否存在 37 # print('-------------------------') 38 # print(remote_server.get_distro_handle('Centos6.9-x86_64',tokin)) # 沒啥用 39 # print(remote_server.remove_profile('test111',tokin)) # 刪除指定的profile 40 # print('-------------------------') 41 # print(remote_server.remove_system('hostname121',tokin)) # 刪除指定的system 42 # print('-------------------------') 43 # prof_id = remote_server.new_profile(tokin) # 創建一個新的profile 並保存 44 # print('profile new id:%s' % prof_id) 45 # print('-------------------------') 46 # remote_server.modify_profile(prof_id,'name','vm_test1',tokin) # 修改prof_id指定的profile 名稱 47 # remote_server.modify_profile(prof_id,'distro','centos6.8-x86_64',tokin) # 也是修改prof_id的信息 48 # remote_server.modify_profile(prof_id,'kickstart','/var/lib/cobbler/kickstarts/txt111',tokin) 49 # remote_server.save_profile(prof_id,tokin) # 保存 50 # remote_server.sync(tokin) # 同步cobbler修改后的信息,這個做任何操作后,都要必須有 51 # print('-------------------------') 52 # print(remote_server.get_kickstart_templates()) # 獲取所有KS模板文件路徑 53 print('-------------------------') 54 print(remote_server.get_snippets()) # 獲取所有snippets文件路徑 55 # print('-------------------------') 56 # print(remote_server.is_kickstart_in_use('/var/lib/cobbler/kickstarts/CT6.8_PHY_db_middle.ks')) # 判斷ks文件是否在使用 57 # print('-------------------------') 58 # print(remote_server.generate_kickstart('CT6.8_PHY_web_high')) # 打印profile對應的ks文件內存 59 # print('-------------------------') 60 # print(remote_server.generate_kickstart('vm_test1','t1'))# 打印profile對應的ks文件內存 61 # print('-------------------------') 62 # print(remote_server.generate_gpxe('vm_test1')) # 啟動方面的,沒用 63 # print('-------------------------') 64 # print(remote_server.generate_bootcfg('vm_test1')) 65 # print('-------------------------') 66 # print(remote_server.get_blended_data('vm_test1')) # 獲取profile 的詳細信息 67 # print('-------------------------') 68 # print(remote_server.get_settings()) # 沒啥用 69 # print('-------------------------') 70 # print(remote_server.get_signatures()) # 不知道輸出的是啥 71 # print('-------------------------') 72 # print(remote_server.get_valid_breeds()) # 獲取的是各個操作系統的類型, 73 #輸出: ['debian', 'freebsd', 'generic', 'nexenta', 'redhat', 'suse', 'ubuntu', 'unix', 'vmware', 'windows', 'xen'] 74 # print('-------------------------') 75 # print(remote_server.get_valid_os_versions()) # 沒啥用 76 # print('-------------------------') 77 # print(remote_server.get_repo_config_for_profile('vm_test1')) 78 # print('-------------------------') 79 # print(remote_server.get_repo_config_for_system('t1')) 80 # print('-------------------------') 81 # print(remote_server.version()) # 返回cobbler版本,沒啥用 82 # print('-------------------------') 83 # print(remote_server.extended_version()) # 返回cobbler詳細版本信息,沒啥用 84 # print('-------------------------') 85 # print(remote_server.logout(tokin)) # 退出當前cobbler連接 86 # print('-------------------------') 87 # print(remote_server.token_check(tokin)) # 檢測當前tokin狀態,是否失效 88 # print('-------------------------') 89 # print(remote_server.sync_dhcp(tokin) # 同步DHCP 90 # print('-------------------------') 91 # print(remote_server.sync(tokin)) # 進行同步更新 92 # print('-------------------------') 93 # print(remote_server.read_or_write_kickstart_template('cobbler上ks文件路徑','false為可寫','將要替換ks文件的內容',tokin)) # 注意 替換KS字符串如果為-1,將刪除此Ks文件,條件是此ks文件已不在引用 94 # print(remote_server.read_or_write_kickstart_template('/var/lib/cobbler/kickstarts/hostname106.ks',False,-1,tokin)) 95 # print('-------------------------') 96 # print(remote_server.get_config_data('zhaoyong')) # 沒啥用 97 # print('-------------------------') 98 # x = remote_server.test_xmlrpc_ro() 99 # print(x.distro) 100 # print(remote_server.read_or_write_snippet('/var/lib/cobbler/snippets/test1',False,'zhaoyong_test',tokin)) # 在snippgets下建立腳本文件 101 # distro_obj = cbl_distro.cobbler_distro(remote_server,tokin) 102 # # distro 查詢 103 # out = distro_obj.find_distro_name() 104 # print(out) 105 # out = distro_obj.find_distro_info('Centos6.9-x86_64') 106 # print(out) 107 # 108 # profile_obj = cbl_profile.cobbler_profiles(remote_server,tokin) 109 # profile 查找 110 # pro_name_list = profile_obj.find_profile_name() 111 # print(out) 112 # out = profile_obj.find_profile_info('CT6.8_VM_web_custom') 113 # print(out) 114 # 115 # system_obj = cbl_system.cobbler_system(remote_server,tokin) 116 # # system 查詢 117 # out_all = system_obj.find_system_name() 118 # print(out_all) 119 # out = system_obj.system_name_info('tttttt') 120 # print(out) 121 # del system