Skip to content

Commit 143e148

Browse files
authored
Merge pull request #5 from yanghongfei/master
[Update]阿里云不能获取到内网IP问题
2 parents 75e9eaa + 44c3156 commit 143e148

File tree

3 files changed

+32
-61
lines changed

3 files changed

+32
-61
lines changed

libs/aliyun/ecs.py

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,6 @@ def get_response(self):
5555
err = e
5656
return response_data, err
5757

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
72-
73-
# print(response_data)
74-
7558
def get_server_count(self):
7659
"""
7760
获取机器总数
@@ -97,7 +80,6 @@ def get_server_info(self):
9780
ret = response_data['Instances']['Instance']
9881
except (KeyError, TypeError):
9982
ins_log.read_log('error', '可能是因为SecretID/SecretKey配置错误,没法拿到配置,请检查下配置')
100-
# print('[Error]: 可能是因为SecretID/SecretKey配置错误,没法拿到配置,请检查下配置')
10183
return False
10284
server_list = []
10385
for i in ret:
@@ -114,7 +96,6 @@ def get_server_info(self):
11496
asset_data['memory'] = M2human(i.get('Memory'))
11597
# 内网IP
11698
try:
117-
11899
asset_data['private_ip'] = i['VpcAttributes']['PrivateIpAddress']['IpAddress'][0]
119100
except KeyError:
120101
asset_data['private_ip'] = 'Null'
@@ -126,11 +107,13 @@ def get_server_info(self):
126107
asset_data['public_ip'] = i['EipAddress']['IpAddress']
127108
except Exception:
128109
asset_data['public_ip'] = asset_data['private_ip']
129-
110+
if 'public_ip' not in asset_data or not asset_data['public_ip'].strip():
111+
asset_data['public_ip'] = asset_data['private_ip']
130112
asset_data['os_type'] = i.get('OSType')
131113
asset_data['os_name'] = i.get('OSName')
132114
server_list.append(asset_data)
133-
print(asset_data)
115+
# print(asset_data)
116+
ins_log.read_log('info', asset_data)
134117
return server_list
135118

136119
def sync_cmdb(self):
@@ -228,7 +211,7 @@ def index(self):
228211
self.page_size = count
229212
else:
230213
self.page_size = c + 100
231-
ins_log.read_log('info', '开始同步第{}--第{}台机器'.format(self.page_number, self.page_size))
214+
ins_log.read_log('info', '开始同步阿里云的第{}--第{}台机器'.format(self.page_number, self.page_size))
232215
self.sync_cmdb()
233216

234217

@@ -271,5 +254,10 @@ def main():
271254
obj.index()
272255

273256

257+
# def test():
258+
# obj = EcsAPi('', '', 'cn-shanghai', '')
259+
# obj.index()
260+
261+
274262
if __name__ == '__main__':
275263
fire.Fire(main)

libs/aws/ec2.py

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,24 +51,23 @@ def get_server_info(self):
5151
if ret:
5252
for r in ret:
5353
for i in r['Instances']:
54+
print(i)
5455
asset_data = dict()
5556
try:
5657
asset_data['hostname'] = i.get('Tags')[0].get('Value')
5758
except (KeyError, TypeError):
58-
asset_data['hostname'] = i.get('InstanceId', 'Null') #拿不到hostnameg给instance_id
59-
asset_data['region'] = i['Placement'].get('AvailabilityZone','Null')
59+
asset_data['hostname'] = i.get('InstanceId', 'Null') # 拿不到hostnameg给instance_id
60+
asset_data['region'] = i['Placement'].get('AvailabilityZone', 'Null')
6061
asset_data['instance_id'] = i.get('InstanceId', 'Null')
61-
asset_data['instance_type'] = i.get('InstanceType','Null')
62+
asset_data['instance_type'] = i.get('InstanceType', 'Null')
6263
asset_data['instance_state'] = i['State'].get('Name', '')
63-
asset_data['private_ip'] = i.get('PrivateIpAddress','Null')
64-
asset_data['public_ip'] = i.get('PublicIpAddress', asset_data['private_ip']) #没有公网就给私网IP
65-
print(asset_data)
64+
asset_data['private_ip'] = i.get('PrivateIpAddress', 'Null')
65+
asset_data['public_ip'] = i.get('PublicIpAddress', asset_data['private_ip']) # 没有公网就给私网IP
66+
# print(asset_data)
6667
server_list.append(asset_data)
6768

6869
return server_list
6970

70-
71-
7271
def sync_cmdb(self):
7372
"""
7473
写入CMDB
@@ -82,12 +81,11 @@ def sync_cmdb(self):
8281
return False
8382
with DBContext('w') as session:
8483
for server in server_list:
84+
print(server)
8585
ip = server.get('public_ip')
86-
87-
#ip = server.get('public_ip', 'Null')
8886
instance_id = server.get('instance_id', 'Null')
8987
hostname = server.get('hostname', instance_id)
90-
if hostname == '' or not hostname:
88+
if not hostname.strip():
9189
hostname = instance_id
9290
region = server.get('region', 'Null')
9391
instance_type = server.get('instance_type', 'Null')
@@ -103,7 +101,7 @@ def sync_cmdb(self):
103101

