Another solution is to ping a VM and check the TTL value. Due to slightly different TCP/IP implementation on each OS-family, you can identify the OS family by checking this <https://subinsb.com/default-device-ttl-values/> table
On Mon, Jun 17, 2019, 12:44 Riepl, Gregor (SWISS TXT) < gregor.ri...@swisstxt.ch> wrote: > > > version. Another way is to open the console and see the login screen. > > This will get the actual data but I want to do automation to see for > > all VM's and opening the console is not feasible to automate. Is > > there any other way to get it? > > Are the VMs networked? > > You could fetch their public IPs and run nmap -sS -O against them. This > should produce fairly accurate results. > > If they are all on the same Cloudstack network, you could also SSH into > a connected VM and run nmap from there. > > I don't think that there is a generic way to obtain the actual OS > running on a VM via Cloudstack. It might be possible through the > hypervisor, but nmap will work in most cases. >