This helps with virtualenv although it can open
up another security hole if you end up using an
unexpected python interpreter.
Overall it seems to make sense to err on the side
of usability but it's good to be aware of security.
However, for the remaining utility scripts that require
python 2, we explicitly note this with #!/usr/bin/python2.
A number of functions in node.py look like this:
return self.intf( intf ).<other stuff>
Previously, self.intf(...) in Node would expect a string name for an
interface and return None if an object was passed in instead of a
string name.
Now, be more permissive and assume that objects passed in are for Intf
objects. This makes all such functions in node.py handle more flexible
input args, either name or actual Intf object.
An alternative and equally valid approach would be to raise an Exception
whenever a non-string, non-falsy value was passed in to Node.intf(), and
to modify the code in at least one place - examples/sshd.py - to pass
the interface name, rather than the interface object.
Also fix input args for examples/scratchnetuser.py - the interface name
was being passed in as the prefix len, which makes no sense.