sleepy Posted December 5, 2006 Posted December 5, 2006 From Harry Nash New user! Hello, I use autoit to access an open putty ssh shell as well as windows command terminals. I am able to send in the window a command I just can find a receive function or read from terminal fuction. Currently I am sending commands to a lynux system that runs a test, I won't know when it is finished. I tried winGetText I only see a 0 returned.
herewasplato Posted December 5, 2006 Posted December 5, 2006 I've not used it, but maybe the script attached to this tread:http://www.autoitscript.com/forum/index.php?showtopic=12308 [size="1"][font="Arial"].[u].[/u][/font][/size]
bdb4269 Posted July 26, 2007 Posted July 26, 2007 (edited) I was having a hard time finding easy to understand info (for a newbie) for how to send and receive stuff from a SSH session, so I decided I would post this for other newb's like me to find. This is how I ended up handling it. I used plink.exe (command line version of PuTTY) NOTE: This is by no means, necessarily the best way. But easy to understand and use for newb's. IMHO expandcollapse popup;this runs plink in a command window, and provides a handle that can be used for Stdin, Stdout, and Stderr $plinkhandle = Run(@comspec & ' /c x:\plink.exe -ssh 192.168.202.231 ','',@SW_HIDE,7) $username = InputBox("username","Enter username") $password = InputBox("password","Enter password",'','*') ;waits for "login" While 1 $text = StdoutRead($plinkhandle) $oktogo = StringRegExp($text,".*login.*") If $oktogo = 1 Then ExitLoop Wend ;For some reason I had to put a space after each because the last character was being cut off. ;But only on the login part, after that it worked fine with no extra space. StdinWrite($plinkhandle, $username & " " & @CR) ;waits for "password" While 1 $text = StdoutRead($plinkhandle) $oktogo = StringRegExp($text,".*password.*") If $oktogo = 1 Then ExitLoop Wend ;For some reason I had to put a space after each because the last character was being cut off. ;But only on the login part, after that it worked fine with no extra space. StdinWrite($plinkhandle, $password & " " & @CR) ;I have some stuff in my login script that I normall press enter (to accept default) a few times to get to my actual prompt ;so this block is just hitting enter until I get to /home/username ;note: if you use a while block that keeps Stdoutread'ing it splits up all the output ;If you for instance wanted to see all what was displayed during the while block you ;could un-comment the lines of code below - to pile it into $fulltext, each time you read ;Dim $fulltext While 1 StdinWrite($plinkhandle, @CR) Sleep(100) $text = StdoutRead($plinkhandle) ;$fulltext = $fulltext & @CRLF & $text $oktogo = StringRegExp($text,".*home.*") If $oktogo = 1 Then ExitLoop Wend ;MsgBox(0, "Display", $Fulltext) ;I had to set terminal to "dumb" to make it work well StdinWrite($plinkhandle,"setenv TERM dumb" & @CR) While 1 $text = StdoutRead($plinkhandle) $oktogo = StringRegExp($text,".*home.*") If $oktogo = 1 Then ExitLoop Wend StdinWrite($plinkhandle,"cd ./scripts" & @CR) Sleep(500) $text = StdoutRead($plinkhandle) ;I do this to "clear" the output - otherwise, when I do it below ;to see the output of my script - it includes the typing of, and the output from the cd ./scripts too. StdinWrite($plinkhandle,"script.to.run.csh" & @CR) Sleep(1000) ;As a side note I noticed, I needed to sleep for about 100-1000 after StdinWrite before using StdoutRead ;(even for something nearly instant like "cd ./scripts" and having a while block to wait for the prompt) ;or else it did not catch the output from that latest command. $text = StdoutRead($plinkhandle) MsgBox(0, "Output from script.to.run.csh", $text) ;note: since I just sleep'd instead of a while loop Stdoutread'ing all the ;mutli line output "piled up" and could be ready with a single Stdoutread. ;This will also include the prompt your left at after the command runs. ;I don't yet know easy wat to cut this off, because I dont care enough for my purposes ;to figure it out StdinWrite($plinkhandle,"logout" & @CR) ;It's also worth noting that ;$text = StdoutRead($plinkhandle) ;when there is no new data in Stdout seems to lock-up the script Edited July 26, 2007 by bdb4269
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now