Isso pode funcionar para um convidado da VM chamado "pollyanna" se o host tiver se comunicado com a VM recentemente, para que seu endereço IP esteja no cache do ARP:
arp -na | awk -v mac=$(virsh domiflist pollyanna | awk '$2=="bridge"{print $NF}') '$0 ~ " at " mac {gsub("[()]", "", $2); print $2}'
Vamos dividir isso:
# Get the MAC for a VM guest called pollyanna
vmac=$(virsh domiflist pollyanna | awk '$2=="bridge"{print $NF}')
# List the ARP cache
arp -na |
# Match the MAC on a line like "? (192.168.1.12) at 12:34:56:78:9a:bc [ether] on ethX"
# and return the IP address. The gsub() function strips the "()" characters
awk -v mac="$vmac" '$0 ~ " at " mac {gsub("[()]", "", $2); print $2}'
Caso contrário, pode ser necessário verificar todo o intervalo de endereços IP plausível para forçar o endereço IP no cache do ARP e, em seguida, tente novamente a consulta:
nmap -sn '192.168.1.*' # Ugh. Every address on the 192.168.1.0/24 network