We usually use scripts to generate the robot.cfg file but there are often situations where that doesn't work. One workaround that I was really excited about was the use of wildcards in the robotip field, according to the documentation the following should be a valid:
robotip = 10.*.*.*,192.*.*.*,172.*.*.*
In theory, that should make the robot only use valid local addresses such as 10.1.1.50, 192.168.1.50, or 172.1.1.50. Unfortunately, it often does not...
Occasionally, it'll report the following which is very useful:
Specified IP (10.*.*.*) is not recognized as a local ip. No IP change, using 10.1.1.123.
This clearly doesn't seem to be as designed and maybe they did away with that (we use robots v5.70), but at least you can figure out where the problematic server is. However, more often than not, it reports something like this:
Specified IP (10.*.*.*) is not recognized as a local ip. No IP change, using 169.254.135.187.
Obviously this is completely useless as 169.254.*.* is a local failback address. Whenever the robot sees 127.0.0.1 or 169.254.*.*, there should really be a line of code that says "hmm, that can't be right, let me try again" but so far I've never seen a robot recover from these by itself... The other annoying thing is that clearly there is SOME communication between the broken robot and the hub because somehow, ~magically~, the hub knows that the robot is using 127.0.0.1 or 169.254.x.x....???