Re: ssh with no standard ports

2012-03-08 Thread Nuno Dias
 Hi Jean-Louis,

 Thanks, the patch solved the problem :)

Nuno

On Thu, 2012-03-08 at 08:05 -0500, Jean-Louis Martineau wrote:
> On 03/08/2012 05:42 AM, Nuno Dias wrote:
> >   Hi,
> >
> >   This is a solution for one machine, I have several machines with
> > different ports, I can create several dumptypes one for each machine,
> > but I think this is complicate the configuration ...
> >
> >   Why amanda force port 22 and do not uses the default?
> 
> You are right, this is what the attached patch do.
> 
> Jean-Louis
> >
> > Thanks
> > Nuno
> >
> > On Wed, 2012-03-07 at 13:15 -0500, Jean-Louis Martineau wrote:
> >> Add a client-port in the dumptype:
> >> client-port 5
> >>
> >> Jean-Louis
> >>
> >> On 03/07/2012 12:34 PM, Nuno Dias wrote:
> >>>Hi,
> >>>
> >>>In version 3.1.3 of amanda I used .ssh/config with a configuration like
> >>> this
> >>>
> >>> Host machine_name
> >>>   Port 5
> >>>
> >>>To do backups of a machine through a tunnel ssh.
> >>>But with version 3.3.0 this is not working anymore, what I can see in
> >>> the logs is this
> >>>
> >>> /usr/bin/ssh SSH_OPTIONS -l amanda -p 22 -i /var/lib/amanda/.ssh/id_rsa
> >>> machine_name /usr/lib64/amanda/amandad -auth=ssh
> >>>
> >>>Because the port is specified (-p 22) the port in .ssh/config it's not
> >>> used.
> >>>
> >>>This is a feature? or can I change this?
> >>>
> >>> Thanks
> >>> Nuno
> 

-- 
Nuno Dias 
LIP



Re: ssh with no standard ports

2012-03-08 Thread Jean-Louis Martineau

On 03/08/2012 05:42 AM, Nuno Dias wrote:

  Hi,

  This is a solution for one machine, I have several machines with
different ports, I can create several dumptypes one for each machine,
but I think this is complicate the configuration ...

  Why amanda force port 22 and do not uses the default?


You are right, this is what the attached patch do.

Jean-Louis


Thanks
Nuno

On Wed, 2012-03-07 at 13:15 -0500, Jean-Louis Martineau wrote:

Add a client-port in the dumptype:
client-port 5

Jean-Louis

On 03/07/2012 12:34 PM, Nuno Dias wrote:

   Hi,

   In version 3.1.3 of amanda I used .ssh/config with a configuration like
this

Host machine_name
Port 5

   To do backups of a machine through a tunnel ssh.
   But with version 3.3.0 this is not working anymore, what I can see in
the logs is this

/usr/bin/ssh SSH_OPTIONS -l amanda -p 22 -i /var/lib/amanda/.ssh/id_rsa
machine_name /usr/lib64/amanda/amandad -auth=ssh

   Because the port is specified (-p 22) the port in .ssh/config it's not
used.

   This is a feature? or can I change this?

Thanks
Nuno


