[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Simple non-interactive shell


On Monday, 25 November 2019 12:04:37 CET Aloys Delobel wrote:
> Hi everybody,
> I'm trying to set a simple non-interactive shell, between my program (which
> sends commands to the remote shell) and the server. Here's my program :
> 
> int pass_instruction(ssh_channel channel, int commandcode, std::string
> filename){ std::string command;
>     if (commandcode == MV_FILE){
>         command = "cp repository/" + filename + " onthego/" ;
> 
>         rc = ssh_channel_write(channel, command.c_str(), sizeof(command));
>         if (rc != sizeof(command)){
>             std::cout << rc;
>             return rc;
>         }
>     }
>     return SSH_OK;
> }
> 
> int main () {
>     int rc(0);
>     ssh_session session;
>     ssh_channel channel;
>     // skip the setting of session
> 
>     channel = ssh_channel_new(session);
>     if (channel == NULL) return SSH_ERROR;
> 
>     rc = ssh_channel_open_session(channel);
>     if (rc != SSH_OK){
>         ssh_channel_free(channel);
>         return rc;
>     }
> 
>     rc = ssh_channel_request_shell(channel);
>     if (rc != SSH_OK){
>         ssh_channel_free(channel);
>         return rc;
>     }
> 
>     rc = pass_instruction(channel, MV_FILE, "example.txt");
>     if (rc != SSH_OK) {
>         return -1;
>     }
> 
>    rc = pass_instruction(channel, MV_FILE, "example2.txt") ;
>    if (rc != SSH_OK) {
>         return -1;
>     }
>     // Delete / close / ... channel then session
>     return 0;
> }
> 
> And the problem is : the line "pass_instruction(channel, MV_FILE,
> "example.txt");" works and copy the file, then the
> "pass_instruction(channel, MV_FILE, "example2.txt") ;" works according to
> the program, but the file is not copied. I don't understand why...

This only write to the channel, you also need to read and check that the 
command has been successfully executed before sending the next.


	andreas

-- 
Andreas Schneider                 asn@xxxxxxxxxxxxxx
GPG-ID:     8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D



References:
Simple non-interactive shellAloys Delobel <aloysdelobel@xxxxxxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org