############################################################################## # # turn on "Applications" menu # .title.apps configure \ -state normal .title.apps.menu add cascade \ -label "View password/Group file" \ -menu [set menu .title.apps.menu.viewpasswd] menu $menu $menu add command \ -label "Password file" \ -command "sysadmin_viewpw_passwd {/etc/passwd display}" $menu add command \ -label "Group file" \ -command "sysadmin_viewpw_group {/etc/group display}" ############################################################################## # # Look at the group file # proc sysadmin_viewpw_group { title } { global group_count global group global group_x set group_count 0 set fh [open /etc/group r] while {! [eof $fh]} { gets $fh text set group($group_count) $text incr group_count } close $fh sysadmin_proc_mkmsg "" set w .sf catch { destroy $w } toplevel $w wm title $w $title # wm iconbitmap $w @$snmptcl_icon frame $w.f \ -relief flat \ -borderwidth 10 pack append $w.f \ [canvas $w.f.c \ -width 600 \ -height 200 \ -borderwidth 2 \ -scrollregion "0 0 600 200" \ -relief sunken] \ {left} \ [scrollbar $w.f.sb \ -relief sunken \ -width 10 \ -command "sysadmin_scroll_group $w.f.c $w.f.sb"] \ {right fill} for {set ix 0} {$ix < 10} {incr ix} { set pos [expr $ix*20] set group_x($ix,text) \ [$w.f.c create text 5 [expr $pos+3]\ -text $group($ix) \ -anchor nw \ -tag text] } $w.f.sb set $group_count 10 0 10 frame $w.bot \ -borderwidth 1 pack append $w.bot \ [button $w.bot.button \ -command "destroy $w" \ -text Dismiss] \ {top padx 5 pady 5 expand} pack append $w \ $w.f {top expand filly} \ $w.bot {bottom fill} } ############################################################################## proc sysadmin_scroll_group { win sb num } { global group_count global group global group_x if {$num < 0} \ {set num 0} if {[expr $num+10] > $group_count} \ {set num [expr $group_count - 11]} for {set ix 0} {$ix < 10} {incr ix} { set new [expr $ix+$num] $win itemconfigure $group_x($ix,text) \ -text $group($new) $sb set $group_count 10 $num [expr $num + 10] update idletasks } } ############################################################################## # # Look at the passwd file # proc sysadmin_viewpw_passwd { title } { global passwd_count global passwd global passwd_x set passwd_count 0 set fh [open /etc/passwd r] while {! [eof $fh]} { gets $fh text set passwd($passwd_count) $text incr passwd_count } close $fh sysadmin_proc_mkmsg "" set w .sf catch { destroy $w } toplevel $w wm title $w $title # wm iconbitmap $w @$snmptcl_icon frame $w.f \ -relief flat \ -borderwidth 10 pack append $w.f \ [canvas $w.f.c \ -width 600 \ -height 200 \ -borderwidth 2 \ -scrollregion "0 0 600 [expr $passwd_count*20]" \ -relief sunken] \ {left} \ [scrollbar $w.f.sb \ -relief sunken \ -width 10 \ -command "sysadmin_scroll_passwd $w.f.c $w.f.sb"] \ {right fill} frame $w.bot \ -borderwidth 1 pack append $w.bot \ [button $w.bot.button \ -command "destroy $w" \ -text Dismiss] \ {top padx 5 pady 5 expand} pack append $w \ $w.f {top expand filly} \ $w.bot {bottom fill} for {set ix 0} {$ix < 10} {incr ix} { set pos [expr $ix*20] set passwd_x($ix,text) \ [$w.f.c create text 5 [expr $pos+3]\ -text $passwd($ix) \ -anchor nw \ -tag text] } $w.f.sb set $passwd_count 10 0 10 } ############################################################################## proc sysadmin_scroll_passwd { win sb num } { global passwd_count global passwd global passwd_x if {$num < 0} \ {set num 0} if {[expr $num + 10] > $passwd_count} \ {set num [expr $passwd_count - 11]} for {set ix 0} {$ix < 10} {incr ix} { set new [expr $ix + $num] $win itemconfigure $passwd_x($ix,text) \ -text $passwd($new) $sb set $passwd_count 10 $num [expr $num + 10] update idletasks } } ############################################################################## ### END