Hi all,<br><br>Is it possible to implement (with iPython) a shell which behaves like a classical <br>Router Command Line Shell (e.g. Cisco IOS shell, etc.)? I&#39;d like to &quot;enter&quot; objects in a hierachical <br>fashion and execute commands/methods and also have command line completion only in that context
<br>(and not globally). Here is a simple example of what I have in mind:<br><br># user john<br>(user) # name &#39;John Cool&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>The class &quot;user&quot; (&quot;john&quot; is an instance of it) has a method &quot;name&quot; with one string parameter
<br><br>(user) # &lt;TAB&gt; <br><br>gives e.g.<br><br>name<br>password<br>shell<br>..<br><br>So TAB completion should only give <br><br>* the method names in this context<br>* other global commands like &#39;show&#39; which can have a special implementation in that context
<br>* interesting systems commands (which could be used in a special way in that context, e.g. is <br>&nbsp;&nbsp; the user logged in, his disk quota, etc.)<br><br>It would also be nice to set poperties like<br><br>(user) #: name=&#39;John Cool&#39;
<br>(user) #: set name=&#39;John Cool&#39; shell=&#39;/bin/sh&#39;<br><br>or even<br><br>(user) #: set -n &#39;John Cool&#39; -s &#39;/bin/sh&#39;<br>(user) #: set -n &#39;John Cool&#39; shell=&#39;/bin/sh&#39; <br><br>(user) #: show
<br><br>e.g. all properties are shown<br><br>user: john<br>Name: John Cool<br>Password: ztztztztz<br>Shell: /bin/sh<br>...<br><br>Ok let&#39;s finish this simple example here:<br><br>(user) # commit<br>(this could be a real transaction which can be rolled back!)
<br><br># show user john<br>...<br><br>So what I try to find out is if I could implement a shell with iPython which allows me to<br>do object traversal (with correpsonding command completion) and has the same syntax possibilities
<br>like a classical shell (Bash, etc.). <br><br>The shell commands i.e. classes (like &quot;user&quot;) should be known to the shell (implemented as plugins) and <br>register their syntax globally (could be done even during a running session), but should only be loaded 
<br>when I enter a corresponsing object (# user john). <br><br>If it possible to realize that with custom completers this is fine, I just do not know how? Being able to<br>enter Python objects in a generic fashion would would be cool though!
<br><br>Any help or comments welcome (maybe I overlooked somehting?)<br><br><br>Pierre<br clear="all"><br>-- <br>Pierre Bielmann &lt;<a href="mailto:pierre.bielmann@gmail.com">pierre.bielmann@gmail.com</a>&gt;