Jump to content

executing commands with arrays


wi1d
 Share

Recommended Posts

For the life of me I can't figure out what I'm doing wrong here. I'm wanting to be able to set up a console that launches commands. Everything seems to be working fine with one exception. I'm having trouble feeding the $host variable as a parameter into the commands.

I've added msgbox's to echo $host and it turns out that the variable is being set correctly but when the command is executed it can't read $host.

I know for fact my parameters for the vncviewer.exe are correct. Also, psshutdown logs off localhost when executed. Again this makes me think that $host isn't being read. B)

Anyone suggestions would be greatly apprecaited since I'm about to pull out what hair I have left. Thanks.

#include <GUIConstants.au3>
AutoItSetOption ("TrayIconHide", 1); hide tray icon
; Variables
Dim $installDir, $binDir, $vncPasswd
Global $host
$installDir = "C:\Program Files\AdminConsole"
$binDir = $installDir & "\bin"
$vncPasswd = ""

;; Arrays
Dim $cmdCheckbox[39],$cmd[39]
$cmdCheckbox[0] = 38
$cmd[0] = 38

;; Commands
$cmd[1] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd 
$cmd[2] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd & " -viewonly"
$cmd[3] = $binDir & "\psshutdown.exe -o -f " & $host
$cmd[4] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd & " -viewonly"; filler
$cmd[5] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd & " -viewonly"; filler

;                                                     W , H , X, Y  
GUICreate("Administrative Console v0.1",550,242,-1,-1,BitOr($WS_MINIMIZEBOX,$WS_MAXIMIZEBOX,$WS_GROUP,$WS_CAPTION,$WS_POPUP,$WS_SYSMENU))

; main tree structure & items
$maintree = GUICtrlCreateTreeView (10,10,145,180)
$aboutItem = GUICtrlCreateTreeViewItem ("About",$maintree)
$lawyersItem = GUICtrlCreateTreeViewItem ("Lawyers",$maintree)
$adminItem = GUICtrlCreateTreeViewItem ("Administration",$maintree)
$piItem = GUICtrlCreateTreeViewItem ("Personal Injury",$maintree)
$paralegalsItem = GUICtrlCreateTreeViewItem ("Paralegals",$maintree)
$receptionistItem = GUICtrlCreateTreeViewItem ("Receptionist",$maintree)
$helpItem = GUICtrlCreateTreeViewItem ("Help",$maintree)

$l1 = GUICtrlCreateTreeViewItem ("L1",$lawyersItem)
$l2 = GUICtrlCreateTreeViewItem ("L2",$lawyersItem)
$l3 = GUICtrlCreateTreeViewItem ("L3",$lawyersItem)
$l4 = GUICtrlCreateTreeViewItem ("L4",$lawyersItem)


$a1 = GUICtrlCreateTreeViewItem ("A1",$adminItem)
$a2 = GUICtrlCreateTreeViewItem ("A2",$adminItem)
$a3 = GUICtrlCreateTreeViewItem ("A3",$adminItem)

$descGroup = GUICtrlCreateGroup ("Description",180,145,180,55); X,Y,W,H
GUICtrlSetState (-1,$GUI_HIDE)
    
$commandsGroup = GUICtrlCreateGroup ("Commands",180,10,180,135)
GUICtrlSetState (-1,$GUI_HIDE)

; Lawyer Tree structure (This is where the commands will go.)
$commandsTree = GUICtrlCreateTreeView (190,30,160,100,BitOr($TVS_CHECKBOXES,$TVS_DISABLEDRAGDROP),$WS_EX_CLIENTEDGE); X,Y,W,H
GUICtrlSetState (-1,$GUI_HIDE)
$cmdCheckbox[1] = GUICtrlCreateTreeViewItem ("VNC - Interactive",$commandsTree)
$cmdCheckbox[2] = GUICtrlCreateTreeViewItem ("VNC - View-only",$commandsTree)
$cmdCheckbox[3] = GUICtrlCreateTreeViewItem ("Logoff",$commandsTree)
$cmdCheckbox[4] = GUICtrlCreateTreeViewItem ("Reboot",$commandsTree)
$cmdCheckbox[5] = GUICtrlCreateTreeViewItem ("Shutdown",$commandsTree)

; Labels and buttons
$startlabel = GUICtrlCreateLabel ("Administrative Console v0.1" & @CRLF & @CRLF & _
    "Written by Glen Smith" & @CRLF & @CRLF & "The purpose of this program is to create an" & _
    " easy to use interface for the facilitation of technical administrative task around" & _
    " the office.",275,52,175,110)
$lawyersLabel = GUICtrlCreateLabel ("Lawyer's Group" & @CRLF & @CRLF & "This group contain several" & _
        " task to control the computers for the Lawyer's Group.",175,10,200,110)
