How to find which host a VM is running on?

We have quite a few Linux VMs running (several hundred). Some are running in VMware and some are running on Citrix XenServer.

I know that it is possible, for example, to go into vSphere and search for the host name. But there are times where it is not found for whatever reason and I want to log into the guest and see host what it thinks it is running on.

Does anyone know a way for either of the above to find out the host that is running a particular guest from the Linux guest OS?

I used to be able to do this with HP-UX HPVM by installing the vm toolbox onto the guest. And with Solaris sparse root zones I used to be able to tell by looking at the arp cache. I'm just checking if there is any way at all to do something similar with VMware or XenServer.