[DRBD-user] IP 192.168.1.2 not found on this host.

Ron O'Hara rono at sentuny.com.au
Tue Apr 27 16:59:53 CEST 2004

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


Why not use 'which' to check if 'ip' is installed, and then if 
'ifconfig' is installed... as a side benefit this approach also caters 
for non-standard installation locations.  Eg.

IP=`which ip`
IFCONFIG=`which ifconfig`

if [! -z "${IP} ] ; then
      ${IP} addr | grep  ..... etc
fi

Ron


Lars Ellenberg wrote:

>/ 2004-04-27 09:02:54 -0500
>\ Todd Denniston:
>  
>
>>Eugene Crosser wrote:
>>    
>>
>><SNIP>
>>    
>>
>>>As to the local IP, when I need it I get it with an ugly sed/awk script
>>>run against the output of /sbin/ifconfig.  Possibly a more elegant way
>>>exists...
>>>
>>>      
>>>
>>yes I thought for a while that `hostname -a` and `hostname -i` could help me,
>>but I found that they depend on the way your /etc/hosts file is setup and did
>>not return any of the data that described eth0:0 and eth1, so it was less than
>>useful for me.
>>    
>>
>
>...
>for people that have /sbin/ifconfig around,
>and don't want to install or use /sbin/ip:
>
>I'm not yet sure how we will change CVS...
>maybe we just trust the admin, and do not check this at all?
>
>	Lars Ellenberg
>
>diff -u -p -r1.1.2.22 drbdadm.h
>--- drbdadm.h	26 Apr 2004 08:36:29 -0000	1.1.2.22
>+++ drbdadm.h	27 Apr 2004 14:31:18 -0000
>@@ -16,6 +16,8 @@
> 
> /* for verify_ips(): make not verifyable ips fatal */
> //#define INVALID_IP_IS_INVALID_CONF
>+#define USE_SBIN_IP       0
>+#define USE_SBIN_IFCONFIG 1
> 
> struct d_globals
> {
>diff -u -p -r1.1.2.45 drbdadm_main.c
>--- drbdadm_main.c	26 Apr 2004 08:36:29 -0000	1.1.2.45
>+++ drbdadm_main.c	27 Apr 2004 14:31:19 -0000
>@@ -604,7 +604,7 @@ int m_shell_match(const char *subcmd, co
> #ifdef DEBUG
>   ex = asprintf(&cmd, "[[ `%s` == %s ]]", subcmd, pattern);
> #else
>-  ex = asprintf(&cmd, "[[ `%s` == %s ]] &>/dev/null", subcmd, pattern);
>+  ex = asprintf(&cmd, "[[ `%s` == %s ]] >/dev/null", subcmd, pattern);
> #endif
>   if (ex < 0) { perror("asprintf"); exit(E_thinko); }
> 
>@@ -643,10 +643,19 @@ void verify_ips(struct d_resource* res)
>   }
>   my_ip  = res->me->address;
>   his_ip = res->peer->address;
>+#if USE_SBIN_IP
>   ex = asprintf(&cmd, "/sbin/ip -o addr show scope global to %s", my_ip);
>   if (ex < 0) { perror("asprintf"); exit(E_thinko); }
>   ex = asprintf(&pat, "*inet\\ %s/*", my_ip);
>   if (ex < 0) { perror("asprintf"); exit(E_thinko); }
>+#elif USE_SBIN_IFCONFIG
>+  ex = asprintf(&cmd, "LANG='' /sbin/ifconfig | grep ' inet addr:%s '", my_ip);
>+  if (ex < 0) { perror("asprintf"); exit(E_thinko); }
>+  ex = asprintf(&pat, "*\\ inet\\ addr:%s\\ *", my_ip);
>+  if (ex < 0) { perror("asprintf"); exit(E_thinko); }
>+#else
>+  return; // cannot check ip.
>+#endif
>   ex = m_shell_match(cmd, pat);
>   free(cmd); cmd = NULL;
>   free(pat); pat = NULL;
>@@ -664,6 +673,8 @@ void verify_ips(struct d_resource* res)
>     free(e.key);
>     return;
>   }
>+
>+#if USE_SBIN_IP
>   asprintf(&cmd, "/sbin/ip -o route get to %s", his_ip);
>   if (ex < 0) { perror("asprintf"); exit(E_thinko); }
>   asprintf(&pat, "%s\\ dev*src\\ %s\\ \\\\*", his_ip, my_ip);
>@@ -678,11 +689,14 @@ void verify_ips(struct d_resource* res)
>     ep = hsearch(e, FIND);
>     fprintf(stderr, "%s:%d: in resource %s:\n\tNo route from me (%s) to peer (%s).\n",
> 	    config_file,(int) ep->data,res->name, my_ip, his_ip);
>-#ifdef INVALID_IP_IS_INVALID_CONF
>+# ifdef INVALID_IP_IS_INVALID_CONF
>     config_valid = 0;
>-#endif
>+# endif
>     return;
>   }
>+#else
>+	/* cannot check route to peer */
>+#endif
> 
>   return;
> }
>diff -u -p -r1.54.2.30 drbdsetup.c
>--- drbdsetup.c	26 Apr 2004 08:36:29 -0000	1.54.2.30
>+++ drbdsetup.c	27 Apr 2004 14:31:19 -0000
>@@ -855,7 +855,7 @@ int cmd_invalidate(int drbd_fd,char** ar
>       err=errno;
>       perror("ioctl() failed");
>       if(err==EINPROGRESS)
>-	fprintf(stderr,"Only in 'Connected' cstate possible.");
>+	fprintf(stderr,"Only in 'Connected' cstate possible.\n");
>       return 20;
>     }
>   return 0;
>@@ -871,7 +871,7 @@ int cmd_invalidate_rem(int drbd_fd,char*
>       err=errno;
>       perror("ioctl() failed");
>       if(err==EINPROGRESS)
>-	fprintf(stderr,"Only in 'Connected' cstate possible.");
>+	fprintf(stderr,"Only in 'Connected' cstate possible.\n");
>       return 20;
>     }
>   return 0;
>_______________________________________________
>drbd-user mailing list
>drbd-user at lists.linbit.com
>http://lists.linbit.com/mailman/listinfo/drbd-user
>  
>




More information about the drbd-user mailing list