Jump to content

StdoutRead Use with SSH CMS


Recommended Posts

Hey Guys,


I have a (i think) simple question, but i can't seem to get the answer though the help-files.
Hope that you can help me with this issue.

- I am opening a SSH Connection with the following function

Func _Connect($session,$usr,$pass)
    $exec = @ScriptDir & "\PLINK.EXE"
    If Not FileExists($exec) Then _Err("PLINK.EXE Not Found!",0)

       $pid = Run($exec & " -load " & $session & " -l " & $usr & " -pw " & $pass, @ScriptDir, @SW_HIDE, 0x1 + 0x8)  ;Run SSH.EXE

    If Not $pid Then _Err("Failed to connect",0)
    $currentpid = $pid
    ;$rtn = _Read($pid)  ;Check for Login Success - Prompt
    ;MsgBox(48,"","1")
    ;sleep(5000) ;Wait for connection
    Return $pid
EndFunc

- This will connect to a CMS Server with a vt100 interface where a dynamic report is generated every 20 seconds.

- Then i will read the contents with the following Function

Func _Read($pid)
    $SSHREADTIMEOUT = 0
    If Not $pid Then Return -1
    Local $dataA
    Local $dataB
    Do
        $SSHREADTIMEOUT += 1
        $dataB = $dataA
        sleep(100)
        $dataA &= StdOutRead($pid)
        If @error Then ExitLoop
    Until ($dataB = $dataA And $dataA And $dataB) OR $SSHREADTIMEOUT == 50
    Return $dataA
EndFunc

This all goes correctly, but i can only read the contents once.
When i try to read the contents again i get nothing.

Maybe because the CMS isn't changing, but the values in the report is changing every 20 seconds.

I need to somehow read al of the contents every time i perform a Read action, but how?

Yes, i can use it in a While loop, but also then i get nothing or a small line of text and not the whole report.

 

Any Idea?

 

Thanks Guys! :)

 

--Edit--

I have fixed the problem by changing the terminal session to a vt220 session.
The only problem now is that i want to send the: "Data link escape" command and that is something i cannot fix,.

I have tried;

StdinWrite($Pid,Hex(0x10))
StdinWrite($Pid,Chr(16))
StdinWrite($Pid,{DLE})

But nothing seems to work.

 

-- Edit-2 --

Guys, fixed that too!
Forgot to add the number '5' to actually execute the assignment.
So fixed it by using;
 

StdinWrite($Pid,Chr(16))
StdinWrite($Pid,"5")


Thanks for reading with me :)
 

Edited by Blueman
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

×
×
  • Create New...