GUICtrlSetState (-1,$GUI_HIDE)
$adminLabel = GUICtrlCreateLabel ("Admin's Group" & @CRLF & @CRLF & "This group contain several" & _
        " task to control the computers for the Admin's Group.",175,10,200,110)
GUICtrlSetState (-1,$GUI_HIDE)
$okbutton = GUICtrlCreateButton ("Execute",10,200,70,20)
$cancelbutton = GUICtrlCreateButton ("Exit",90,200,70,20)

; Gui message loop
GUISetState()

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $cancelbutton Or $msg = $GUI_EVENT_CLOSE
            ExitLoop
        
        Case $msg = $maintree
            GUIctrlSetState ($commandsTree,$GUI_HIDE)
            GUIctrlSetState ($commandsGroup,$GUI_HIDE)
            GUIctrlSetState ($descGroup,$GUI_HIDE)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_SHOW)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)

        Case $msg = $aboutItem
            GUIctrlSetState ($commandsTree,$GUI_HIDE)
            GUIctrlSetState ($commandsGroup,$GUI_HIDE)
            GUIctrlSetState ($descGroup,$GUI_HIDE)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_SHOW)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)

        Case $msg = $l1
            GUIctrlSetState ($commandsTree,$GUI_SHOW)
            GUIctrlSetState ($commandsGroup,$GUI_SHOW)
            GUIctrlSetState ($descGroup,$GUI_SHOW)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_HIDE)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)
            $host = "l1"

        Case $msg = $l2
            GUIctrlSetState ($commandsTree,$GUI_SHOW)
            GUIctrlSetState ($commandsGroup,$GUI_SHOW)
            GUIctrlSetState ($descGroup,$GUI_SHOW)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_HIDE)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)
            $host = "l2"

        Case $msg = $l3
            GUIctrlSetState ($commandsTree,$GUI_SHOW)
            GUIctrlSetState ($commandsGroup,$GUI_SHOW)
            GUIctrlSetState ($descGroup,$GUI_SHOW)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_HIDE)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)

        Case $msg = $l4
            GUIctrlSetState ($commandsTree,$GUI_SHOW)
            GUIctrlSetState ($commandsGroup,$GUI_SHOW)
            GUIctrlSetState ($descGroup,$GUI_SHOW)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_HIDE)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)

        Case $msg = $lawyersItem
            GUIctrlSetState ($commandsTree,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_HIDE)
            GUIctrlSetState ($commandsGroup,$GUI_HIDE)
            GUIctrlSetState ($descGroup,$GUI_HIDE)
            GUIctrlSetState ($lawyersLabel,$GUI_SHOW)
            GUIctrlSetState ($adminLabel,$GUI_HIDE)
        
        Case $msg = $adminItem
            GUIctrlSetState ($commandsTree,$GUI_HIDE)
            GUIctrlSetState ($startLabel,$GUI_HIDE)
            GUIctrlSetState ($commandsGroup,$GUI_HIDE)
            GUIctrlSetState ($descGroup,$GUI_HIDE)
            GUIctrlSetState ($lawyersLabel,$GUI_HIDE)
            GUIctrlSetState ($adminLabel,$GUI_SHOW)

        Case $msg = $helpItem
        MsgBox(0, "How to use Administrative Console", "1. Click your the group you wish to administrate." & @CRLF _
                 & "2. Use the tree menu in the left field to select the machine/user." & @CRLF _
                 & "3. Select the desired command in the list on the right." & @CRLF _
                 & "4. Click the Execute button to execute that command" & @CRLF _
                 & "" & @CRLF & " If you do not wish to make a choice, click the exit button.")

        Case $msg = $okbutton ; running the checked commands
          For $i = 1 to $cmdCheckbox[0]
                  If (BitAnd(GUICtrlRead($cmdCheckbox[$i]),$GUI_CHECKED)) Then RunWait($cmd[$i])
            Next
        Case Else

    EndSelect
Wend
Link to comment
Share on other sites

Welcome to the forums!

If you place a MsgBox() displaying the content of the $host variable before these lines:

;; Commands
$cmd[1] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd 
$cmd[2] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd & " -viewonly"
$cmd[3] = $binDir & "\psshutdown.exe -o -f " & $host
$cmd[4] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd & " -viewonly"; filler
$cmd[5] = $binDir & "\vncviewer.exe -connect " & $host & " -password " & $vncPasswd & " -viewonly"; filler

then you will find that $host is not set at that point. There's your problem.

What you need to do is ensure that $host is set to the correct value before attempting to use its content in another place. This will require a small amount of code rewriting.

Edited by LxP
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...