PLEASE HELP Trying to use SSH programmatically to run program on remote host

C

cpptutor2000

Could some C guru help me please? I am using the following program to
open a SSH connection to a remote host and eventually run a program on
that remote host.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
char command[50];

if(argc < 4){
printf("user name and/or remote host name and/or");
printf(" directory name not supplied\n");
printf("usage: ./argtest <username> <hostname> <remote directory
name>\n");
exit(0);
}

sprintf(command, "ssh %s@%s \"cd %s;\"", argv[1], argv[2], argv[3]);
/* printf("%s\n", command); */
system(command);

return 0;
}

After compilation, I use the command line arguments as follows:
../argtest dixit linux02.phy.utexas.edu
/home/phy/students/dixit/txtfiles
I get the following response:

Warning: the RSA host key for 'linux02.phy.utexas.edu' differs from the
key for the IP address '128.83.59.122'
Offending key for IP in /home/phy/students/dixit/.ssh/known_hosts:1
Matching host key in /home/phy/students/dixit/.ssh/known_hosts:5
Are you sure you want to continue connecting (yes/no)? yes
(e-mail address removed)'s password:
Memory fault(coredump)

Could someone please point out what the problem is, that is causing the
coredump, and how to
fix it? I mean, if I just login to the remote machine, then there is no
problem at all, but if I attempt
to go some particular directory, I get this stupid core dump.

Moreover, if I can get into the remote machine and type in 'hostname
-v' I get the name of the local host, NOT the remote machine.

Thanks in advance for your help.
 
B

Bill Latvin

Could some C guru help me please? I am using the following program to
open a SSH connection to a remote host and eventually run a program on
that remote host.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
char command[50];

if(argc < 4){
printf("user name and/or remote host name and/or");
printf(" directory name not supplied\n");
printf("usage: ./argtest <username> <hostname> <remote directory
name>\n");
exit(0);
}

sprintf(command, "ssh %s@%s \"cd %s;\"", argv[1], argv[2], argv[3]);
/* printf("%s\n", command); */
system(command);

return 0;
}

After compilation, I use the command line arguments as follows:
./argtest dixit linux02.phy.utexas.edu
/home/phy/students/dixit/txtfiles
I get the following response:

Warning: the RSA host key for 'linux02.phy.utexas.edu' differs from the
key for the IP address '128.83.59.122'
Offending key for IP in /home/phy/students/dixit/.ssh/known_hosts:1
Matching host key in /home/phy/students/dixit/.ssh/known_hosts:5
Are you sure you want to continue connecting (yes/no)? yes
(e-mail address removed)'s password:
Memory fault(coredump)

Could someone please point out what the problem is, that is causing the
coredump, and how to
fix it? I mean, if I just login to the remote machine, then there is no
problem at all, but if I attempt
to go some particular directory, I get this stupid core dump.

Moreover, if I can get into the remote machine and type in 'hostname
-v' I get the name of the local host, NOT the remote machine.

Thanks in advance for your help.

It looks like sprintf will be trying to place more characters in
"command" than sizeof(command).

Also, it sounds like you are not aware that if you specify a command
as an argument of ssh (cd in this case), ssh will end the remote
session after running the command. It sounds like you expect it to
stay connected in a shell session. If you have a questions about ssh,
this is not the appropriate newsgroup.

Bill Latvin
 
W

Why Tea

Perhaps you should try Expect scripts rather than write your own tool
using C.

/Why Tea
 
T

thisisnee

Hi
edit file /home/phy/students/dixit/.ssh/known_hosts
remove everything from it ,
then it will work ,

bye
 
K

Keith Thompson

edit file /home/phy/students/dixit/.ssh/known_hosts
remove everything from it ,
then it will work ,

Since you didn't provide any context, we can't necessarily tell what
you're talking about. Please read <http://cfaj.freeshell.org/google/>.

I happen to know that your suggested solution will not necessarily
work, depending on some details of the configuration. I won't go into
details here, since they're off-topic. This is why we try to
discourage off-topic discussions here; it's far too easy for
misinformation to go uncorrected.

If you want to discuss ssh, please post to comp.security.ssh, not here.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,479
Members
44,900
Latest member
Nell636132

Latest Threads

Top