[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: question on non interactive execution
[Thread Prev] | [Thread Next]
[Date Prev] | [Date Next]
- Subject: Re: question on non interactive execution
- From: Andreas Schneider <asn@xxxxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 29 Feb 2012 10:31:11 +0100
- To: libssh@xxxxxxxxxx
On Wednesday 29 February 2012 06:43:36 you wrote: > So I wrote a function that takes a channel, command and filename and runs a > ssh_channel_remote_exec on the channel with the command, and dumps the > output in the given file. > > int ssh_library_remote_cmd_to_file(ssh_channel channel, const char *cmd, > const char *filename) > { > char buffer[256]; > int nbytes; > int rc; > > if (!filename || !cmd || !ssh_channel_is_open(channel)) > return SSH_ERROR; > > rc = ssh_channel_request_exec(channel, cmd); > if (rc == SSH_OK) { > FILE *fp = fopen(filename, "w"); > > if (!fp) > return SSH_ERROR; > > nbytes = ssh_channel_read(channel, buffer, sizeof(buffer), 0); > > while (nbytes > 0 && ssh_channel_is_open(channel) && > nbytes != SSH_ERROR && !ssh_channel_is_eof(channel)) > { > write(1, buffer, nbytes); > fwrite(buffer, sizeof(buffer[0]), > sizeof(buffer)/sizeof(buffer[0]),$ nbytes = ssh_channel_read(channel, > buffer, sizeof(buffer), 0); } > fclose(fp); > if (nbytes < 0) > return SSH_ERROR; > } > return SSH_OK; > } > > > It works fine the first time it is called, but does not work when called a > second time. I have tried using the same channel, using different channels > that are part of the same session, and using different channels on > different sessions. The last instance really surprises me. After you have successfully executed the command you have to close the channel. See our tutorial at: http://api.libssh.org/stable/libssh_tutor_command.html Cheers, -- andreas -- Andreas Schneider GPG-ID: F33E3FC6 www.cryptomilk.org asn@xxxxxxxxxxxxxx
question on non interactive execution | "Snoke, Nancy Meares" <snoke1@xxxxxxxxxxxx> |