[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Multiple calls to channel_request_exec()
[Thread Prev] | [Thread Next]
- Subject: Re: Multiple calls to channel_request_exec()
- From: Mark Hessling <mark@xxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Thu, 25 Feb 2010 19:34:05 +1000
- To: libssh@xxxxxxxxxx
Thanks for the clarification and the options. - execute several commands; can't do this as I need to test result/output of each command before determining what commands to execute next - start a scripting language; my intent is to provide a Rexx interface to libssh to simplify the interaction with the server So basically if I use channel_request_shell() then the environment on the server will be retained between subsequent calls to channel_request_shell() ? I don't fully understand the statement(s) about not being able to parse the $ or # prompts (or in the previous email; "you must know shell prompt before you begin communication". Is this because the shell prompt is included in the contents of channel_read() ? Thanks, Mark On Thu, 2010-02-25 at 10:19 +0100, Aris Adamantiadis wrote: > Hi, > > Indeed, you can execute only one command using channel_request_exec. But > you may either > > -execute several commands > -start a scripting language > example: > channel_request_exec(channel,"cd /tmp; mkdir mytest; cd mytest; touch > mytest"); > This will be executed as only one shell command. Another solution is > // Do NOT put the channel into interactive mode/pty > channel_request_shell(channel); > channel_write(channel,"cd /tmp ; echo OK"); > channel_read(...) > channel_write(channel,"mkdir mytest ; echo OK"); > ... > basicaly that's like a shell script. Do not expect being able to parse > the "#" or "$" prompts, it won't work... > > hope this helps. > > Aris > > Mark Hessling a écrit : > > I'm looking at libssh to enable the replacement of an existing > > application that uses raw sockets to control a telnet session. In future > > the connection must be done using ssh. > > > > I tried modifying examples/exec.c and duplicated the block of code that > > calls channel_request_exec() to execute "ps aux" and to read the output. > > I simply added a call to channel_request_exec() to execute "ls -l", but > > I received an error: "Channel exec request failed". > > > > Should I be able to with libssh, execute a shell command on the remote > > host, read its output and execute another shell command and read its > > output? > > > >>From my reading of the documentation it appears that each call to > > channel_request_exec() spawns another shell on the remote server, so if > > I wanted to execute the following on the remote server: > > "cd tmp" > > "./run_my_command" > > then the second command would not be executed in the "tmp" directory. > > > > Does libssh then need a "changedirectory" function similar to the one > > that sets environment variables? > > > > Thanks in advance for your responses. > > > > -- * Mark Hessling, mark@xxxxxxxx http://www.rexx.org/ * Author of THE, a Free XEDIT/KEDIT editor, Rexx/SQL, Rexx/CURL, etc. * Maintainer of Regina Rexx interpreter and Rexx/Tk * Use Rexx? join the Rexx Language Association: http://www.rexxla.org/
Re: Multiple calls to channel_request_exec() | Stephan Kountso <steplg@xxxxxxxxx> |
Multiple calls to channel_request_exec() | Mark Hessling <mark@xxxxxxxx> |
Re: Multiple calls to channel_request_exec() | Aris Adamantiadis <aris@xxxxxxxxxxxx> |