-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.py
More file actions
120 lines (95 loc) · 3.85 KB
/
Copy pathscript.py
File metadata and controls
120 lines (95 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Author: EmilioStuart
# Date: 15-04-2025
# Description: Script para gerenciar IPs no MongoDB Atlas usando a API REST
# Requirements: requests, python-dotenv
# Usage: python script.py
# Note: Certifique-se de ter um arquivo .env com as variáveis de ambiente necessárias
# Importar as bibliotecas necessárias
import os
import requests
from requests.auth import HTTPDigestAuth
from pprint import pprint
from dotenv import load_dotenv
# Carregar as variáveis de ambiente do arquivo .env
load_dotenv()
# Função para mostrar todos os IPs
def mostrar_todos_IPs():
# Faz a requisição GET
response = requests.get(base_url, auth = auth, headers=headers)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 200:
print(pprint(response.json()))
else:
print(f"Erro na requisição GET: {response.status_code}")
# Função para mostrar IPs por chave e valor
# Exemplo: mostrar_IP("Comentário", "Meu IP")
def mostrar_IP(key, value):
# Faz a requisição GET
response = requests.get(base_url, auth = auth, headers=headers)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 200:
for item in response.json()['results']:
if item[key] == value:
print(f"{key} encontrado com o valor {value}: {item['ipAddress']}")
break
else:
print(f"Erro na requisição GET: {response.status_code}")
# Função para adicionar um IP
def adicionar_IP(comment, ipAddress):
# Define o payload da requisição (JSON)
# Exemplo: payload = [{"ipAddress": "Meu IP", "comment": "Meu Comentário"}]
payload = [
{
"ipAddress": ipAddress,
"comment": comment,
}
]
# Faz a requisição POST
response = requests.post(base_url, auth = auth, headers=headers, json=payload)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 201:
print(f"IP {ipAddress} adicionado com sucesso!")
else:
print(f"Erro na requisição POST: {response.status_code}")
print(f"Resposta: {response.text}")
# Função para remover IPs por endereço IP
def remover_por_IP(ipAddress):
# Faz a requisição DELETE
response = requests.delete(f"{base_url}/{ipAddress}", auth = auth, headers=headers)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 204:
print(f"IP {ipAddress} removido com sucesso!")
elif response.status_code == 404:
print(f"IP {ipAddress} não encontrado.")
else:
print(f"Erro na requisição DELETE: {response.status_code}")
# Função para remover IPs por comentário (descrição do IP)
def remover_por_comment(comment):
# Faz a requisição GET
response = requests.get(base_url, auth = auth, headers=headers)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 200:
for item in response.json()['results']:
if item["comment"] == comment:
ipAddress = item['ipAddress']
break
else:
print(f"Nao foi possível encontrar: {response.status_code}")
# Faz a requisição DELETE
response = requests.delete(f"{base_url}/{ipAddress}", auth = auth, headers=headers)
# Verifica se a requisição foi bem-sucedida
if response.status_code == 204:
print(f"{comment} removido com sucesso!")
elif response.status_code == 404:
print(f"{comment} não encontrado.")
else:
print(f"Erro na requisição DELETE: {response.status_code}")
base_url = "https://cloud.mongodb.com/api/atlas/v2/groups/" + os.getenv("PROJECT_ID") + "/accessList"
# Define o header do HTTP
headers = {
'Content-Type': 'application/json',
'Accept': 'application/vnd.atlas.2024-08-05+json'
}
public_key = os.getenv("PUBLIC_KEY")
private_key = os.getenv("PRIVATE_KEY")
auth = HTTPDigestAuth(public_key, private_key)