Skip to content

Commit f53df54

Browse files
author
杨红飞
committed
[Update]优化和解决公网IP获取不到取私网Ip
1 parent 07ba475 commit f53df54

File tree

3 files changed

+43
-29
lines changed

3 files changed

+43
-29
lines changed

libs/aliyun/ecs.py

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,31 @@ def get_response(self):
4444
获取返回值
4545
:return:
4646
"""
47+
48+
response_data = {}
49+
err = None
4750
request = self.set_request()
4851
try:
49-
5052
response = self.client.do_action_with_exception(request)
5153
response_data = json.loads(str(response, encoding="utf8"))
52-
return response_data
5354
except Exception as e:
54-
# print(e)
55-
return e
55+
err = e
56+
return response_data, err
57+
58+
# def get_response(self):
59+
# """
60+
# 获取返回值
61+
# :return:
62+
# """
63+
# request = self.set_request()
64+
# try:
65+
#
66+
# response = self.client.do_action_with_exception(request)
67+
# response_data = json.loads(str(response, encoding="utf8"))
68+
# return response_data
69+
# except Exception as e:
70+
# # print(e)
71+
# return e
5672

5773
# print(response_data)
5874

@@ -61,25 +77,24 @@ def get_server_count(self):
6177
获取机器总数
6278
:return:
6379
"""
64-
65-
try:
66-
response = self.get_response()
67-
count = response['TotalCount']
68-
return count
69-
except TypeError as e:
70-
print(e)
80+
response_data, err = self.get_response()
81+
if err != None:
82+
ins_log.read_log('error', err)
7183
return False
84+
count = response_data['TotalCount']
85+
return count
7286

7387
def get_server_info(self):
7488
"""
7589
获取服务器信息
7690
:return:
7791
"""
78-
response = self.get_response()
79-
if not response:
92+
response_data, err = self.get_response()
93+
if err != None:
94+
ins_log.read_log('error', err)
8095
return False
8196
try:
82-
ret = response['Instances']['Instance']
97+
ret = response_data['Instances']['Instance']
8398
except (KeyError, TypeError):
8499
ins_log.read_log('error', '可能是因为SecretID/SecretKey配置错误,没法拿到配置,请检查下配置')
85100
# print('[Error]: 可能是因为SecretID/SecretKey配置错误,没法拿到配置,请检查下配置')
@@ -90,7 +105,7 @@ def get_server_info(self):
90105
try:
91106
asset_data['hostname'] = i.get('InstanceName')
92107
except(KeyError, TypeError):
93-
asset_data['hostname'] = i.get('InstanceId') #取不到给instance_id
108+
asset_data['hostname'] = i.get('InstanceId') # 取不到给instance_id
94109
asset_data['region'] = i.get('ZoneId')
95110
asset_data['instance_id'] = i.get('InstanceId')
96111
asset_data['instance_type'] = i.get('InstanceType')
@@ -110,7 +125,7 @@ def get_server_info(self):
110125
except(KeyError, IndexError):
111126
asset_data['public_ip'] = i['EipAddress']['IpAddress']
112127
except Exception:
113-
asset_data['public_ip'] = 'Null'
128+
asset_data['public_ip'] = asset_data['private_ip']
114129

115130
asset_data['os_type'] = i.get('OSType')
116131
asset_data['os_name'] = i.get('OSName')
@@ -128,11 +143,9 @@ def sync_cmdb(self):
128143
if not server_list:
129144
ins_log.read_log('info', 'Not fount server info')
130145
return False
131-
with DBContext('r') as session:
146+
with DBContext('w') as session:
132147
for server in server_list:
133-
private_ip = server.get('private_ip')
134-
if server.get('public_ip') == 'Null':
135-
ip = private_ip
148+
ip = server.get('public_ip')
136149
instance_id = server.get('instance_id', 'Null')
137150
hostname = server.get('hostname', instance_id)
138151
if hostname == '' or not hostname:

libs/aws/ec2.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,15 @@ def sync_cmdb(self):
8080
ins_log.read_log('info', 'Not fount server info...')
8181
# print('Not Fount Server Info')
8282
return False
83-
with DBContext('r') as session:
83+
with DBContext('w') as session:
8484
for server in server_list:
85-
ip = server.get('public_ip', 'Null')
85+
private_ip = server.get('private_ip')
86+
if server.get('public_ip') == 'Null' or not server.get('public_ip'):
87+
ip = private_ip
88+
#ip = server.get('public_ip', 'Null')
8689
instance_id = server.get('instance_id', 'Null')
8790
hostname = server.get('hostname', instance_id)
88-
if hostname == '':
91+
if hostname == '' or not hostname:
8992
hostname = instance_id
9093
region = server.get('region', 'Null')
9194
instance_type = server.get('instance_type', 'Null')

libs/qcloud/cvm.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# @Time : 2019/5/10 16:37
44
# @Author : Fred Yangxiaofei
55
# @File : ecs.py
6-
# @Role : 说明脚本功能
6+
# @Role : 获取腾讯云主机信息
77

88

99
import time
@@ -60,7 +60,7 @@ def get_result_data(self):
6060
response = requests.get(result_url)
6161
result_data = json.loads(response.text)
6262
if result_data['Response'].get('Error'):
63-
print(result_data['Response'])
63+
ins_log.read_log('error','{}'.format(result_data['Response']))
6464
return False
6565
else:
6666
ret = result_data['Response']
@@ -109,7 +109,7 @@ def get_server_info(self):
109109
try:
110110
public_ip = i['PublicIpAddresses'][0]
111111
except (KeyError, TypeError):
112-
public_ip = 'Null'
112+
public_ip = private_ip #不存在公网就给私网IP
113113
os_type = i.get('OsName')
114114
region = i['Placement'].get('Zone')
115115
asset_data['region'] = region
@@ -141,9 +141,7 @@ def sync_cmdb(self):
141141

142142
with DBContext('w') as session:
143143
for server in server_list:
144-
private_ip = server.get('private_ip')
145-
if server.get('public_ip') == 'Null':
146-
ip = private_ip
144+
ip = server.get('public_ip')
147145
instance_id = server.get('instance_id', 'Null')
148146
hostname = server.get('hostname', instance_id)
149147
if hostname == '' or not hostname:

0 commit comments

Comments
 (0)