ααΌα
αααααΎαααΆαααααααααααΈαααααΆαααα’αααΈαααααααααα·ααα 1C ααααΎαααΆααα
αααα»αααα·ααΆααΆαααΈαα»α
αα»ααα·ααααα·αα½αααααΌαααΆαααααΎα - αααααα§ααααααα α»αααα·ααΆααααΆα ααα·αααΆααααα½ααααααΆαααααααααααα
ααααααααααΆαααΈααα 1C α α αΎαααΆααααΌαααΆααααααα
α
α·ααααααα»ααα·ααααα·ααααααααααα GUI αααααΆααα§αααααααααΎααααΆαααα»αααΌααααααΆααα Tcl/tk ααααΌαβααΆαβααααΎαααΎαβααΆβααΆααΆβα’αα·αααααα ααΌα
βααΆβααΆαβαααα·αβααααβαααα»α αααααα·ααβαααα»αβαααααΆααβαα·α
αα
ααΆαβαααα ααΌα
ααααα αΎα αααα»αα
αααααα αΆααα·αααααΆααα½αα±ααα
αΆααα’αΆαααααααα½αα
ααα½ααααααααααααΆααα
αααα»ααααααΆαααααα
ααΎααααΈααααΎααΆαα’αααααΉαααααΌαααΆαααΆαα
ααα
αΆα tcl/tk αα·α 1C α α αΎαα
αΆααααΆααααΈαααα»αααΆααααααα
α
α·αααααααΎα±ααααΆαα
αααΎααααα»ααααααααααΆαααααΆαα
ααα
αΆα tcl/tk ααΌαααααΆαααααα·αααααΎαααα
ααααΆααΈααΈααΈ αααα»αααΉαααααΌαααΆααααα 8.6.7 ααααα½ααααα
αΌα ttk - αααα
αααααααΆαααΆαα»ααααΆα ααα·ααααααα αααααΎαααααΌαααΆαααΆα
αααα ttk ::TreeView ααΆα’αα»ααααΆαα±αααααα αΆααα·ααααααααΆαααααα»ααααααααααα
ααΆαααααααααααααΆα αα·ααααα»αααααααααΆααΆα (αααααΈ)α ααΌα
ααααΆαααααααααα
αααα»αααααααααΈ ααΆαααΆααααααΆαααααΈααΎααααααααΌαααΆαααααΎαααΆαα‘αΎααα·α (ααΆααααααααΆααΆααααααααααααΌαααΆαααααΎαα
αααα»ααααααααα
αααααααΎαααΆαααΆααααααααΆααΆααααα
)α
αααααααααααΆαα―αααΆαααΆα αααΎα (αααααΈααΆααααΆαα’αααΈααΆααΆααα’αααααΈααΆαααααΎα’αααΈαααααααααΆααααα»ααααα½αααααα)α
rac_gui.cfg - ααΆααααααααααΆαααΎα
rac_gui.tcl - ααααααΈαα
αΆααααααΎαααααΆαα
αα lib ααΆαα―αααΆαααααααα»ααααααααααααααααα·αα
αααα
αΆααααααΎαα
function.tcl - α―αααΆααααααΆαααΈαα·αα·ααΈ
gui.tcl - α
ααα»α
αααααΆααααααΆα ααα·αα
αααα
images.tcl - αααααΆαααααΌαααΆα base64
ααΆααα·αα―αααΆα rac_gui.tcl α αΆααααααΎαα’ααααααααα α αΆααααααΎαα’ααα αααα»ααααΌαα»α ααααααα ααΆαααααααα αα·αα’αααΈαααααααααα ααααΉαααΆαααα―αααΆααααααΆαααα·αααααα
rac_gui.tcl
#!/bin/sh
exec wish "$0" -- "$@"
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
set dir(root) [pwd]
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ ΡΠΎ ΡΠΎΠ·Π΄Π°ΡΠΌ
set dir(work) [file join $env(HOME) .rac_gui]
if {[file exists $dir(work)] == 0 } {
file mkdir $dir(work)
}
# ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ
set dir(lib) "[file join $dir(root) lib]"
# Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ
if {[file exists [file join $dir(work) rac_gui.cfg]] ==0} {
file copy [file join [pwd] rac_gui.cfg] [file join $dir(work) rac_gui.cfg]
}
source [file join $dir(work) rac_gui.cfg]
# ΠΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ rac ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅
# Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° ΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ Π΄ΠΈΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ
# ΠΈ ΡΡΠΎΡ ΠΏΡΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³
if {[file exists $rac_cmd] == 0} {
set rac_cmd [tk_getOpenFile -initialdir $env(HOME) -parent . -title "Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ Π΄ΠΎ rac" -initialfile rac]
file copy [file join $dir(work) rac_gui.cfg] [file join $dir(work) rac_gui.cfg.bak]
set orig_file [open [file join $dir(work) rac_gui.cfg.bak] "r"]
set file [open [file join $dir(work) rac_gui.cfg] "w"]
while {[gets $orig_file line] >=0 } {
if {[string match "set rac_cmd*" $line]} {
puts $file "set rac_cmd $rac_cmd"
} else {
puts $file $line
}
}
close $file
close $orig_file
#return "$host:$port"
file delete [file join $dir(work) 1c_srv.cfg.bak]
} else {
puts "Found $rac_cmd"
}
set cluster_user ""
set cluster_pwd ""
set agent_user ""
set agent_pwd ""
## LOAD FILE ##
# ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΡΠΎΠΌΠ΅ gui.tcl ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ
foreach modFile [lsort [glob -nocomplain [file join $dir(lib) *.tcl]]] {
if {[file tail $modFile] ne "gui.tcl"} {
source $modFile
puts "Loaded module $modFile"
}
}
source [file join $dir(lib) gui.tcl]
source [file join $dir(work) rac_gui.cfg]
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² 1Π‘
# ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Π΄Π΅ΡΠ΅Π²ΠΎ
if [file exists [file join $dir(work) 1c_srv.cfg]] {
set f [open [file join $dir(work) 1c_srv.cfg] "RDONLY"]
while {[gets $f line] >=0} {
.frm_tree.tree insert {} end -id "server::$line" -text "$line" -values "$line"
}
}
αααααΆααααΈααΆαααα’αααΈααααααααΆααααααααΌαααΆα αα·ααα·αα·αααααΎαααααααΆαααααα§αααααααααΎααααΆαααααααΆαα αααα’α½α ααααΆα ααα·αααΉαααααΌαααΆαααΆααα±ααααααΎαααΆαα α ααα»α αααααΆαααααααα·ααΈααΆαααΆαα»ααΈα
αααΆαα§ααααα αααααΆα αα·ααααααΈ
αααα»αααΆαααααΎα±ααααΆαα·ααΆαα "ααΎαααΎ" ααααααααΉαα§αααααααΈαααΌαααααααΆαααΈ 1C α
ααΌαα
ααααααααααααΎαααΆαα·αααΌαααααΆααα
αααα»αα―αααΆα
lib/gui.tcl
# ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
# ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ topLevelGeometry Π² ΠΊΠΎΠ½ΡΠΈΠ³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
if {[info exists topLevelGeometry]} {
wm geometry . $topLevelGeometry
} else {
wm geometry . 1024x768
}
# ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°
wm title . "1C Rac GUI"
wm iconname . "1C Rac Gui"
# ΠΈΠΊΠΎΠ½ΠΊΠ° ΠΎΠΊΠ½Π° (Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° lib/imges.tcl)
wm iconphoto . tcl
wm protocol . WM_DELETE_WINDOW Quit
wm overrideredirect . 0
wm positionfrom . user
ttk::style theme use clam
# ΠΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
set frm_tool [frame .frm_tool]
pack $frm_tool -side left -fill y
ttk::panedwindow .panel -orient horizontal -style TPanedwindow
pack .panel -expand true -fill both
pack propagate .panel false
ttk::button $frm_tool.btn_add -command Add -image add_grey_32
ttk::button $frm_tool.btn_del -command Del -image del_grey_32
ttk::button $frm_tool.btn_edit -command Edit -image edit_grey_32
ttk::button $frm_tool.btn_quit -command Quit -image quit_grey_32
pack $frm_tool.btn_add $frm_tool.btn_del $frm_tool.btn_edit -side top -padx 5 -pady 5
pack $frm_tool.btn_quit -side bottom -padx 5 -pady 5
# ΠΠ΅ΡΠ΅Π²ΠΎ Ρ ΠΏΠΎΠ»ΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ
set frm_tree [frame .frm_tree]
ttk::scrollbar $frm_tree.hsb1 -orient horizontal -command [list $frm_tree.tree xview]
ttk::scrollbar $frm_tree.vsb1 -orient vertical -command [list $frm_tree.tree yview]
set tree [ttk::treeview $frm_tree.tree -show tree
-xscrollcommand [list $frm_tree.hsb1 set] -yscrollcommand [list $frm_tree.vsb1 set]]
grid $tree -row 0 -column 0 -sticky nsew
grid $frm_tree.vsb1 -row 0 -column 1 -sticky nsew
grid $frm_tree.hsb1 -row 1 -column 0 -sticky nsew
grid columnconfigure $frm_tree 0 -weight 1
grid rowconfigure $frm_tree 0 -weight 1
# Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ
bind $frm_tree.tree <ButtonRelease> "TreePress $frm_tree.tree"
# Π‘ΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ
(ΡΠ°Π±Π»ΠΈΡΠ°)
set frm_work [frame .frm_work]
ttk::scrollbar $frm_work.hsb -orient horizontal -command [list $frm_work.tree_work xview]
ttk::scrollbar $frm_work.vsb -orient vertical -command [list $frm_work.tree_work yview]
set tree_work [
ttk::treeview $frm_work.tree_work
-show headings -columns "par val" -displaycolumns "par val"
-xscrollcommand [list $frm_work.hsb set]
-yscrollcommand [list $frm_work.vsb set]
]
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²Π΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅
$tree_work tag configure dark -background $color(dark_table_bg)
$tree_work tag configure light -background $color(light_table_bg)
# Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΠΎΡΠΌΠ΅
grid $tree_work -row 0 -column 0 -sticky nsew
grid $frm_work.vsb -row 0 -column 1 -sticky nsew
grid $frm_work.hsb -row 1 -column 0 -sticky nsew
grid columnconfigure $frm_work 0 -weight 1
grid rowconfigure $frm_work 0 -weight 1
pack $frm_tree $frm_work -side left -expand true -fill both
#.panel add $frm_tool -weight 1
.panel add $frm_tree -weight 1
.panel add $frm_work -weight 1
αααα½ααααααααΆααααααΆααααααΎααΆαααΆαα½ααααααα·ααΈααΆαααΌα ααΆααααααα
1. ααΆααααΌα α’αααααααΌααααααααααΆαααΈαααα ααααααα (α§. αααΆαααΈααααααααααααα ααααα (αα αααα»αααΈαα»α ααΆααααααααααααααΌαααΆαααΎαααααΎαααΆααααααααΎααΆααααααααΆ β/opt/1C/v8.3/x86_64/ras cluster βdaemonβ))α
ααΎααααΈααααΎααΌα αααα α»α ααΎαααΌαα»α "+" α αΎααα αααα»ααααα’α½α αααααΎαααΌααααα αΌαα’αΆααααααΆααααΆαααΈααααα·αα ααα:
αααααΆαααα αααΆαααΈαααααααααΎαααΉααααα αΆααα
αααα»ααααααΆααααα
α»α
ααΎααΆ αααααΈααα
αααααααΉαααΎα α¬ααα α»ααααα»αααΆααααααΆααααΉαααααΌαααΆααααα αΆαα
2. ααΆαα α»α ααΎαααααα αααααααΉαααΎααααααΈαα»αααΆααααααΆααααααΆααααΆα
3. β¦
α αΎαααΌα αααααα ααΎ, i.e. ααΎααααΈααααααα αααααααααΈ ααααΎαααΎαααΆαα½ααααααΆααα αααα»ααααααΈ α αΎαα α»α αααΌαα»α β+β αα αααα»ααααΆαα§ααααα α αΎααααα’ααααααααααααΈααΉαααααΌαααΆααααα αΆαα
αααΌαα»ααα αααα»ααααΆαα§αααααα’αα»αααααα»αααΆαα’αΆαααααααΎααα·αα α§α α’αΆαααααααΎααΆαα»ααΆαα½ααααααααΆα α¬αααααΈαααααααΌαααΆαααααΎαααΎα ααΈαα·αα·ααΈαα½α α¬αα½αααααααααααΉαααααΌαααΆαα’αα»ααααα
ααΌααααα‘ααααΎαα§ααΆα ααααααααΌαα»ααααααα (β+β)α
αααααΌαααααΆαααααΌαα»αα
ttk::button $frm_tool.btn_add -command Add -image add_grey_32
αα ααΈαααααΎαααΎαααΆαα αααα α»α αααΌαα»α ααααΎαααΆα "αααααα" ααΉαααααΌαααΆαααααα·ααααα· ααΌαααααααΆ:
proc Add {} {
global active_cluster host
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
set id [.frm_tree.tree selection]
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
set values [.frm_tree.tree item [.frm_tree.tree selection] -values]
set key [lindex [split $id "::"] 0]
# Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ ΡΡΠΎ Π²ΡΠ΄Π΅Π»ΠΈΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π° Π½ΡΠΆΠ½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°
if {$key eq "" || $key eq "server"} {
set host [ Add::server ]
return
}
Add::$key .frm_tree.tree $host $values
}
αααααΊααΆαα»ααααααααα·αα½ααα tickleα α’αααα’αΆα α α»α αααααααα’αααααΆαααααααΈαα·αα·ααΈα
Add::$key .frm_tree.tree $host $values
αααααΊααΆα§ααΆα ααα ααααα·αααΎααΎαα ααα’α»ααα αααΆαααΈααα α αΎαα α»α β+β αααααααΎαααΆα Add:: server ααΉαααααΌαααΆαααΆααα±ααααααΎαααΆα ααααα·αααΎαα cluster - Add::cluster α αΎαααΌα αααααα ααΎ (αααα»αααΉααααααα’αααΈααααααααα "ααααΆααα α»α " α αΆαααΆα αααααΈααΆααααααααααα·α ) ααΈαα·αα·ααΈαααααΆαααΆααααααΈααΌαααΆαα»ααααΆα ααα·αααααααααααα ααΉαααα·ααα
ααΌα αααα’ααααααα ααααΆααΆαααααααααΆαααα½α α αΎα ααααααααΊααααααααααΆαα αααα»ααα ααΆααααα - ααααα·ααααααΆααΏααα½αα±ααααααΆααααα’αΎαααααααααααααΆααααΌαααΆααααα αΆααααααΈαα·αα·ααΈαα½α ααΆααααα αααΆααααΆαααααα ααα ααα»αααααΆαααααααααα (αααα’α½α αααΌαα»α ααΌαααΆα ααααΆα) αααααααααΈαα·αα·ααΈ ααααααααααα·αααααΌα
proc AddToplevel {lbl img {win_name .add}} {
set cmd "destroy $win_name"
if [winfo exists $win_name] {destroy $win_name}
toplevel $win_name
wm title $win_name $lbl
wm iconphoto $win_name tcl
# ΠΌΠ΅ΡΠΊΠ° Ρ ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ
ttk::label $win_name.lbl -image $img
# ΡΡΠ΅ΠΉΠΌ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ Π²Π²ΠΎΠ΄Π°
set frm [ttk::labelframe $win_name.frm -text $lbl -labelanchor nw]
grid columnconfigure $frm 0 -weight 1
grid rowconfigure $frm 0 -weight 1
# ΡΡΠ΅ΠΉΠΌ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ
set frm_btn [frame $win_name.frm_btn -border 0]
ttk::button $frm_btn.btn_ok -image ok_grey_24 -command { }
ttk::button $frm_btn.btn_cancel -command $cmd -image quit_grey_24
grid $win_name.lbl -row 0 -column 0 -sticky nw -padx 5 -pady 10
grid $frm -row 0 -column 1 -sticky nw -padx 5 -pady 5
grid $frm_btn -row 1 -column 1 -sticky se -padx 5 -pady 5
pack $frm_btn.btn_cancel -side right
pack $frm_btn.btn_ok -side right -padx 10
return $frm
}
αααΆαααΆααααααα α ααΌαααααα α αααααΎα αααααααΌαααΆααααααΆααααΌαααααΆαααΈαααααΆααα (lib/images.tcl) αα·ααααΆαααΆααααααααααααααα’α½α ααααα α α·ααα (ααααΆαααΎα .αααααα)α ααΌα αααα ααααα·αααΎααΎαααα§ααΆα αααααΆαααΎαααααΆααααΆααααααααααΆαααΈααα αα·αα ααααα ααΆαα α ααΌαααααααΉαααααΎα‘αΎαααΆαα
AddToplevel "ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°" server_grey_64
α¬
AddToplevel "ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°" cluster_grey_64
ααΆααΆααααααΎαααΆαα αααααααααΆαα½αα§ααΆα αααααΆααααα αααα»αααΉααααα αΆαααΈαα·αα·ααΈααααααα αΆααααα’αααααααααααααΆαααααΆαααΈααα α¬α αααααα
ααααααα: αααΆαααΈααα
proc Add::server {} {
global default
# Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΎΡΠΌΡ
set frm [AddToplevel "ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°" server_grey_64]
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅ΡΠΊΠΈ ΠΈ ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π° Π½Π° ΡΡΡ ΡΠΎΡΠΌΡ
label $frm.lbl_host -text "ΠΠ΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°"
entry $frm.ent_host
label $frm.lbl_port -text "ΠΠΎΡΡ"
entry $frm.ent_port
$frm.ent_port insert end $default(port)
grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid columnconfigure $frm 0 -weight 1
grid rowconfigure $frm 0 -weight 1
#set frm_btn [frame .add.frm_btn -border 0]
# ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ
.add.frm_btn.btn_ok configure -command {
set host [SaveMainServer [.add.frm.ent_host get] [.add.frm.ent_port get]]
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
destroy .add
return $host
}
return $frm
}
ααααααα:α ααααα
proc Add::cluster {tree host values} {
global default lifetime_limit expiration_timeout session_fault_tolerance_level
global max_memory_size max_memory_time_limit errors_count_threshold security_level
global load_balancing_mode kill_problem_processes
agent_user agent_pwd cluster_user cluster_pwd auth_agent
if {$agent_user ne "" && $agent_pwd ne ""} {
set auth_agent "--agent-user=$agent_user --agent-pwd=$agent_pwd"
} else {
set auth_agent ""
}
# ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ()
set lifetime_limit $default(lifetime_limit)
set expiration_timeout $default(expiration_timeout)
set session_fault_tolerance_level $default(session_fault_tolerance_level)
set max_memory_size $default(max_memory_size)
set max_memory_time_limit $default(max_memory_time_limit)
set errors_count_threshold $default(errors_count_threshold)
set security_level [lindex $default(security_level) 0]
set load_balancing_mode [lindex $default(load_balancing_mode) 0]
set frm [AddToplevel "ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°" cluster_grey_64]
label $frm.lbl_host -text "ΠΠ΄ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°"
entry $frm.ent_host
label $frm.lbl_port -text "ΠΠΎΡΡ"
entry $frm.ent_port
$frm.ent_port insert end $default(port)
label $frm.lbl_name -text "ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°"
entry $frm.ent_name
label $frm.lbl_secure_connect -text "ΠΠ°ΡΠΈΡΡΠ½Π½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅"
ttk::combobox $frm.cb_security_level -textvariable security_level -values $default(security_level)
label $frm.lbl_expiration_timeout -text "ΠΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π·:"
entry $frm.ent_expiration_timeout -textvariable expiration_timeout
label $frm.lbl_session_fault_tolerance_level -text "Π£ΡΠΎΠ²Π΅Π½Ρ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ"
entry $frm.ent_session_fault_tolerance_level -textvariable session_fault_tolerance_level
label $frm.lbl_load_balancing_mode -text "Π Π΅ΠΆΠΈΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ"
ttk::combobox $frm.cb_load_balancing_mode -textvariable load_balancing_mode
-values $default(load_balancing_mode)
label $frm.lbl_errors_count_threshold -text "ΠΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°, %"
entry $frm.ent_errors_count_threshold -textvariable errors_count_threshold
label $frm.lbl_processes -text "Π Π°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ:"
label $frm.lbl_lifetime_limit -text "ΠΠ΅ΡΠΈΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°, ΡΠ΅ΠΊ."
entry $frm.ent_lifetime_limit -textvariable lifetime_limit
label $frm.lbl_max_memory_size -text "ΠΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΠΎΠ±ΡΡΠΌ ΠΏΠ°ΠΌΡΡΠΈ, ΠΠ"
entry $frm.ent_max_memory_size -textvariable max_memory_size
label $frm.lbl_max_memory_time_limit -text "ΠΠ½ΡΠ΅ΡΠ²Π°Π» ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΠΊ."
entry $frm.ent_max_memory_time_limit -textvariable max_memory_time_limit
label $frm.lbl_kill_problem_processes -justify left -anchor nw -text "ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ"
checkbutton $frm.check_kill_problem_processes -variable kill_problem_processes -onvalue yes -offvalue no
grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_name -row 2 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_name -row 2 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_secure_connect -row 3 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_security_level -row 3 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_expiration_timeout -row 4 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_expiration_timeout -row 4 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_session_fault_tolerance_level -row 5 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_session_fault_tolerance_level -row 5 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_load_balancing_mode -row 6 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_load_balancing_mode -row 6 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_errors_count_threshold -row 7 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_errors_count_threshold -row 7 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_processes -row 8 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.lbl_lifetime_limit -row 9 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_lifetime_limit -row 9 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_max_memory_size -row 10 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_max_memory_size -row 10 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_max_memory_time_limit -row 11 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_max_memory_time_limit -row 11 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_kill_problem_processes -row 12 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.check_kill_problem_processes -row 12 -column 1 -sticky nw -padx 5 -pady 5
# ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
.add.frm_btn.btn_ok configure -command {
RunCommand "" "cluster insert
--host=[.add.frm.ent_host get]
--port=[.add.frm.ent_port get]
--name=[.add.frm.ent_name get]
--expiration-timeout=$expiration_timeout
--lifetime-limit=$lifetime_limit
--max-memory-size=$max_memory_size
--max-memory-time-limit=$max_memory_time_limit
--security-level=$security_level
--session-fault-tolerance-level=$session_fault_tolerance_level
--load-balancing-mode=$load_balancing_mode
--errors-count-threshold=$errors_count_threshold
--kill-problem-processes=$kill_problem_processes
$auth_agent $host"
Run::server $tree $host ""
destroy .add
}
return $frm
}
αα αααααααααααααΌαααααΈαα·αα·ααΈααΆααααα ααΆααα»αααααΆα’αΆα ααΎαααΎαααααααααααα αααα»αααΉααααααααΎα§ααααααααααααΆααααΌαα»α "ααααααα" α αα αααα»α Tk αααααααααααααα·ααααΆαα»ααααΆα ααα·αα’αΆα ααααΌαααΆαααα·αααααα‘α»ααααααααΎαααΆααααααα·ααΈαααααααΎαααααΎα ααααααα ααΆαααααααα. α§ααΆα ααα ααΆααααααααΆααααΌαααΎααααΈαααα αΆααααΌαα»αα
ttk::button $frm_btn.btn_ok -image ok_grey_24 -command { }
ααα»αααααα αααα»αααααααααααααΎα ααΆααααααααΆα’αΆαααααααΎαα»αααΆααααααααΌαααΆαα
.add.frm_btn.btn_ok configure -command {
RunCommand "" "cluster insert
--host=[.add.frm.ent_host get]
--port=[.add.frm.ent_port get]
--name=[.add.frm.ent_name get]
--expiration-timeout=$expiration_timeout
--lifetime-limit=$lifetime_limit
--max-memory-size=$max_memory_size
--max-memory-time-limit=$max_memory_time_limit
--security-level=$security_level
--session-fault-tolerance-level=$session_fault_tolerance_level
--load-balancing-mode=$load_balancing_mode
--errors-count-threshold=$errors_count_threshold
--kill-problem-processes=$kill_problem_processes
$auth_agent $host"
Run::server $tree $host ""
destroy .add
}
αα αααα»αα§ααΆα αααααΆαααΎ αααΌαα»α "αααα" α αΆααααααΎαααΈαα·αα·ααΈαααααΆααααΆαααααααα αααααα
αα ααΈαααααΆααΆααααααααααΎα±ααααΆαααΆααααααΎαααααααα ααααΆαααααΎααΆαααΆαα½αααΆαα»ααααΆα ααα·ααα αααα»α Tk - αααααΆααααΆαα»αααα αΌααα·αααααααααααα (ααΆαα» αααα’αααααα αΌα αααΌαα»αααΈαααα) αααΆαααΆααααααααααΌαααΆαααααΆαααΆα’αααα’αααααα
entry $frm.ent_lifetime_limit -textvariable lifetime_limit
α’αααβαααβααααΌαβααΆαβαααααβαααα»αβα αααααβαααααβααα α αΎαβααΆαβαααααβαααβααΆαβαααα αΌαβαα αα α»ααααααα ααΆαααααα ααΎααααΈααα½αααΆαα’ααααααααααΆααααα αΌαααΈααΆα α’αααααααΆααααααααΌαααΆαα’αΆαααααααααααααΌαααΉαα’ααα (ααΆααΆααα·αααΆαα ααΆααααααααΆααΆααααΌαααΆαααααααα ααααααααΎαααΆαα»)α
αα·ααΈααΆαααααααΈααΈααααααΆααααΆαααΆαααα’ααααααααααΆααααα αΌα (αααααΆααααΆαα»ααααααααααΆαα») ααΊααααΌαααααΎααΆααααααααΆ get:
.add.frm.ent_name get
αα·ααΈααΆαααααααΆααααΈααααα’αΆα ααααΌαααΆαααααΎαααΎααα αααα»αααΌαααΆαααΎα
ααΆαα α»α αααΌαα»αααα αααα»αααααΈαααα αΆααααααΎαααααΎαααΆα RunCommand ααΆαα½αααΉααααααΆααααΆααααααααΆαααααΆααααααΎααααααΆααααΆαααααααα ααααααααα»αααααααααααααΆααααααΆααα
/opt/1C/v8.3/x86_64/rac cluster insert --host=localhost --port=1540 --name=dsdsds --expiration-timeout=0 --lifetime-limit=0 --max-memory-size=0 --max-memory-time-limit=0 --security-level=0 --session-fault-tolerance-level=0 --load-balancing-mode=performance --errors-count-threshold=0 --kill-problem-processes=no localhost:1545
α₯α‘αΌααααααΎααααααααΆααααααααΆααααΆααααααααααααααααΆαα αΆααααααΎαααααΆααααααΆααααΆαα½αααΉααααΆαααΆαααααααααααΎαααααΌαααΆααααααααααααααααΆααααααααΆαα ααΆαααααΈαα·ααααα‘αααααα·αααααα·αααΎα αΆαααΆα α:
αααααΆααααααααΆ
proc RunCommand {root par} {
global dir rac_cmd cluster work_list_row_count agent_user agent_pwd cluster_user cluster_pwd
puts "$rac_cmd $par"
set work_list_row_count 0
# ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΊΠ°Π½Π°Π» Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅
# $rac - ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΏΡΡΡΠΌ
# $par - ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΠΏΡΠΈΠΈ
set pipe [open "|$rac_cmd $par" "r"]
try {
set lst ""
set l ""
# Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ²
while {[gets $pipe line]>=0} {
#puts $line
if {$line eq ""} {
lappend l $lst
set lst ""
} else {
lappend lst [string trim $line]
}
}
close $pipe
return $l
} on error {result options} {
# ΠΠ°ΠΏΡΡΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
ErrorParcing $result $options
return ""
}
}
αααααΆααβααΈβαααα αΌαβαα·ααααααβαααΆαααΈαβαα ααΆβααΉαβααααΌαβααΆαβααααααβαα βαααααΆαβαααααΆααβααΆαβαααβαα βαααα»α Add: server ααΆαααΎ ααΌαβααΆααααααβααααΌαβααα½ααα»αααααΌαα
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
α₯α‘αΌαααα αααα α»α ααΎααααααααΆαααΈααααα αααα»ααααααΆα ααΎαααα½αααΆααααααΈααα αααααααααααααααααααααααΆαααΈαααααα α αΎααααα α»α ααΎα ααααααα½α ααΎαααα½αααΆααααααΈααααΆαα»α ααααα (αααΆαααΈααα ααααααΆαααΌαααααΆαααα)α ααΆααααΌαααΆαα’αα»αααααα αααα»αααΈαα·αα·ααΈ TreePress (α―αααΆα lib/function.tcl):
proc TreePress {tree} {
global host server active_cluster infobase
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
set id [$tree selection]
# ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
SetGlobalVarFromTreeItems $tree $id
# ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ»ΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Ρ.Π΅. ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠΏ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
set values [$tree item $id -values]
set key [lindex [split $id "::"] 0]
# ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ ΡΡΠΎ Π²ΡΠ±ΡΠ°Π»ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°
# Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΡΠ½ Run
Run::$key $tree $host $values
}
ααΌα ααααα αΎα Run::server ααΉαααααΌαααΆαααΎαααααΎαααΆααααααΆαα server main (αααααΆαα cluster - Run::cluster, for a work server - Run::work_server, etc.)α ααΆαααααα αααααααα’ααα $key ααΊααΆααααααα½ααααααααααααααΆαα»αααααΆααααααΆααααααΆααααααααααΎα - ααααααααΆαα.
α αΌαααΎαααα α·ααααα»αααΆααααΎααΈαα·αα·ααΈ
ααα :: server
proc Run::server {tree host values} {
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
set lst [RunCommand server::$host "cluster list $host"]
if {$lst eq ""} {return}
set l [lindex $lst 0]
#puts $lst
# ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π»ΠΈΡΠ½Π΅Π΅ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
# ΡΠΈΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ
foreach cluster_list $lst {
# ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
InsertItemsWorkList $cluster_list
# ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ (ΡΠΏΠΈΡΠΎΠΊ) Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² Π΄Π΅ΡΠ΅Π²ΠΎ
foreach i $cluster_list {
#puts $i
set cluster_list [split $i ":"]
if {[string trim [lindex $cluster_list 0]] eq "cluster"} {
set cluster_id [string trim [lindex $cluster_list 1]]
lappend cluster($cluster_id) $cluster_id
}
if {[string trim [lindex $cluster_list 0]] eq "name"} {
lappend cluster($cluster_id) [string trim [lindex $cluster_list 1]]
}
}
}
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Π² Π΄Π΅ΡΠ΅Π²ΠΎ
foreach x [array names cluster] {
set id [lindex $cluster($x) 0]
if { [$tree exists "cluster::$id"] == 0 } {
$tree insert "server::$host" end -id "cluster::$id" -text "[lindex $cluster($x) 1]" -values "$id"
# Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ
InsertClusterItems $tree $id
}
}
if { [$tree exists "agent_admins::$id"] == 0 } {
$tree insert "server::$host" end -id "agent_admins::$id" -text "ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ" -values "$id"
#InsertClusterItems $tree $id
}
}
ααΈαα·αα·ααΈαααααααΎαααΆαααΌαα’αααΈαααααΆαααα½αααΈαααΆαααΈαααααΆααααααΆααααααααΆ RunCommand α αΎαααααααααααααααΆααα’αααα αααααΆα - α ααααα ααΆαα»α«ααααααα (ααΌαααααΆα αααΆαααΈαααααααΎαααΆα αααα αα·αα’αααΈααααααααα)α ααααα·αααΎα’ααααααα‘ααααΎαα±αααα·α α’αααααΉααααααΆααααΎαααΆαα α αα ααΆααααααΎαααΆα InsertItemsWorkList αα ααΆααααα»αα ααΆααααΌαααΆαααααΎααΎααααΈααααααααΆαα»αα αααα»ααααααΈααααΆα ααα·ααααααααΎαααΆαααααααααα§αααααααααΎααααΆαααα»αααΌα rac αααααΈαα»αααααΌαααΆααααα‘ααααΆαααααΈαα α’ααα $lst α αααααΊααΆαααααΈαααααααΈαααααΆαααΌααααΆαα»ααααααααααααααααΆα
α§ααΆα ααα αααααΈααααΆααααααΆααα αααααα
svk@svk ~]$ /opt/1C/v8.3/x86_64/rac connection list --cluster=783d2170-56c3-11e8-c586-fc75165efbb2 localhost:1545
connection : dcf5991c-7d24-11e8-1690-fc75165efbb2
conn-id : 0
host : svk.home
process : 79de2e16-56c3-11e8-c586-fc75165efbb2
infobase : 00000000-0000-0000-0000-000000000000
application : "JobScheduler"
connected-at : 2018-07-01T14:49:51
session-number : 0
blocked-by-ls : 0
connection : b993293a-7d24-11e8-1690-fc75165efbb2
conn-id : 0
host : svk.home
process : 79de2e16-56c3-11e8-c586-fc75165efbb2
infobase : 00000000-0000-0000-0000-000000000000
application : "JobScheduler"
connected-at : 2018-07-01T14:48:52
session-number : 0
blocked-by-ls : 0
αααα»αααααααααααΆα ααα·α ααΆααΉαααΎααα ααΌα αααα
ααααΎαααΆαααΆαααΎααααΎαααΎααααααααΆαα»αααααΆααααααααΆ αα·ααα·ααααααααΎααααΈαααααααΆααΆαα
αααα αΌααααααΈααΆαααΆα
proc InsertItemsWorkList {lst} {
global work_list_row_count
# ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ
if [expr $work_list_row_count % 2] {
set tag dark
} else {
set tag light
}
# ΡΠ°Π·Π±ΠΎΡ ΡΡΡΠΎΠΊ Π½Π° ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ - Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
foreach i $lst {
if [regexp -nocase -all -- {(D+)(s*?|)(:)(s*?|)(.*)} $i match param v2 v3 v4 value] {
lappend column_list [string trim $param]
lappend value_list [string trim $value]
}
}
# Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ
.frm_work.tree_work configure -columns $column_list -displaycolumns $column_list
.frm_work.tree_work insert {} end -values $value_list -tags $tag
.frm_work.tree_work column #0 -stretch
# ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
foreach j $column_list {
.frm_work.tree_work heading $j -text $j
}
incr work_list_row_count
}
αα ααΈααααααα½αα±ααααΆααααααααΆααΆαααα [split $str ":"] ααααααααααααα’αααααα ααΆααΆαα»ααααααααααα ":" α αΎααααα‘αααααααΈ ααααααααααααΆααααΌαααΆαααααΎ αααααΆαααΆαα»αα½αα ααα½αααααΆααααααΆαααααΆαααααααα
ααΈαα·αα·ααΈ InsertClusterItems (αα½ααααα»αα
ααααααααα»ααααααααααΆααΆα
αααΎα) ααααΆαααααααααααααααΈααααΆαα»ααΌαααΆαα½αααΉαα§ααααααααααα’ααααααααΆααααααααΌαααααΆαα
ααΉααααααΆαααααΆαα»α
ααααααααααααΌαααΆαα
αααα
αΌαβααΆαα»βα
ααααα
proc InsertClusterItems {tree id} {
set parent "cluster::$id"
$tree insert $parent end -id "infobases::$id" -text "ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π±Π°Π·Ρ" -values "$id"
$tree insert $parent end -id "servers::$id" -text "Π Π°Π±ΠΎΡΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ" -values "$id"
$tree insert $parent end -id "admins::$id" -text "ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ" -values "$id"
$tree insert $parent end -id "managers::$id" -text "ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°" -values $id
$tree insert $parent end -id "processes::$id" -text "Π Π°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ" -values "workprocess-all"
$tree insert $parent end -id "sessions::$id" -text "Π‘Π΅Π°Π½ΡΡ" -values "sessions-all"
$tree insert $parent end -id "locks::$id" -text "ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ" -values "blocks-all"
$tree insert $parent end -id "connections::$id" -text "Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ" -values "connections-all"
$tree insert $parent end -id "profiles::$id" -text "ΠΡΠΎΡΠΈΠ»ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ" -values $id
}
α’αααα’αΆα αα·α αΆαααΆαααααΎαααΈαααααααααααααααΆααααΆαα’αα»ααααααΈαα·αα·ααΈααααααααααΆ αααααΆααΉαα’αΆα ααΎαααΎααααΆαα αααΆααααΈαααααααα’αααα’αΆα αααααΎαααααα·αααααΆα αα·ααααα αΆααααΆααααααααΆαααααα
αααα»αβααΈαα·αα·ααΈβααα ααΆαβααααααβαα·αβααΆαβαα·αα·αααβααααΌαβααΆαβαααααααΆαβαααβααααΆααα
αααα αΌαBaseItems
proc InsertBaseItems {tree id} {
set parent "infobase::$id"
if { [$tree exists "sessions::$id"] == 0 } {
$tree insert $parent end -id "sessions::$id" -text "Π‘Π΅Π°Π½ΡΡ" -values "$id"
}
if { [$tree exists "locks::$id"] == 0 } {
$tree insert $parent end -id "locks::$id" -text "ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ" -values "$id"
}
if { [$tree exists "connections::$id"] == 0 } {
$tree insert $parent end -id "connections::$id" -text "Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ" -values "$id"
}
}
αααααΆαα·ααΈααΆαααααααααΉαααααΌαααΆααααα
InsertProfileItems
proc InsertProfileItems {tree id} {
set parent "profile::$id"
set lst {
{dir "ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ"}
{com "Π Π°Π·ΡΠ΅ΡΡΠ½Π½ΡΠ΅ COM-ΠΊΠ»Π°ΡΡΡ"}
{addin "ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ"}
{module "ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΎΡΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ"}
{app "Π Π°Π·ΡΠ΅ΡΡΠ½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ"}
{inet "Π Π΅ΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ"}
}
foreach i $lst {
append item [lindex $i 0] "::$id"
if { [$tree exists $item] == 0 } {
$tree insert $parent end -id $item -text [lindex $i 1] -values "$id"
}
unset item
}
}
ααΆααα»αααααΆαααΆααα½αααΆααΊααΆαααααΎααααα·ααα»α αααααΆααααααααΆαααααααααΌαααΆαααααα·ααααα·α ααΎβαα·ααΈβααΆβαααα»αβααΆαβααααΎβααΊβααΆβααΆαβαααααα βα α·αααβααααβα’αααβα’αα·ααααααα
ααΎαααΆαααααααααααααΎααΆαααααααααΆαα» αα·αααΆαααΆααααα·αααααα α₯α‘αΌααααααΆαααααααααααααΌααααααααΎααΆαααααααα½αα αΎαα α αΆααααΆααααΈ ααΆααΌαααααΆα αααΆαααΆααααααααΌα ααααΆααααΌαααΆαααααΎαααααΆααααΆαααααααα½α αα·ααααααα (ααΎααααααααΌαααααΆαααααααΆα) αααααααααα’ααααΌα ααααΆααααΌαααΆαααααΎα αααα½ααααααααΆααααααΆααα α ααΈαα·αα·ααΈαααααΆααααΆαααααααααΎααα ααΌα αααα
ααααααα:$key->AddToplevel
α αΎααααααΆααααΆαααααααα½αααΌα αααα
ααααααα½αα:$key->αααααα::$key->AddTopLevel
ααΆα§ααΆα ααα α αΌαααΎαααααΎααΆαααααααα½αα ααααααα½α α§. αααα α»α ααΎαααααααααα ααααααα αααα»ααααααΆα α α»α αααΌαα»αααααααα½ααααα»ααααΆαα§ααααα (αααα αα) α αΎααααααααααααααΌαααααΆααΉαααααΌαααΆααααα αΆααα ααΎα’ααααααα
ααααααα½αα:α
ααααα
proc Edit::cluster {tree host values} {
global default lifetime_limit expiration_timeout session_fault_tolerance_level
global max_memory_size max_memory_time_limit errors_count_threshold security_level
global load_balancing_mode kill_problem_processes active_cluster
agent_user agent_pwd cluster_user cluster_pwd auth
if {$cluster_user ne "" && $cluster_pwd ne ""} {
set auth "--cluster-user=$cluster_user --cluster-pwd=$cluster_pwd"
} else {
set auth ""
}
# ΡΠΈΡΡΠ΅ΠΌ ΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
set frm [Add::cluster $tree $host $values]
# ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ Π½Π° ΠΌΠ΅ΡΠΊΠ΅
$frm configure -text "Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°"
set active_cluster $values
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ
set lst [RunCommand cluster::$values "cluster info --cluster=$active_cluster $host"]
# Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΠ»Ρ
FormFieldsDataInsert $frm $lst
# Π²ΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Ρ, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ
$frm.ent_host configure -state disable
$frm.ent_port configure -state disable
# ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
.add.frm_btn.btn_ok configure -command {
RunCommand "" "cluster update
--cluster=$active_cluster $auth
--name=[.add.frm.ent_name get]
--expiration-timeout=$expiration_timeout
--lifetime-limit=$lifetime_limit
--max-memory-size=$max_memory_size
--max-memory-time-limit=$max_memory_time_limit
--security-level=$security_level
--session-fault-tolerance-level=$session_fault_tolerance_level
--load-balancing-mode=$load_balancing_mode
--errors-count-threshold=$errors_count_threshold
--kill-problem-processes=$kill_problem_processes
$auth $host"
$tree delete "cluster::$active_cluster"
Run::server $tree $host ""
destroy .add
}
}
αααααα’ααααΎααα·ααααααα αααα»αααΌα ααΆαααααΆααα α’αααΈααααααααΆαααΊα αααΆααααΆαα ααΎααααααααΌααααααα·ααΈααααααααααααΌαα»αααααΌαααΆαααα·ααα α αΎαααΆαααΈαα·αα·ααΈ FormFieldsDataInsert ααααααααααΆαααΆαα½ααα·αααααα αα·αα αΆααααααΎαα’αααα
ααΆααααα αΌααα·αααααα FormFields
proc FormFieldsDataInsert {frm lst} {
foreach i [lindex $lst 0] {
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
if [regexp -nocase -all -- {(D+)(s*?|)(:)(s*?|)(.*)} $i match param v2 v3 v4 value] {
# ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
regsub -all -- "-" [string trim $param] "_" entry_name
# Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠΌΠΈ
if [winfo exists $frm.ent_$entry_name] {
$frm.ent_$entry_name delete 0 end
$frm.ent_$entry_name insert end [string trim $value """]
}
if [winfo exists $frm.cb_$entry_name] {
global $entry_name
set $entry_name [string trim $value """]
}
# Π΄Π»Ρ ΡΠ΅ΠΊΠ±ΠΎΠΊΡΠΎΠ² ΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
if [winfo exists $frm.check_$entry_name] {
global $entry_name
if {$value eq "0"} {
set $entry_name no
} elseif {$value eq "1"} {
set $entry_name yes
} else {
set $entry_name $value
}
}
}
}
}
αα αααα»αααΈαα·αα·ααΈααα α’ααααααααααααα½αααααα tcl ααα α‘αΎα - αααααααα’αααααααααααααααΌαααΆααααα½αααΆαααααα’αααα ααΆαααααα ααΎααααΈααααΎααααααααααααα·ααααααΆαααααααααααα αα·αααΆαα αΆααααααΎαααα’ααα αααααααααΆα αα·αα’αααααααΌαααααΆαα ααΉαααΆαααααΌααααααΆααααΆααααααααΆααα§αααααααααΎααααΆαα rac αα·αααααααααααΆαααΆααααααααααααααΆααααααααΆαααααΆαααααΈααΎαααααα½αα ααα½α - αααααΆααααΌαααΆααααα½αααααααααΆααΌααααααα α§ ααΆααα·ααΆαααΆαααΆα - ααα·ααα ααααΌααααααΆα ent_scheduled_jobs_ααα·ααα αα·αα’ααα scheduled_jobs_deny.
αααααααααααΆααααΆααααααα αα·αααΆαααααααα½αα’αΆα ααΆαααΆααα»ααααααααααΆαα αααα»ααααΆαααΆαααααΆα α§ααΆα ααα ααααΎααΆαααΆαα½αααΌαααααΆαααααααΆαα
ααΆααααααααα»ααααα·ααΆαααααααΆα
ααΆαααααααα½ααα»ααααα·ααΆαααααααΆα
αα
αααα»αααααΎαααΆαααααααα½α Edit::infobase ααΆααααααααΌαααΆαααααΌαααΆααααααααα
ααααααααΌαααΊ voluminous ααΌα
αααααααα»ααα·ααααα αΆαααΆαα
ααΈαααααα
αααααΆαααααααααααΆ ααΈαα·αα·ααΈαααααΆααααΆααααααα ααΆαααααααα½α ααΆααα»α αα·ααααααΆααααΆαα»ααααααααααααΌαααΆαα’αα»ααααα
αααααΆαααααα·ααααα·ααΆαααααα§αααααααααΎααααΆαααααααααααα ααα½ααα·αααααααααααΆαααΈααα α ααααα ααΌαααααΆαααααααΆαααα ααΎααααΈαααααααΆααΎα αααααααΆαα½αααΆαααααααΆαααΈααα α¬αααααααααα»ααααα·ααΆαααααααΆαααα α’ααααααααΆα αααΎαααααΌαααΆαααααΆα ααααααααααααΌαααΆααααααααΈαα½ααα ααααααα’αααα α»α ααΎααΆαα»ααααΎαααΎα ααΆαααααα ααααΎαααΆαααααΎαααΆαα‘αΎααα·αααΆααααααΆαα»ααααΆααα’αα α αΎααααααα’αααα
SetGlobalVarFromTreeItems
proc SetGlobalVarFromTreeItems {tree id} {
global host server active_cluster infobase
set parent [$tree parent $id]
set values [$tree item $id -values]
set key [lindex [split $id "::"] 0]
switch -- $key {
server {set host $values}
work_server {set server $values}
cluster {set active_cluster $values}
infobase {set infobase $values}
}
if {$parent eq ""} {
return
} else {
SetGlobalVarFromTreeItems $tree $parent
}
}
α ααααα 1C α’αα»ααααΆαα±ααα’αααααααΎααΆαααΆαα½α α¬ααααΆαααΆαα’αα»ααααΆαα ααΆαα’ααααααααααααααΈααααααα - α’ααααααααααααααααΆααααΆαα ααααα αα·αα’ααααααααααααα αααααα ααΌα ααααα αΎα αααααΆααααααα·ααααα·ααΆαααααΉαααααΌα α’ααααααα ααα½α 4 αααααααΌαααΆαααααΆααααααΆαααΆαα αΌα αα·αααΆααααααααΆααααααα’ααααααααααααα ααΆαααααα ααααα·αααΎααΆαααααΈα’αααααααααααααα αααα»αα ααααα αααα’ααααΉαααααΌαααΆααααα αΆαααΎααααΈαααα αΌαααΆαα αΌα αα·αααΆααααααααΆααααααα’ααα αα·ααααααααΉαααααΌαααΆααααααΆαα»ααααα»αα’αααα αα αΆα α αΎααααα αΌααα αααα»αααΆααααααααΆααΈαα½αααααααΆααα ααααααααααααΌαααααΆα
αααααΆαααα½ααα»αααααΌαααααΈαα·αα·ααΈαααααααΆαααα α»αα
ααΆααααααααα α»α
proc ErrorParcing {err opt} {
global cluster_user cluster_pwd agent_user agent_pwd
switch -regexp -- $err {
"Cluster administrator is not authenticated" {
AuthorisationDialog "ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°"
.auth_win.frm_btn.btn_ok configure -command {
set cluster_user [.auth_win.frm.ent_name get]
set cluster_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
#RunCommand $root $par
}
"Central server administrator is not authenticated" {
AuthorisationDialog "ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π°Π³Π΅Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°"
.auth_win.frm_btn.btn_ok configure -command {
set agent_user [.auth_win.frm.ent_name get]
set agent_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
}
"ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π½Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½" {
AuthorisationDialog "ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°"
.auth_win.frm_btn.btn_ok configure -command {
set cluster_user [.auth_win.frm.ent_name get]
set cluster_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
#RunCommand $root $par
}
"ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½" {
AuthorisationDialog "ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π°Π³Π΅Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°"
.auth_win.frm_btn.btn_ok configure -command {
set agent_user [.auth_win.frm.ent_name get]
set agent_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
}
(.+) {
tk_messageBox -type ok -icon error -message "$err"
}
}
}
ααΆαααααα α’αΆαααααααΎα’αααΈαααααΆααααααααΆαααα‘αααααα·α ααααα·ααααααΉααα ααΆααααα
αα αααααα αααα αα 95 ααΆααααααα»αααΆαααααΌαααΆαα’αα»αααα α αΎαα’αααΈααααα ααααααααΊααααΌαα’αα»ααααααΆαααΆαααΆαα½ααααααααα»ααααα·ααΆα α αΎαααΆαααααααΆ =)α α’ααα αΎαα αααα»αβααΌαβα’ααααααβα ααααβααΏαβαααβα ααααΌαα αααααα
ααΌαααΆαααΆαααααααΈ
ααααΎαα αα α»ααααααααΆαα αααα»αααΆααααα ααααΆαααααΎααΆαααΆαα½ααααααααα»ααααα·ααΆαα α₯α‘αΌαααααα»αααΆαααααΌαααΆαα’αα»αααα 100% α
α’αΆααααα 2α ααΆαααααΎααΌαααααΆααΈααααααα
ααΆααΆααΆα’ααααααα αα·ααα»αααααΈααααΌαααΆααααααα ααΆαααΆααα
αααα»α win7 ααααΌαααΆαααΆααααα
ααααα: www.habr.com