[virt-tools-list] [RFC PATCH] add shh option to VM context menu

Cole Robinson crobinso at redhat.com
Thu Sep 1 17:34:24 UTC 2011


On 08/12/2011 05:25 AM, Gerhard Stenzel wrote:
> 
> Occasionally I have the need to ssh into on of my VMs. To simplify that,
> I made the attached patch. I realize, that it will not work in all 
> configurations, but maybe someone else will find it useful or have some
> ideas to make it more generic.
> One will will also probably need to change the variable user.
> 

I can understand how this is convenient in some cases but I don't think
this is something we want to add to the UI: fundamentally I don't like
the idea of having virt-manager launch another terminal, we should be a
self contained app.

Maybe you could propose this a 'virsh ssh' command? I'd bring it up on
libvirt-list before starting to implement it though.

Thanks,
Cole

> Signed-off-by: Gerhard Stenzel <stenzel at de.ibm.com>
> 
> ===================================================================
> Index: virt-manager/src/virtManager/manager.py
> ===================================================================
> --- virt-manager.orig/src/virtManager/manager.py
> +++ virt-manager/src/virtManager/manager.py
> @@ -19,6 +19,8 @@
>  #
>  
>  import gtk
> +import os
> +import logging
>  
>  import virtManager.uihelpers as uihelpers
>  from virtManager.connection import vmmConnection
> @@ -333,6 +335,7 @@ class vmmManager(vmmGObjectUI):
>  
>          add_sep(self.vmmenu, self.vmmenu_items, "hsep2")
>          add_vm_menu("open", gtk.STOCK_OPEN, None, self.show_vm)
> +        add_vm_menu("ssh",  _("_ssh"), None, self.ssh_vm)
>          self.vmmenu.show()
>  
>          # Build connection context menu
> @@ -632,6 +635,28 @@ class vmmManager(vmmGObjectUI):
>              self.emit("action-migrate-domain",
>                        vm.conn.get_uri(), vm.get_uuid())
>  
> +    def ssh_vm(self, ignore, ignore2=None, ignore3=None):
> +        conn = self.current_conn()
> +        vm = self.current_vm()
> +        if conn is None:
> +            return
> +
> +        if vm:
> +            logging.debug("ssh to %s" % vm.get_name())
> +            # get mac address and search for it in the leases file
> +            for netdev in vm.get_network_devices(refresh_if_necc=False):
> +                mac = netdev.macaddr
> +                logging.debug("mac %s" % mac)
> +                f=open('/var/lib/libvirt/dnsmasq/default.leases', 'r')
> +                for line in f.readlines():
> +                    logging.debug("line %s" % line)
> +                    words = line.split()
> +                    if mac == words[1]:
> +                        user = "user"
> +                        logging.debug("user is %s" % user)
> +                        logging.debug("ip is %s" % words[2])
> +                        os.system("terminal -x ssh -X " + user + "@" + words[2] + " &")
> +
>      def close_conn(self, ignore):
>          conn = self.current_conn()
>          if conn.get_state() != vmmConnection.STATE_DISCONNECTED:
> ===================================================================
> 
> Best regards, 
> 
> Gerhard Stenzel
> -------------------------------------------------------------------------------------
> IBM Deutschland Research & Development GmbH
> Vorsitzender des Aufsichtsrats: Martin Jetter
> Geschaeftsfuehrung: Dirk Wittkopp
> Sitz der Gesellschaft: Boeblingen
> Registergericht: Amtsgericht Stuttgart, HRB 243294




More information about the virt-tools-list mailing list