IP 주소를 모르는 상태에서 버추얼 게스트 VM에 ssh를 통해 연결

고양이는 ssh-VM

HOSTIP =`IP 라우팅하는 일을 얻을 | AWK '{일치 ($ 0 /.+src\s([.0-9]+)/하는) A [1] 인쇄, 종료}'`
HOST_NETS =`IP 요지 | 그렙 192.168.3.33 | AWK '{일치 ($ 0 /.+inet\s([/.0-9]+)/하는) A [1] 인쇄, 종료}'`
HOST_NETS = $ {HOST_NETS : -192.168.3.0 / 24}
NETS = $ {NETS : - $ HOST_NETS}
MAC # $으로는 = {MAC : -08 : 00 : 27 : 7C : 55 : 26}
VBoxManage 목록의 VM
USR = $ {USR : -mxh}
VM1 = $ (VBoxManage 목록의 VM | 헤드 (1) -n | AWK '{$ 1를 인쇄}')
VM1 = $ {VM1 : -ubuntu - 18.04를}
VM1은 $에게 {VM1의 %를 \ "*} =
VM1 = $ {VM1 # * \ "}
VMNAME = $ {VMNAME : - $ VM1}
에코 "VM 이름은 다음과 같습니다 $ VMNAME"
| NIC_MAC =`VBoxManage showvminfo $ VMNAME 2 --details> & 1 그렙 '. NIC * MAC'| - 재 SED의 /.* MAC (. +) 첨부 * / \ 1 /. "-e 'S / (\ {2} w) / \ 1 / g'-e 'S / : $ / /`
MAC = $ {MAC : - $ NIC_MAC}
에코 "VM NIC MAC입니다 : $ MAC"
# VBoxManage guestproperty 열거 $ VMNAME
# VBoxManage guestproperty GET $ VMNAME "/ 버추얼 / GuestInfo / 네트 / 1 / V4 / IP"| AWK '{인쇄 ($ 2); } ')
# ssh를 -l USERNAME $ VM_IP
# VM_IP = $ (vboxmanage guestproperty GET "VM_NAME" "/ 버추얼 / GuestInfo / 네트 / 0 / V4 / IP"| AWK '{인쇄 ($ 2);}')
# VBoxManage guestproperty GET "CHICAGOVPN" "/ 버추얼 / GuestInfo / 네트 / 0 / V4 / IP"| AWK '{$ 2 인쇄}'

에코 "먼저 실행하여 네트워크 ($ NETS)에서하시기 바랍니다 frush에 ARP 테이블"
에코 "의 nmap -sP $ NETS"
IP =`IP 이웃 | 그렙 "$ MAC"| 컷 ""-d -f1`
VMIP = $ {VMIP : - IP}
에코는 "VM IP입니다 : $ IP"
경우 [-n $ IP] 그때
  에코 "VM IP는 NULL, 종료입니다"
  1 번 출구
있다
에코 "로그 VM : ssh를 $ USR @ $ IP"
ssh를 $ USR @ $ IP
종료 0
#는 fping -f $ NETS
# https://stackoverflow.com/questions/13552881/can-i-determine-the-current-ip-from-a-known-mac-address
IP =`의 nmap -sP $ NETS>을 / dev / null & & ARP -an | 그렙 $ MAC | | AWK '{$ 2 인쇄}' SED의 / [()] // g'`
에코 $ IP

# https://serverfault.com/questions/540107/connect-via-ssh-to-virtualbox-guest-vm-without-knowing-ip-address
# 리눅스 vboxmanage는 NIC의 MAC 주소를 표시

  

NETS = 192.168.3.0 / 24
MAC # $으로는 = {MAC : -08 : 00 : 27 : 7C : 55 : 26}
VBoxManage 목록의 VM
USR = $ {USR : -mxh}
VM1 = $ (VBoxManage 목록의 VM | 헤드 (1) -n | AWK '{$ 1를 인쇄}')
VM1 = $ {VM1 : -ubuntu - 18.04를}
VM1은 $에게 {VM1의 %를 \ "*} =
VM1 = $ {VM1 # * \ "}
VMNAME = $ {VMNAME : - $ VM1}
에코 "VM 이름은 다음과 같습니다 $ VMNAME"
| NIC_MAC =`VBoxManage showvminfo $ VMNAME 2 --details> & 1 그렙 '. NIC * MAC'| - 재 SED의 /.* MAC (. +) 첨부 * / \ 1 /. "-e 'S / (\ {2} w) / \ 1 / g'-e 'S / : $ / /`
MAC = $ {MAC : - $ NIC_MAC}
에코 "VM NIC MAC입니다 : $ MAC"
# VBoxManage guestproperty 열거 $ VMNAME
# VBoxManage guestproperty GET $ VMNAME "/ 버추얼 / GuestInfo / 네트 / 1 / V4 / IP"| AWK '{인쇄 ($ 2); } ')
# ssh를 -l USERNAME $ VM_IP
# VM_IP = $ (vboxmanage guestproperty GET "VM_NAME" "/ 버추얼 / GuestInfo / 네트 / 0 / V4 / IP"| AWK '{인쇄 ($ 2);}')
# VBoxManage guestproperty GET "CHICAGOVPN" "/ 버추얼 / GuestInfo / 네트 / 0 / V4 / IP"| AWK '{$ 2 인쇄}'

에코 "frush의 ARP 테이블에 제발 먼저 실행에 의해"
에코 "의 nmap -sP $ NETS"
IP =`IP 이웃 | 그렙 "$ MAC"| 컷 ""-d -f1`
VMIP = $ {VMIP : - IP}
에코는 "VM IP입니다 : $ IP"
경우 [-n $ IP] 그때
  에코 "VM IP는 NULL, 종료입니다"
  1 번 출구
있다
에코 "로그 VM : ssh를 $ USR @ $ IP"
ssh를 $ USR @ $ IP
종료 0
#는 fping -f $ NETS
# https://stackoverflow.com/questions/13552881/can-i-determine-the-current-ip-from-a-known-mac-address
IP =`의 nmap -sP $ NETS>을 / dev / null & & ARP -an | 그렙 $ MAC | | AWK '{$ 2 인쇄}' SED의 / [()] // g'`
에코 $ IP

# https://serverfault.com/questions/540107/connect-via-ssh-to-virtualbox-guest-vm-without-knowing-ip-address
# 리눅스 vboxmanage는 NIC의 MAC 주소를 표시

  

 

추천

출처www.cnblogs.com/shaohef/p/11968624.html