diff --git a/common-src/ssh-security.c b/common-src/ssh-security.c
index a6b11be..6e3d49b 100644
--- a/common-src/ssh-security.c
+++ b/common-src/ssh-security.c
@@ -114,7 +114,7 @@ ssh_connect(
 int result;
 struct sec_handle *rh;
 char *amandad_path=NULL, *client_username=NULL, *ssh_keys=NULL;
-char *client_port = "22";
+char *client_port = NULL;
 
 assert(fn != NULL);
 assert(hostname != NULL);
@@ -303,6 +303,10 @@ runssh(
 char *xclient_username = (char *)client_username;
 char *xssh_keys = (char *)ssh_keys;
 char *xclient_port = (char *)client_port;
+GPtrArray *myargs;
+gchar *ssh_options[100] = {SSH_OPTIONS, NULL};
+gchar **ssh_option;
+gchar *cmd;
 
 memset(rpipe, -1, sizeof(rpipe));
 memset(wpipe, -1, sizeof(wpipe));
@@ -317,18 +321,31 @@ runssh(
 if(!xclient_username || strlen(xclient_username) <= 1)
 	xclient_username = CLIENT_LOGIN;
 if(!xclient_port || strlen(xclient_port) <= 1)
-	xclient_port = "22";
+	xclient_port = NULL;
 
-if(!ssh_keys || strlen(ssh_keys) <= 1) {
-	g_debug("exec: %s %s %s %s %s %s %s %s %s",
-		SSH, "SSH_OPTIONS", "-l", xclient_username, "-p", client_port,
-	rc->hostname, xamandad_path, "-auth=ssh");
+myargs = g_ptr_array_sized_new(20);
+g_ptr_array_add(myargs, SSH);
+for (ssh_option = ssh_options; *ssh_option != NULL; ssh_option++) {
+	g_ptr_array_add(myargs, *ssh_option);
 }
-else {
-	g_debug("exec: %s %s %s %s %s %s %s %s %s %s %s",
-		SSH, "SSH_OPTIONS", "-l", xclient_username, "-p", client_port,
-	"-i", xssh_keys, rc->hostname, xamandad_path, "-auth=ssh");
+g_ptr_array_add(myargs, "-l");
+g_ptr_array_add(myargs, xclient_username);
+if (xclient_port) {
+	g_ptr_array_add(myargs, "-p");
+	g_ptr_array_add(myargs, xclient_port);
 }
+if (ssh_keys && strlen(ssh_keys) > 1) {
+	g_ptr_array_add(myargs, "-i");
+	g_ptr_array_add(myargs, xssh_keys);
+}
+g_ptr_array_add(myargs, rc->hostname);
+g_ptr_array_add(myargs, xamandad_path);
+g_ptr_array_add(myargs, "-auth=ssh");
+g_ptr_array_add(myargs, NULL);
+
+cmd = g_strjoinv(" ", (gchar **)myargs->pdata);
+g_debug("exec: %s", cmd);
+g_free(cmd);
 
 switch (rc->pid = fork()) {
 case -1:
@@ -356,15 +373,8 @@ runssh(
 
 safe_fd(-1, 0);
 
-if(!ssh_keys || strlen(ssh_keys) <= 1) {
-	execlp(SSH, SSH, SSH_OPTIONS, "-l", xclient_username, "-p", client_port,
-	   rc->hostname, xamandad_path, "-auth=ssh", (char *)NULL);
-}
-else {
-	execlp(SSH, SSH, SSH_OPTIONS, "-l", xclient_username, "-p", client_port,
-	   "-i", xssh_keys, rc->hostname, xamandad_path, "-auth=ssh",
-	   (char *)NULL);
-}
+execvp(SSH, (gchar **)myargs->pdata);
+
 error("error: couldn't exec %s: %s", SSH, strerror(errno));
 
 /* should never go here, shut up compiler warning */


Re: ssh with no standard ports

2012-03-08 Thread Nuno Dias
 Hi,

 This is a solution for one machine, I have several machines with
different ports, I can create several dumptypes one for each machine,
but I think this is complicate the configuration ...

 Why amanda force port 22 and do not uses the default?

Thanks
Nuno

On Wed, 2012-03-07 at 13:15 -0500, Jean-Louis Martineau wrote:
> Add a client-port in the dumptype:
>client-port 5
> 
> Jean-Louis
> 
> On 03/07/2012 12:34 PM, Nuno Dias wrote:
> >   Hi,
> >
> >   In version 3.1.3 of amanda I used .ssh/config with a configuration like
> > this
> >
> > Host machine_name
> > Port 5
> >
> >   To do backups of a machine through a tunnel ssh.
> >   But with version 3.3.0 this is not working anymore, what I can see in
> > the logs is this
> >
> > /usr/bin/ssh SSH_OPTIONS -l amanda -p 22 -i /var/lib/amanda/.ssh/id_rsa
> > machine_name /usr/lib64/amanda/amandad -auth=ssh
> >
> >   Because the port is specified (-p 22) the port in .ssh/config it's not
> > used.
> >
> >   This is a feature? or can I change this?
> >
> > Thanks
> > Nuno
> 

-- 
Nuno Dias 
LIP



Re: ssh with no standard ports

2012-03-07 Thread Jean-Louis Martineau

Add a client-port in the dumptype:
  client-port 5

Jean-Louis

On 03/07/2012 12:34 PM, Nuno Dias wrote:

  Hi,

  In version 3.1.3 of amanda I used .ssh/config with a configuration like
this

Host machine_name
Port 5

  To do backups of a machine through a tunnel ssh.
  But with version 3.3.0 this is not working anymore, what I can see in
the logs is this

/usr/bin/ssh SSH_OPTIONS -l amanda -p 22 -i /var/lib/amanda/.ssh/id_rsa
machine_name /usr/lib64/amanda/amandad -auth=ssh

  Because the port is specified (-p 22) the port in .ssh/config it's not
used.

  This is a feature? or can I change this?

Thanks
Nuno




ssh with no standard ports

2012-03-07 Thread Nuno Dias
 Hi,

 In version 3.1.3 of amanda I used .ssh/config with a configuration like
this

Host machine_name
Port 5

 To do backups of a machine through a tunnel ssh.
 But with version 3.3.0 this is not working anymore, what I can see in
the logs is this

/usr/bin/ssh SSH_OPTIONS -l amanda -p 22 -i /var/lib/amanda/.ssh/id_rsa
machine_name /usr/lib64/amanda/amandad -auth=ssh

 Because the port is specified (-p 22) the port in .ssh/config it's not
used.

 This is a feature? or can I change this?

Thanks
Nuno
-- 
Nuno Dias 
LIP