рд╣реИрдмрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рд╕реНрдкрд░реНрд╕рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗрдВрджреНрд░ (рдХреЗрдПрд╕рд╕реА) рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдиреЛрдЯ рдереЗ
рдЗрдзрд░ рдФрд░ рдЙрдзрд░
рдЖрдЬ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рддрдХ рдЧреЛрддрд╛рдЦреЛрд░реА рдХрд░реЗрдВ рдФрд░ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рдЬрд╛рдПрдВред рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: Kaspersky Security Center 10+ рдХреЗ рд▓рд┐рдП KSC рдУрдкрди рдПрдкреАрдЖрдИред
рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╕рдореВрд╣реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрдпрд╕реНрдерд▓реЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрди рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЗрд╕рдХреА рд╡реНрдпрд╛рдкрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрд╛рдо рдХреА рдЧрддрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИред
рдФрд░ рдУрдкрди рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рддрд╛рдЬреА рд╣рд╡рд╛ рдХреА рдПрдХ рд╕рд╛рдВрд╕ рдХреА рддрд░рд╣ рдереА, рдФрд░ рддреБрд░рдВрдд рд╣реА рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЧреЛ рдХреА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрд┐ рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП KSC рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рдерд╛ред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
go get -u github.com/pixfid/go-ksc/kaspersky
рдирд┐рд░реНрдорд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХрд░реЗрдВред
import (
"github.com/pixfid/go-ksc/kaspersky"
)
рд╣рдо KSC рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ
func main() {
ctx := context.Background()
cfg := kaspersky.Config {
Username: "login",
Password: "password",
Server: fmt.Sprintf(`https://%s:%s`, "ip", "port"),
}
client := kaspersky.New(cfg)
client.KSCAuth(ctx)
}
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд░рд▓ рд╣реИ, рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде POST
рдПрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЕрдиреБрд░реЛрдз /api/v1.0/login
:
Authorization
: KSCBasic user=base64(login),pass=base64(pass)
X-KSC-VServer
: x
Content-Length
:2
рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рд╕рд░реНрд╡рд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛: {}
, , accessor
, requestId
.
:
\ , , github.
:
func GetAllGroups(ctx context.Context, client *kaspersky.Client) *FullGroupsInfos {
groups := &FullGroupsInfos{} // .
groupParam := kaspersky.HGParams{
WstrFilter: `
(&
(!"KLGRP_CHLDHST_CNT" = 0)
(!"grp_from_unassigned" = true)
)`,
VecFieldsToReturn: []string{
"id",
"name",
"grp_full_name",
"creationDate",
"KLGRP_CHLDHST_CNT",
"KLSRV_HSTSTAT_CRITICAL",
"KLSRV_HSTSTAT_WARNING",
},
PParams: kaspersky.PParams{
KlsrvhSlaveRecDepth: 0,
KlgrpFindFromCurVsOnly: true,
},
LMaxLifeTime: 100,
}
accessor, _, _ := client.HostGroup.FindGroups(ctx, groupParam) //
count, _, _ := client.ChunkAccessor.GetItemsCount(ctx, accessor.StrAccessor) //
_, _ = client.ChunkAccessor.GetItemsChunk(ctx, kaspersky.ItemsChunkParams{
StrAccessor: accessor.StrAccessor,
NStart: 0,
NCount: count.Int,
} , groups) //
client.ChunkAccessor.Release(ctx, accessor.StrAccessor) //
return groups
}
, API []byte
, inteface{}
.
:
{
"pChunk" : {
"KLCSP_ITERATOR_ARRAY" : [
{
"type" : "params",
"value" : {
"KLGRP_CHLDHST_CNT" : 1,
"creationDate" : {
"type" : "datetime",
"value" : "2020-03-13T18:48:43Z"
},
"grp_full_name" : " /Broken/",
"id" : 160,
"name" : "Broken"
}
}
]
},
"PxgRetVal" : 1
}
:
ts, _, _ := client.Tasks.GetAllTasksOfHost(ctx, "domain.name", "d7f6c44c-6743-416d-81b3-343e464f1ec9")
d7f6c44c-6743-416d-81b3-343e464f1ec9 , KSC
:
{ "PxgRetVal": ["101", "117", "118", "192"] }
(, , ) .
func (ts *Tasks) SuspendTask(ctx context.Context, strTask string) ([]byte, error)
func (ts *Tasks) ResumeTask(ctx context.Context, strTask string) ([]byte, error)
func (ts *Tasks) RunTask(ctx context.Context, strTask string) ([]byte, error)
func (ts *Tasks) DeleteTask(ctx context.Context, strTask string) ([]byte, error)
API, KSC 10, KSC 12.
GitHub
.
C.