-
Notifications
You must be signed in to change notification settings - Fork 0
/
otomasyon.py
69 lines (42 loc) · 2.7 KB
/
otomasyon.py
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
### Test amacli API otomasyon script'i, Caner Aydin Youtube kanali icin hazirladim.
## Bu script, Sonicwall marka bir firewall'a API uzerinden mudahale eden bir scripttir.
import requests ## HTTP Request'leri yapabilecegimiz modulumuz.
import logging ## Loglama ozelligini kullanacagimiz modulumuz.
url = "https://192.168.2.1/api/sonicos/auth" ## URL degiskenleri HTTP Request'i gonderecegimiz URL'i isaret ediyor.
## logging.info ile isaretli kisimlarin sonucunu denyscriptim.log dosyasi icine yazacak.
logging.basicConfig(filename='denyscriptim.log', level=logging.INFO)
## Logging modulu "append" mantiginda calisiyor, her yeni log geldiginde dosyanin en altina ekler.
## İleride log dosya boyutu sismesin diye onlem almak isteyebilirsiniz. Ben su an almadim.
payload={}
# Header'lar icerisinde auth bilgilerini ve uretici spesifik header'lari ekliyoruz.
# Sonicwall spesifik header'lar asagidaki sekilde - Auth kisminda kullanici adi sifrenizi degistirin tabii.
headers = {
'Authorization': 'Basic QVBJdGVzdDpUZXN0MTIzISE=', ## ONEMLİ: (Base64 encoded bile olsa) Giris bilgilerinizi benim gibi script icine gommeyin derim.
'Accept-Encoding': '*/*', ## Gelen cevabin encoding'i ne olursa olsun kabul edecek.
'Accept': '*/*', ## Gelen cevap ne olursa olsun kabul edecek.
'Content-Type': "application/json" ## Gonderilen request body'sinin JSON formatinda oldugunu belirtir.
}
response = requests.request("POST", url, headers=headers, data=payload, verify = False)
## verify = False notu ile SSL sertifika dogrulamasini iptal ettik.
## Prod ortaminda verify = False kullanmaniz guvenlik acigi dogurabilir.
print(response.text) ## Gelen response'u ekrana basacak.
logging.info(response.text) ## Gelen response'u log dosyasina yazacak.
## Buradan sonraki kisim ayni script'in farkli amaclar icin modifiye edilmiş halleri.
##### Firewall'da access rule'u update eden script.
url = "https://192.168.2.1/api/sonicos/access-rules/ipv4/uuid/b2c4028a-6982-11a4-0700-18b1690dbe88"
payload2="{\n \"access_rule\": {\n \"ipv4\": {\n \"action\": \"deny\"\n }\n }\n}"
response2 = requests.request("PUT", url, headers=headers, data=payload2, verify = False)
print(response2.text)
logging.info(response2.text)
##### Firewall'daki degisiklikleri commit eden script.
url = "https://192.168.2.1/api/sonicos/config/pending"
payload3={}
response3 = requests.request("POST", url, headers=headers, data=payload3, verify = False)
print(response3.text)
logging.info(response3.text)
###### Firewall'dan logout olan script.
url = "https://192.168.2.1/api/sonicos/auth"
payload4={}
response4 = requests.request("DELETE", url, headers=headers, data=payload4, verify = False)
print(response4.text)
logging.info(response4.text)