рдо рд╡рд┐рд╢реНрд╡рд╕реНрдд рдЫреБ рдХрд┐ рд╕рдмреИрдЬрдирд╛рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрдХреЛ рдЫ
рдПрдХ "рдЪрдорддреНрдХрд╛рд░" рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓реИ рднрдпреЛред рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд░рд┐рд▓реАрдЬ рд╕рдВрдЧ Gaia R80 рдЕрд╡рд╕рд░ рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ API рдкреНрд░рдпреЛрдЧ, рдЬрд╕рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ, рдкреНрд░рд╢рд╛рд╕рди, рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдЗрддреНрдпрд╛рджрд┐рдХрд╛ рд▓рд╛рдЧрд┐ рд╡реНрдпрд╛рдкрдХ рдЕрд╡рд╕рд░рд╣рд░реВ рдЦреЛрд▓реНрдЫред рдЕрдм рддрдкрд╛рдИрдВ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
- рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рдкрд╣реБрдБрдЪ рд╕реВрдЪреАрд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН рд╡рд╛ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рдмреНрд▓реЗрдб рд╕рдХреНрд╖рдо / рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рдиреАрддрд┐рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
- рд░ рдзреЗрд░реИ рдмрдвреАред
рдЗрдорд╛рдирджрд╛рд░реАрдкреВрд░реНрд╡рдХ рднрдиреНрдиреБрдкрд░реНрджрд╛, рдореИрд▓реЗ рдмреБрдЭрд┐рди рдХрд┐ рдпреЛ рд╕рдорд╛рдЪрд╛рд░ рд╣рдмреНрд░рджреНрд╡рд╛рд░рд╛ рдХрд╕рд░реА рдкрд╛рд░рд┐рдд рднрдпреЛред рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рдПрдкреАрдЖрдИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд░ рдзреЗрд░реИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рдЫреЛрдЯрдХрд░реАрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреМрдВред рд▓рд┐рдкрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ.
рдо рддреБрд░реБрдиреНрддреИ рд░рд┐рдЬрд░реНрднреЗрд╕рди рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ API рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддреАред рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░ рдмрд┐рдирд╛ рдЧреЗрдЯрд╡реЗрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдЕрдЭреИ рдЕрд╕рдореНрднрд╡ рдЫред
рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдпреЛ API рдХрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ?
- рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВ рдЬреЛ рдирд┐рдпрдорд┐рдд рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд░рд▓ рд╡рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫрдиреН;
- рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдирд╣рд░реВ (рднрд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ, рдЯрд┐рдХрдЯ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ, рдЖрджрд┐) рд╕рдБрдЧ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рдПрдХреАрдХреГрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреЗ рдХрдореНрдкрдиреАрд╣рд░реВ;
- рдкреНрд░рдгрд╛рд▓реА рдЗрдиреНрдЯрд┐рдЧреНрд░реЗрдЯрд░рд╣рд░реВ рдЬреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдорд╛рдирдХреАрдХрд░рдг рдЧрд░реНрди рд╡рд╛ рдердк рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ-рд╕рдореНрдмрдиреНрдзрд┐рдд рдЙрддреНрдкрд╛рджрдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫрдиреНред
рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛
рддреНрдпрд╕реЛрднрдП, рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯрдХреЛ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛рдХреЛ рдХрд▓реНрдкрдирд╛ рдЧрд░реМрдВ:
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рд╣рд╛рдореАрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдЧреЗрдЯрд╡реЗ рдЫ (SG), рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░ (рдПрд╕рдПрдордПрд╕) рд░ рдПрдбрдорд┐рди рдХрдиреНрд╕реЛрд▓ (SmartConsole)ред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╕рд╛рдорд╛рдиреНрдп рдЧреЗрдЯрд╡реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
рддреАред рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рд╢рд╛рд╕рдХрдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ SmartConsole, рдЬрд╕рдХреЛ рд╕рд╛рде рд╣рд╛рдореА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдЫреМрдВ (рдПрд╕рдПрдордПрд╕)ред рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдПрд╕рдПрдордПрд╕рдорд╛ рдмрдирд╛рдЗрдиреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ (рдиреАрддрд┐ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН) рдЧреЗрдЯрд╡реЗ (SG).
рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API, рд╣рд╛рдореА рдореВрд▓ рд░реВрдкрдорд╛ рдкрд╣рд┐рд▓реЛ рдмрд┐рдиреНрджреБ рдЫреЛрдбреНрди рд╕рдХреНрдЫреМрдВ (рд╕реНрдорд╛рд░реНрдЯ рдХрдиреНрд╕реЛрд▓ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН) рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН API рдЖрджреЗрд╢рд╣рд░реВ рд╕реАрдзрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░ (SMS) рдорд╛ред
API рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВ
API рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдЪрд╛рд░ рдореБрдЦреНрдп рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН:
1) mgmt_cli рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
рдЙрджрд╛рд╣рд░рдг - # mgmt_cli рд╣реЛрд╕реНрдЯ рдирд╛рдо host1 ip-рдареЗрдЧрд╛рдирд╛ 192.168.2.100 рдердкреНрдиреБрд╣реЛрд╕реН
рдпреЛ рдЖрджреЗрд╢ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░ (SMS) рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдмрд╛рдЯ рдЪрд▓рд╛рдЗрдПрдХреЛ рдЫред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрдорд╛рдгреНрдбрдХреЛ рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рд╕реНрдкрд╖реНрдЯ рдЫ - host1 рдареЗрдЧрд╛рдирд╛ 192.168.2.100 рд╕рдБрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред
2) clish рдорд╛рд░реНрдлрдд API рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдореЛрдбрдорд╛)
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБ рд╣реЛ (mgmt рд▓рдЧрдЗрди) рдЦрд╛рддрд╛ рдЕрдиреНрддрд░реНрдЧрдд рдЬреБрди SmartConsole (рд╡рд╛ рд░реВрдЯ рдЦрд╛рддрд╛) рдорд╛рд░реНрдлрдд рдЬрдбрд╛рди рдЧрд░реНрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ API рдЖрджреЗрд╢рд╣рд░реВ (рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдЖрджреЗрд╢ рдЕрдШрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди mgmt_cli)ред рддрдкрд╛рдИрдВ рдкреВрд░реНрдг рдмрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ BASH рд▓рд┐рдкрд┐рд╣рд░реВред рд╣реЛрд╕реНрдЯрд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд▓рд┐рдкрд┐рдХреЛ рдЙрджрд╛рд╣рд░рдг:
рдмреНрдпрд╛рд╕ рд▓рд┐рдкрд┐
#!/bin/bash
main() {
clear
#LOGIN (don't ask for username and password, user is already logged in to Management server as 'root' user)
mgmt_cli login --root true > id_add_host.txt
on_error_print_and_exit "Error: Failed to login, check that the server is up and running (run 'api status')"
#READ HOST NAME
printf "Enter host name:n"
read -e host_name
on_empty_input_print_and_exit "$host_name" "Error: The host's name cannot be empty."
#READ IP ADDRESS
printf "nEnter host IP address:n"
read -e ip
on_empty_input_print_and_exit "$ip" "Error: The host's IP address cannot be empty."
#CREATE HOST
printf "Creating new host: $host_name with IP address: $ipn"
new_host_response=$(mgmt_cli add host name $host_name ip-address $ip -s id_add_host.txt 2> /dev/null)
on_error_print_and_exit "Error: Failed to create host object. n$new_host_response"
#PUBLISH THE CHANGES
printf "nPublishing the changesn"
mgmt_cli publish --root true -s id_add_host.txt &> /dev/null
on_error_print_and_exit "Error: Failed to publish the changes."
#LOGOUT
logout
printf "Done.n"
}
logout(){
mgmt_cli logout --root true -s id_add_host.txt &> /dev/null
}
on_error_print_and_exit(){
if [ $? -ne 0 ]; then
handle_error "$1"
fi
}
handle_error(){
printf "n$1n" #print error message
mgmt_cli discard --root true -s id_add_host.txt &> /dev/null
logout
exit 1
}
on_empty_input_print_and_exit(){
if [ -z "$1" ]; then
printf "$2n" #print error message
logout
exit 0
fi
}
# Script starts here. Call function "main".
main
рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЗрдЪреНрдЫреБрдХ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рд╕рдореНрдмрдиреНрдзрд┐рдд рднрд┐рдбрд┐рдпреЛ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
3) CLI рд╡рд┐рдиреНрдбреЛ рдЦреЛрд▓реЗрд░ SmartConsole рдорд╛рд░реНрдлрдд
рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рд╡рд┐рдиреНрдбреЛ рдЦреЛрд▓реНрдиреБ рд╣реЛ CLI рд╕реАрдзрд╛ рджреЗрдЦрд┐ SmartConsole, рддрд▓ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рд░реВрдкрдорд╛ред
рдпрд╕ рд╡рд┐рдиреНрдбреЛрдорд╛, рддрдкрд╛рдЗрдБ рддреБрд░реБрдиреНрддреИ API рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
4) рд╡реЗрдм рд╕реЗрд╡рд╛рд╣рд░реВред HTTPS рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (REST API)
рд╣рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЖрд╢рд╛рдЬрдирдХ рд╡рд┐рдзрд┐рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛ, рдХрд┐рдирднрдиреЗ рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдореНрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ "рдирд┐рд░реНрдорд╛рдг" рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (рдЯрд╛рдЯреЛрд▓реЛрдЬреАрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдл рдЧрд░реНрдиреБрд╣реЛрд╕реН)ред рддрд▓ рд╣рд╛рдореА рдпрд╕ рд╡рд┐рдзрд┐рд▓рд╛рдИ рдереЛрд░реИ рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реНрди:
- API + cli рд╕рд┐рд╕реНрдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд;
- API + рд╢реЗрд▓ рд▓рд┐рдкрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рд░ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐;
- REST API рд╕реНрд╡рдЪрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐ред
API рд╕рдХреНрд╖рдо рдЧрд░реНрджреИ
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, RAM рдХреЛ 4GB рднрдиреНрджрд╛ рдмрдвреА рд░ 8GB RAM рднрдиреНрджрд╛ рдмрдвреАрдХреЛ рд╕рд╛рде рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рднрдПрдХрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ API рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫред рддрдкрд╛рдИрдВ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдПрдкреАрдЖрдИ рд╕реНрдерд┐рддрд┐
рдпрджрд┐ рдпреЛ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рдХрд┐ рдПрдкреАрдЖрдИ рдЕрд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫ, рддрдм рдпрд╕рд▓рд╛рдИ SmartConsole рдорд╛рд░реНрдлрдд рд╕рдХреНрд╖рдо рдЧрд░реНрди рдПрдХрджрдо рд╕рдЬрд┐рд▓реЛ рдЫ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ > рдмреНрд▓реЗрдб > рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API > рдЙрдиреНрдирдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ
рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд (рдкреНрд░рдХрд╛рд╢рд┐рдд) рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рдПрдкреАрдЖрдИ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН.
рд╡реЗрдм рдЕрдиреБрд░реЛрдзрд╣рд░реВ + рдкрд╛рдЗрдерди
API рдЖрджреЗрд╢рд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди, рддрдкрд╛рдЗрдБ рд╡реЗрдм рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЕрдЬрдЧрд░ рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдЕрдиреБрд░реЛрдзрд╣рд░реВ, JSONред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╡реЗрдм рдЕрдиреБрд░реЛрдзрдХреЛ рд╕рдВрд░рдЪрдирд╛рдорд╛ рддреАрди рднрд╛рдЧрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН:
рез)рдареЗрдЧрд╛рдирд╛
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP рд╣реЗрдбрд░рд╣рд░реВ
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) рдкреЗрд▓реЛрдб рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╡рд┐рднрд┐рдиреНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рднрдПрдХреЛ JSON рдврд╛рдБрдЪрд╛рдорд╛ рдкрд╛рда
рд╡рд┐рднрд┐рдиреНрди рдЖрджреЗрд╢рд╣рд░реВ рдХрд▓ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрджрд╛рд╣рд░рдг:
def api_call(ip_addr, port, command, json_payload, sid):
url = 'https://' + ip_addr + ':' + str(port) + '/web_api/' + command
if sid == тАЬтАЭ:
request_headers = {'Content-Type' : 'application/json'}
else:
request_headers = {'Content-Type' : 'application/json', 'X-chkp-sid' : sid}
r = requests.post(url,data=json.dumps(json_payload), headers=request_headers,verify=False)
return r.json()
'xxx.xxx.xxx.xxx' -> Ip address GAIA
рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд╣рд░реВ рдЫрдиреН рдЬреБрди рддрдкрд╛рдИрд▓реЗ рдкреНрд░рд╛рдпрдГ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрджрд╛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБ рд╣реБрдиреНрдЫред
1) рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд░ рд▓рдЧрдЖрдЙрдЯ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдг:
рд▓рд┐рдкрд┐
payload = {тАШuserтАЩ: тАШyour_userтАЩ, тАШpasswordтАЩ : тАШyour_passwordтАЩ}
response = api_call('xxx.xxx.xxx.xxx', 443, 'login',payload, '')
return response["sid"]
response = api_call('xxx.xxx.xxx.xxx', 443,'logout', {} ,sid)
return response["message"]
2) рдмреНрд▓реЗрдбрд╣рд░реВ рдЦреЛрд▓реНрджреИ рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ:
рд▓рд┐рдкрд┐
new_gateway_data = {'name':'CPGleb','anti-bot':True,'anti-virus' : True,'application-control':True,'ips':True,'url-filtering':True,'interfaces':
[{'name':"eth0",'topology':'external','ipv4-address': 'xxx.xxx.xxx.xxx',"ipv4-network-mask": "255.255.255.0"},
{'name':"eth1",'topology':'internal','ipv4-address': 'xxx.xxx.xxx.xxx',"ipv4-network-mask": "255.255.255.0"}]}
new_gateway_result = api_call('xxx.xxx.xxx.xxx', 443,'set-simple-gateway', new_gateway_data ,sid)
print(json.dumps(new_gateway_result))
3) рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдорд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ:
рд▓рд┐рдкрд┐
new_access_data={'name':'Cleanup rule','layer':'Network','action':'Accept'}
new_access_result = api_call('xxx.xxx.xxx.xxx', 443,'set-access-rule', new_access_data ,sid)
print(json.dumps(new_access_result))
4) рдЖрд╡реЗрджрди рддрд╣ рдердкреНрджреИ:
рд▓рд┐рдкрд┐
add_access_layer_application={ 'name' : 'application123',"applications-and-url-filtering" : True,"firewall" : False}
add_access_layer_application_result = api_call('xxx.xxx.xxx.xxx', 443,'add-access-layer', add_access_layer_application ,sid)
print(json.dumps(add_access_layer_application_result))
set_package_layer={"name" : "Standard","access":True,"access-layers" : {"add" : [ { "name" : "application123","position" :2}]} ,"installation-targets" : "CPGleb"}
set_package_layer_result = api_call('xxx.xxx.xxx.xxx', 443,'set-package', set_package_layer ,sid)
print(json.dumps(set_package_layer_result))
5) рдиреАрддрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЖрджреЗрд╢рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдХрд╛рд░реНрдп-рдЖрдИрдбреА):
рд▓рд┐рдкрд┐
publish_result = api_call('xxx.xxx.xxx.xxx', 443,"publish", {},sid)
print("publish result: " + json.dumps(publish_result))
new_policy = {'policy-package':'Standard','access':True,'targets':['CPGleb']}
new_policy_result = api_call('xxx.xxx.xxx.xxx', 443,'install-policy', new_policy ,sid)
print(json.dumps(new_policy_result)
task_id=(json.dumps(new_policy_result ["task-id"]))
len_str=len(task_id)
task_id=task_id[1:(len_str-1)]
show_task_id ={'task-id':(task_id)}
show_task=api_call('xxx.xxx.xxx.xxx',443,'show-task',show_task_id,sid)
print(json.dumps(show_task))
6) рд╣реЛрд╕реНрдЯ рдердкреНрдиреБрд╣реЛрд╕реН:
рд▓рд┐рдкрд┐
new_host_data = {'name':'JohnDoePc', 'ip-address': '192.168.0.10'}
new_host_result = api_call('xxx.xxx.xxx.xxx', 443,'add-host', new_host_data ,sid)
print(json.dumps(new_host_result))
7) рдЦрддрд░рд╛ рд░реЛрдХрдерд╛рдо рдХреНрд╖реЗрддреНрд░ рдердкреНрдиреБрд╣реЛрд╕реН:
рд▓рд┐рдкрд┐
set_package_layer={'name':'Standard','threat-prevention' :True,'installation-targets':'CPGleb'}
set_package_layer_result = api_call('xxx.xxx.xxx.xxx', 443,'set-package',set_package_layer,sid)
print(json.dumps(set_package_layer_result))
8) рд╕рддреНрд░рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН
рд▓рд┐рдкрд┐
new_session_data = {'limit':'50', 'offset':'0','details-level' : 'standard'}
new_session_result = api_call('xxx.xxx.xxx.xxx', 443,'show-sessions', new_session_data ,sid)
print(json.dumps(new_session_result))
9) рдирдпрд╛рдБ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
рд▓рд┐рдкрд┐
add_threat_profile={'name':'Apeiron', "active-protections-performance-impact" : "low","active-protections-severity" : "low or above","confidence-level-medium" : "prevent",
"confidence-level-high" : "prevent", "threat-emulation" : True,"anti-virus" : True,"anti-bot" : True,"ips" : True,
"ips-settings" : { "newly-updated-protections" : "staging","exclude-protection-with-performance-impact" : True,"exclude-protection-with-performance-impact-mode" : "High or lower"},
"overrides" : [ {"protection" : "3Com Network Supervisor Directory Traversal","capture-packets" : True,"action" : "Prevent","track" : "Log"},
{"protection" : "7-Zip ARJ Archive Handling Buffer Overflow", "capture-packets" : True,"action" : "Prevent","track" : "Log"} ]}
add_threat_profile_result=api_call('xxx.xxx.xxx.xxx',443,'add-threat-profile',add_threat_profile,sid)
print(json.dumps(add_threat_profile_result))
10) IPS рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
рд▓рд┐рдкрд┐
set_threat_protection={
"name" : "3Com Network Supervisor Directory Traversal",
"overrides" : [{ "profile" : "Apeiron","action" : "Detect","track" : "Log","capture-packets" : True},
{ "profile" : "Apeiron", "action" : "Detect", "track" : "Log", "capture-packets" : False} ]}
set_threat_protection_result=api_call('xxx.xxx.xxx.xxx',443,'set-threat-protection',set_threat_protection,sid)
print(json.dumps(set_threat_protection_result))
11) рдЖрдлреНрдиреЛ рд╕реЗрд╡рд╛ рдердкреНрдиреБрд╣реЛрд╕реН:
рд▓рд┐рдкрд┐
add_service_udp={ "name" : "Dota2_udp", "port" : '27000-27030',
"keep-connections-open-after-policy-installation" : False,
"session-timeout" : 0, "match-for-any" : True,
"sync-connections-on-cluster" : True,
"aggressive-aging" : {"enable" : True, "timeout" : 360,"use-default-timeout" : False },
"accept-replies" : False}
add_service_udp_results=api_call('xxx.xxx.xxx.xxx',443,"add-service-udp",add_service_udp,sid)
print(json.dumps(add_service_udp_results))
резреи) рд╡рд░реНрдЧ, рд╕рд╛рдЗрдЯ рд╡рд╛ рд╕рдореВрд╣ рдердкреНрдиреБрд╣реЛрд╕реН:
рд▓рд┐рдкрд┐
add_application_site_category={ "name" : "Valve","description" : "Valve Games"}
add_application_site_category_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site-category",add_application_site_category,sid)
print(json.dumps(add_application_site_category_results))
add_application_site={ "name" : "Dota2", "primary-category" : "Valve", "description" : "Dotka",
"url-list" : [ "www.dota2.ru" ], "urls-defined-as-regular-expression" : False}
add_application_site_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site " ,
add_application_site , sid)
print(json.dumps(add_application_site_results))
add_application_site_group={"name" : "Games","members" : [ "Dota2"]}
add_application_site_group_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site-group",add_application_site_group,sid)
print(json.dumps(add_application_site_group_results))
рд╕рд╛рдереИ, рдорджреНрджрдд рд╕рдВрдЧ рд╡реЗрдм рдПрдкреАрдЖрдИ рддрдкрд╛рдИрдВ рдиреЗрдЯрд╡рд░реНрдХрд╣рд░реВ, рд╣реЛрд╕реНрдЯрд╣рд░реВ, рдкрд╣реБрдБрдЪ рднреВрдорд┐рдХрд╛рд╣рд░реВ, рдЖрджрд┐ рдердкреНрди рд░ рд╣рдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдмреНрд▓реЗрдб рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдПрдиреНрдЯрд┐рднрд╛рдЗрд░рд╕, рдПрдиреНрдЯрд┐рдмреЛрдЯ, рдЖрдИрдкреАрдПрд╕, рд╡реАрдкреАрдПрдиред рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЗрдЬрд╛рдЬрддрдкрддреНрд░рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдкрдирд┐ рд╕рдореНрднрд╡ рдЫ рд░рди-рд╕реНрдХреНрд░рд┐рдкреНрдЯред рд╕рдмреИ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ API рдЖрджреЗрд╢рд╣рд░реВ рдпрд╣рд╛рдБ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ
рдкреЛрдЗрдиреНрдЯ API + рдкреЛрд╕реНрдЯрдореНрдпрд╛рди рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдкрдирд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрд┐рдиреНрджреБ рд╡реЗрдм API рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕рдВрдЧ рд╕рдВрдпреЛрдЬрди рдорд╛
рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ API рдорд╛ рд╡реЗрдм рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреМрдВред рд╕рдмреИ рдПрдкреАрдЖрдИ рдЖрджреЗрд╢рд╣рд░реВ рдпрд╛рдж рдирдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдерд╛рдХрдерд┐рдд рд╕рдВрдЧреНрд░рд╣рд╣рд░реВ (рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ) рдЖрдпрд╛рдд рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, рдЬрд╕рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢рд╣рд░реВ рдЫрдиреН:
рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, рдпреЛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдЪреЗрдХ рдкреНрд╡рд╛рдЗрдиреНрдЯ API рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдЬрд╛рдБрдЪ рдмрд┐рдиреНрджреБ + рдЙрддреНрддрд░рдпреЛрдЧреНрдп
рддреНрдпрд╣рд╛рдБ рд░рд╣реЗрдХреЛ рдкрдирд┐ рдо рдиреЛрдЯ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рдЕрдЬреНрдЮрд╛рдд
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рдпреЛ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рд╕рдореНрднрд╡рддрдГ рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ API рдХреЛ рд╣рд╛рдореНрд░реЛ рдЫреЛрдЯреЛ рд╕рдореАрдХреНрд╖рд╛ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░рдорд╛, рдпреЛ рд╕реБрд╡рд┐рдзрд╛ рдзреЗрд░реИ рд▓рд╛рдореЛ-рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд░ рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред API рдХреЛ рдЙрджрдпрд▓реЗ рдЪреЗрдХ рдкреНрд╡рд╛рдЗрдиреНрдЯ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВ рд░ рдкреНрд░рдгрд╛рд▓реА рдПрдХреАрдХрд░рдгрдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдлрд░рд╛рдХрд┐рд▓реЛ рдЕрд╡рд╕рд░рд╣рд░реВ рдЦреЛрд▓реНрдЫред рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди, рд╕реНрд╡рдЪрд╛рд▓рди, SIEM рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛... рдпреЛ рд╕рдмреИ рдЕрдм рд╕рдореНрднрд╡ рдЫред
PS рдмрд╛рд░реЗ рдердк рд▓реЗрдЦ
PSS рдЪреЗрдХ рдкреЛрдЗрдиреНрдЯ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред
рдХреЗ рддрдкрд╛рдЗрдБ API рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрд╣реБрдиреБрд╣реБрдиреНрдЫ?
-
70,6%рд╣реЛ 12
-
23,5%рдирдореНрдмрд░ реореж
-
5,9%рдкрд╣рд┐рд▓реЗ рдиреИ 1 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
17 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред реи рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред
рд╕реНрд░реЛрдд: www.habr.com