104102
exist_hostname = session.query(Server).filter(Server.hostname == hostname).first()
105103
# exist_ip = session.query(Server).filter(Server.ip == ip).first()
106-
if exist_hostname :
104+
if exist_hostname:
107105
session.query(Server).filter(Server.hostname == hostname).update(
108106
{Server.ip: ip, Server.public_ip: ip, Server.idc: 'AWS', Server.region: region})
109107

@@ -126,11 +124,6 @@ def sync_cmdb(self):
126124
session.add(new_serve_detail)
127125
session.commit()
128126

129-
130-
131-
132-
133-
134127
def test_auth(self):
135128
"""
136129
测试接口权限等信息是否异常
@@ -179,9 +172,8 @@ def main():
179172
obj.sync_cmdb()
180173

181174

182-
#
183-
# def main(access_id, access_key, region):
184-
# obj = Ec2Api(access_id, access_key, region)
175+
# def test():
176+
# obj = Ec2Api('','','us-east-1', '')
185177
# obj.sync_cmdb()
186178

187179

libs/qcloud/cvm.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
class CVMApi():
2222
def __init__(self, access_id, access_key, region, default_admin_user):
2323
self.offset = '0' # 偏移量,这里拼接的时候必须是字符串
24-
self.limit = '100' # 官方默认是20,我们直接拿最大,小于100可以获取所有,大于100需要设置偏移量再次请求:offset=100,offset={机器总数}
24+
self.limit = '100' # 官方默认是20,大于100需要设置偏移量再次请求:offset=100,offset={机器总数}
2525
self.access_id = access_id
2626
self.access_key = access_key
2727
self.region = region
@@ -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-
ins_log.read_log('error','{}'.format(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 = private_ip #不存在公网就给私网IP
112+
public_ip = private_ip # 不存在公网就给私网IP
113113
os_type = i.get('OsName')
114114
region = i['Placement'].get('Zone')
115115
asset_data['region'] = region
@@ -125,7 +125,7 @@ def get_server_info(self):
125125
asset_data['os_type'] = os_type
126126
# print(asset_data)
127127
server_list.append(asset_data)
128-
128+
ins_log.read_log('info', asset_data)
129129
return server_list
130130

131131
def sync_cmdb(self):
@@ -144,7 +144,7 @@ def sync_cmdb(self):
144144
ip = server.get('public_ip')
145145
instance_id = server.get('instance_id', 'Null')
146146
hostname = server.get('hostname', instance_id)
147-
if hostname == '' or not hostname:
147+
if not hostname.strip():
148148
hostname = instance_id
149149
region = server.get('region', 'Null')
150150
instance_type = server.get('instance_type', 'Null')
@@ -180,19 +180,6 @@ def sync_cmdb(self):
180180

181181
session.commit()
182182

183-
# def test(self):
184-
# count = int(450)
185-
# # count = self.get_server_count()
186-
# print('Tocal:{}'.format(count))
187-
# for c in range(0, count, 100):
188-
# self.offset = str(c)
189-
# if (c + 100) > count:
190-
# self.limit = str(count)
191-
# else:
192-
# self.limit = str(c + 100)
193-
#
194-
# print('开始同步第{}--第{}台机器'.format(self.offset, self.limit))
195-
# print(f"offset:{self.offset},limit:{self.limit}")
196183
def test_auth(self):
197184
"""
198185
测试下用户给的信息是否正确
@@ -218,7 +205,7 @@ def index(self):
218205
self.limit = str(count)
219206
else:
220207
self.limit = str(c + 100)
221-
ins_log.read_log('info', '开始同步第{}--{}台机器'.format(self.offset, self.limit))
208+
ins_log.read_log('info', '开始同步腾讯云的第{}--{}台机器'.format(self.offset, self.limit))
222209
self.sync_cmdb()
223210

224211

@@ -261,6 +248,10 @@ def main():
261248
obj.index()
262249

263250

251+
# def test():
252+
# obj = CVMApi('','','ap-shanghai','')
253+
# obj.index()
254+
264255

265256
if __name__ == '__main__':
266257
fire.Fire(main)

0 commit comments

Comments
 (0)