Need help understanding node child_process exec and why it breaks minikube ip - node.js

I am encountering a very weird situation with virtualbox, minikube, and node.
Here is the situation. I am running minikube with the virtualbox driver, and I am calling minikube ip from inside node using 'child_process.exec'.
exec('minikube ip', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
});
When I do I get this output.
stderr: exec error: Error: Command failed: minikube ip
Found binary path at /usr/local/bin/minikube
Launching plugin server for driver virtualbox
Plugin server listening at address 127.0.0.1:59431
() Calling .GetVersion
Using API Version 1
() Calling .SetConfigRaw
() Calling .GetMachineName
(minikube) Calling .GetIP
(minikube) DBG | COMMAND: /usr/local/bin/VBoxManage showvminfo minikube --machinereadable
(minikube) DBG | STDOUT:
(minikube) DBG | {
(minikube) DBG | }
(minikube) DBG | STDERR:
(minikube) DBG | {
(minikube) DBG | VBoxManage: error: Could not find a registered machine named 'minikube'
(minikube) DBG | VBoxManage: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
(minikube) DBG | VBoxManage: error: Context: "FindMachine(Bstr(VMNameOrUuid).raw(), machine.asOutParam())" at line 2780 of file VBoxManageInfo.cpp
(minikube) DBG | }
E0301 08:44:20.777956 59415 ip.go:44] Error getting IP: machine does not exist
however if I run minikube ip from the terminal it works fine
Found binary path at /usr/local/bin/minikube
Launching plugin server for driver virtualbox
Plugin server listening at address 127.0.0.1:59573
() Calling .GetVersion
Using API Version 1
() Calling .SetConfigRaw
() Calling .GetMachineName
(minikube) Calling .GetIP
(minikube) DBG | COMMAND: /usr/local/bin/VBoxManage showvminfo minikube --machinereadable
(minikube) DBG | STDOUT:
(minikube) DBG | {
(minikube) DBG | name="minikube"
(minikube) DBG | groups="/"
(minikube) DBG | ostype="Linux 2.6 / 3.x / 4.x (64-bit)"
(minikube) DBG | UUID="1b33cdcc-277b-41bb-95d6-6265b049e201"
(minikube) DBG | CfgFile="/Users/namedev/.minikube/machines/minikube/minikube/minikube.vbox"
(minikube) DBG | SnapFldr="/Users/namedev/.minikube/machines/minikube/minikube/Snapshots"
(minikube) DBG | LogFldr="/Users/namedev/.minikube/machines/minikube/minikube/Logs"
(minikube) DBG | hardwareuuid="1b33cdcc-277b-41bb-95d6-6265b049e201"
(minikube) DBG | memory=8192
(minikube) DBG | pagefusion="off"
(minikube) DBG | vram=8
(minikube) DBG | cpuexecutioncap=100
(minikube) DBG | hpet="on"
(minikube) DBG | chipset="piix3"
(minikube) DBG | firmware="BIOS"
(minikube) DBG | cpus=2
(minikube) DBG | pae="on"
(minikube) DBG | longmode="on"
(minikube) DBG | triplefaultreset="off"
(minikube) DBG | apic="on"
(minikube) DBG | x2apic="off"
(minikube) DBG | cpuid-portability-level=0
(minikube) DBG | bootmenu="disabled"
(minikube) DBG | boot1="dvd"
(minikube) DBG | boot2="dvd"
(minikube) DBG | boot3="disk"
(minikube) DBG | boot4="none"
(minikube) DBG | acpi="on"
(minikube) DBG | ioapic="on"
(minikube) DBG | biosapic="apic"
(minikube) DBG | biossystemtimeoffset=0
(minikube) DBG | rtcuseutc="on"
(minikube) DBG | hwvirtex="on"
(minikube) DBG | nestedpaging="on"
(minikube) DBG | largepages="on"
(minikube) DBG | vtxvpid="on"
(minikube) DBG | vtxux="on"
(minikube) DBG | paravirtprovider="default"
(minikube) DBG | effparavirtprovider="kvm"
(minikube) DBG | VMState="running"
(minikube) DBG | VMStateChangeTime="2017-03-01T00:18:25.490000000"
(minikube) DBG | monitorcount=1
(minikube) DBG | accelerate3d="off"
(minikube) DBG | accelerate2dvideo="off"
(minikube) DBG | teleporterenabled="off"
(minikube) DBG | teleporterport=0
(minikube) DBG | teleporteraddress=""
(minikube) DBG | teleporterpassword=""
(minikube) DBG | tracing-enabled="off"
(minikube) DBG | tracing-allow-vm-access="off"
(minikube) DBG | tracing-config=""
(minikube) DBG | autostart-enabled="off"
(minikube) DBG | autostart-delay=0
(minikube) DBG | defaultfrontend=""
(minikube) DBG | storagecontrollername0="SATA"
(minikube) DBG | storagecontrollertype0="IntelAhci"
(minikube) DBG | storagecontrollerinstance0="0"
(minikube) DBG | storagecontrollermaxportcount0="30"
(minikube) DBG | storagecontrollerportcount0="30"
(minikube) DBG | storagecontrollerbootable0="on"
(minikube) DBG | "SATA-0-0"="/Users/namedev/.minikube/machines/minikube/boot2docker.iso"
(minikube) DBG | "SATA-ImageUUID-0-0"="977e41e5-d157-4fe3-8215-7d475ad7b32f"
(minikube) DBG | "SATA-tempeject"="off"
(minikube) DBG | "SATA-IsEjected"="off"
(minikube) DBG | "SATA-1-0"="/Users/namedev/.minikube/machines/minikube/disk.vmdk"
(minikube) DBG | "SATA-ImageUUID-1-0"="828a95e8-f149-46ca-bee5-f298ec6a444c"
(minikube) DBG | "SATA-2-0"="none"
(minikube) DBG | "SATA-3-0"="none"
(minikube) DBG | "SATA-4-0"="none"
(minikube) DBG | "SATA-5-0"="none"
(minikube) DBG | "SATA-6-0"="none"
(minikube) DBG | "SATA-7-0"="none"
(minikube) DBG | "SATA-8-0"="none"
(minikube) DBG | "SATA-9-0"="none"
(minikube) DBG | "SATA-10-0"="none"
(minikube) DBG | "SATA-11-0"="none"
(minikube) DBG | "SATA-12-0"="none"
(minikube) DBG | "SATA-13-0"="none"
(minikube) DBG | "SATA-14-0"="none"
(minikube) DBG | "SATA-15-0"="none"
(minikube) DBG | "SATA-16-0"="none"
(minikube) DBG | "SATA-17-0"="none"
(minikube) DBG | "SATA-18-0"="none"
(minikube) DBG | "SATA-19-0"="none"
(minikube) DBG | "SATA-20-0"="none"
(minikube) DBG | "SATA-21-0"="none"
(minikube) DBG | "SATA-22-0"="none"
(minikube) DBG | "SATA-23-0"="none"
(minikube) DBG | "SATA-24-0"="none"
(minikube) DBG | "SATA-25-0"="none"
(minikube) DBG | "SATA-26-0"="none"
(minikube) DBG | "SATA-27-0"="none"
(minikube) DBG | "SATA-28-0"="none"
(minikube) DBG | "SATA-29-0"="none"
(minikube) DBG | natnet1="nat"
(minikube) DBG | macaddress1="0800276B97F7"
(minikube) DBG | cableconnected1="on"
(minikube) DBG | nic1="nat"
(minikube) DBG | nictype1="82540EM"
(minikube) DBG | nicspeed1="0"
(minikube) DBG | mtu="0"
(minikube) DBG | sockSnd="64"
(minikube) DBG | sockRcv="64"
(minikube) DBG | tcpWndSnd="64"
(minikube) DBG | tcpWndRcv="64"
(minikube) DBG | Forwarding(0)="ssh,tcp,127.0.0.1,53964,,22"
(minikube) DBG | hostonlyadapter2="vboxnet1"
(minikube) DBG | macaddress2="08002721BF68"
(minikube) DBG | cableconnected2="on"
(minikube) DBG | nic2="hostonly"
(minikube) DBG | nictype2="82540EM"
(minikube) DBG | nicspeed2="0"
(minikube) DBG | nic3="none"
(minikube) DBG | nic4="none"
(minikube) DBG | nic5="none"
(minikube) DBG | nic6="none"
(minikube) DBG | nic7="none"
(minikube) DBG | nic8="none"
(minikube) DBG | hidpointing="ps2mouse"
(minikube) DBG | hidkeyboard="ps2kbd"
(minikube) DBG | uart1="off"
(minikube) DBG | uart2="off"
(minikube) DBG | uart3="off"
(minikube) DBG | uart4="off"
(minikube) DBG | lpt1="off"
(minikube) DBG | lpt2="off"
(minikube) DBG | audio="coreaudio"
(minikube) DBG | clipboard="disabled"
(minikube) DBG | draganddrop="disabled"
(minikube) DBG | SessionName="headless"
(minikube) DBG | VideoMode="720,400,0"#0,0 1
(minikube) DBG | vrde="off"
(minikube) DBG | usb="off"
(minikube) DBG | ehci="off"
(minikube) DBG | xhci="off"
(minikube) DBG | SharedFolderNameMachineMapping1="Users"
(minikube) DBG | SharedFolderPathMachineMapping1="/Users"
(minikube) DBG | VRDEActiveConnection="off"
(minikube) DBG | VRDEClients=0
(minikube) DBG | vcpenabled="off"
(minikube) DBG | vcpscreens=0
(minikube) DBG | vcpfile="/Users/namedev/.minikube/machines/minikube/minikube/minikube.webm"
(minikube) DBG | vcpwidth=1024
(minikube) DBG | vcpheight=768
(minikube) DBG | vcprate=512
(minikube) DBG | vcpfps=25
(minikube) DBG | GuestMemoryBalloon=0
(minikube) DBG | GuestOSType="Linux26_64"
(minikube) DBG | GuestAdditionsRunLevel=2
(minikube) DBG | GuestAdditionsVersion="5.1.6 r110634"
(minikube) DBG | GuestAdditionsFacility_VirtualBox Base Driver=50,1488327525999
(minikube) DBG | GuestAdditionsFacility_VirtualBox System Service=50,1488327526490
(minikube) DBG | GuestAdditionsFacility_Seamless Mode=0,1488327525997
(minikube) DBG | GuestAdditionsFacility_Graphics Mode=0,1488327525997
(minikube) DBG | }
(minikube) DBG | STDERR:
(minikube) DBG | {
(minikube) DBG | }
(minikube) DBG | COMMAND: /usr/local/bin/VBoxManage showvminfo minikube --machinereadable
(minikube) DBG | STDOUT:
(minikube) DBG | {
(minikube) DBG | name="minikube"
(minikube) DBG | groups="/"
(minikube) DBG | ostype="Linux 2.6 / 3.x / 4.x (64-bit)"
(minikube) DBG | UUID="1b33cdcc-277b-41bb-95d6-6265b049e201"
(minikube) DBG | CfgFile="/Users/namedev/.minikube/machines/minikube/minikube/minikube.vbox"
(minikube) DBG | SnapFldr="/Users/namedev/.minikube/machines/minikube/minikube/Snapshots"
(minikube) DBG | LogFldr="/Users/namedev/.minikube/machines/minikube/minikube/Logs"
(minikube) DBG | hardwareuuid="1b33cdcc-277b-41bb-95d6-6265b049e201"
(minikube) DBG | memory=8192
(minikube) DBG | pagefusion="off"
(minikube) DBG | vram=8
(minikube) DBG | cpuexecutioncap=100
(minikube) DBG | hpet="on"
(minikube) DBG | chipset="piix3"
(minikube) DBG | firmware="BIOS"
(minikube) DBG | cpus=2
(minikube) DBG | pae="on"
(minikube) DBG | longmode="on"
(minikube) DBG | triplefaultreset="off"
(minikube) DBG | apic="on"
(minikube) DBG | x2apic="off"
(minikube) DBG | cpuid-portability-level=0
(minikube) DBG | bootmenu="disabled"
(minikube) DBG | boot1="dvd"
(minikube) DBG | boot2="dvd"
(minikube) DBG | boot3="disk"
(minikube) DBG | boot4="none"
(minikube) DBG | acpi="on"
(minikube) DBG | ioapic="on"
(minikube) DBG | biosapic="apic"
(minikube) DBG | biossystemtimeoffset=0
(minikube) DBG | rtcuseutc="on"
(minikube) DBG | hwvirtex="on"
(minikube) DBG | nestedpaging="on"
(minikube) DBG | largepages="on"
(minikube) DBG | vtxvpid="on"
(minikube) DBG | vtxux="on"
(minikube) DBG | paravirtprovider="default"
(minikube) DBG | effparavirtprovider="kvm"
(minikube) DBG | VMState="running"
(minikube) DBG | VMStateChangeTime="2017-03-01T00:18:25.490000000"
(minikube) DBG | monitorcount=1
(minikube) DBG | accelerate3d="off"
(minikube) DBG | accelerate2dvideo="off"
(minikube) DBG | teleporterenabled="off"
(minikube) DBG | teleporterport=0
(minikube) DBG | teleporteraddress=""
(minikube) DBG | teleporterpassword=""
(minikube) DBG | tracing-enabled="off"
(minikube) DBG | tracing-allow-vm-access="off"
(minikube) DBG | tracing-config=""
(minikube) DBG | autostart-enabled="off"
(minikube) DBG | autostart-delay=0
(minikube) DBG | defaultfrontend=""
(minikube) DBG | storagecontrollername0="SATA"
(minikube) DBG | storagecontrollertype0="IntelAhci"
(minikube) DBG | storagecontrollerinstance0="0"
(minikube) DBG | storagecontrollermaxportcount0="30"
(minikube) DBG | storagecontrollerportcount0="30"
(minikube) DBG | storagecontrollerbootable0="on"
(minikube) DBG | "SATA-0-0"="/Users/namedev/.minikube/machines/minikube/boot2docker.iso"
(minikube) DBG | "SATA-ImageUUID-0-0"="977e41e5-d157-4fe3-8215-7d475ad7b32f"
(minikube) DBG | "SATA-tempeject"="off"
(minikube) DBG | "SATA-IsEjected"="off"
(minikube) DBG | "SATA-1-0"="/Users/namedev/.minikube/machines/minikube/disk.vmdk"
(minikube) DBG | "SATA-ImageUUID-1-0"="828a95e8-f149-46ca-bee5-f298ec6a444c"
(minikube) DBG | "SATA-2-0"="none"
(minikube) DBG | "SATA-3-0"="none"
(minikube) DBG | "SATA-4-0"="none"
(minikube) DBG | "SATA-5-0"="none"
(minikube) DBG | "SATA-6-0"="none"
(minikube) DBG | "SATA-7-0"="none"
(minikube) DBG | "SATA-8-0"="none"
(minikube) DBG | "SATA-9-0"="none"
(minikube) DBG | "SATA-10-0"="none"
(minikube) DBG | "SATA-11-0"="none"
(minikube) DBG | "SATA-12-0"="none"
(minikube) DBG | "SATA-13-0"="none"
(minikube) DBG | "SATA-14-0"="none"
(minikube) DBG | "SATA-15-0"="none"
(minikube) DBG | "SATA-16-0"="none"
(minikube) DBG | "SATA-17-0"="none"
(minikube) DBG | "SATA-18-0"="none"
(minikube) DBG | "SATA-19-0"="none"
(minikube) DBG | "SATA-20-0"="none"
(minikube) DBG | "SATA-21-0"="none"
(minikube) DBG | "SATA-22-0"="none"
(minikube) DBG | "SATA-23-0"="none"
(minikube) DBG | "SATA-24-0"="none"
(minikube) DBG | "SATA-25-0"="none"
(minikube) DBG | "SATA-26-0"="none"
(minikube) DBG | "SATA-27-0"="none"
(minikube) DBG | "SATA-28-0"="none"
(minikube) DBG | "SATA-29-0"="none"
(minikube) DBG | natnet1="nat"
(minikube) DBG | macaddress1="0800276B97F7"
(minikube) DBG | cableconnected1="on"
(minikube) DBG | nic1="nat"
(minikube) DBG | nictype1="82540EM"
(minikube) DBG | nicspeed1="0"
(minikube) DBG | mtu="0"
(minikube) DBG | sockSnd="64"
(minikube) DBG | sockRcv="64"
(minikube) DBG | tcpWndSnd="64"
(minikube) DBG | tcpWndRcv="64"
(minikube) DBG | Forwarding(0)="ssh,tcp,127.0.0.1,53964,,22"
(minikube) DBG | hostonlyadapter2="vboxnet1"
(minikube) DBG | macaddress2="08002721BF68"
(minikube) DBG | cableconnected2="on"
(minikube) DBG | nic2="hostonly"
(minikube) DBG | nictype2="82540EM"
(minikube) DBG | nicspeed2="0"
(minikube) DBG | nic3="none"
(minikube) DBG | nic4="none"
(minikube) DBG | nic5="none"
(minikube) DBG | nic6="none"
(minikube) DBG | nic7="none"
(minikube) DBG | nic8="none"
(minikube) DBG | hidpointing="ps2mouse"
(minikube) DBG | hidkeyboard="ps2kbd"
(minikube) DBG | uart1="off"
(minikube) DBG | uart2="off"
(minikube) DBG | uart3="off"
(minikube) DBG | uart4="off"
(minikube) DBG | lpt1="off"
(minikube) DBG | lpt2="off"
(minikube) DBG | audio="coreaudio"
(minikube) DBG | clipboard="disabled"
(minikube) DBG | draganddrop="disabled"
(minikube) DBG | SessionName="headless"
(minikube) DBG | VideoMode="720,400,0"#0,0 1
(minikube) DBG | vrde="off"
(minikube) DBG | usb="off"
(minikube) DBG | ehci="off"
(minikube) DBG | xhci="off"
(minikube) DBG | SharedFolderNameMachineMapping1="Users"
(minikube) DBG | SharedFolderPathMachineMapping1="/Users"
(minikube) DBG | VRDEActiveConnection="off"
(minikube) DBG | VRDEClients=0
(minikube) DBG | vcpenabled="off"
(minikube) DBG | vcpscreens=0
(minikube) DBG | vcpfile="/Users/namedev/.minikube/machines/minikube/minikube/minikube.webm"
(minikube) DBG | vcpwidth=1024
(minikube) DBG | vcpheight=768
(minikube) DBG | vcprate=512
(minikube) DBG | vcpfps=25
(minikube) DBG | GuestMemoryBalloon=0
(minikube) DBG | GuestOSType="Linux26_64"
(minikube) DBG | GuestAdditionsRunLevel=2
(minikube) DBG | GuestAdditionsVersion="5.1.6 r110634"
(minikube) DBG | GuestAdditionsFacility_VirtualBox Base Driver=50,1488327525999
(minikube) DBG | GuestAdditionsFacility_VirtualBox System Service=50,1488327526490
(minikube) DBG | GuestAdditionsFacility_Seamless Mode=0,1488327525997
(minikube) DBG | GuestAdditionsFacility_Graphics Mode=0,1488327525997
(minikube) DBG | }
(minikube) DBG | STDERR:
(minikube) DBG | {
(minikube) DBG | }
(minikube) DBG | Host-only MAC: 08002721bf68
(minikube) DBG |
(minikube) DBG | Using SSH client type: external
(minikube) DBG | Using SSH private key: /Users/namedev/.minikube/machines/minikube/id_rsa (-rw-------)
(minikube) DBG | &{[-F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none docker#127.0.0.1 -o IdentitiesOnly=yes -i /Users/namedev/.minikube/machines/minikube/id_rsa -p 53964] /usr/bin/ssh <nil>}
(minikube) DBG | About to run SSH command:
(minikube) DBG | ip addr show
(minikube) DBG | SSH cmd err, output: <nil>: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
(minikube) DBG | link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
(minikube) DBG | inet 127.0.0.1/8 scope host lo
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | inet6 ::1/128 scope host
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
(minikube) DBG | link/ether 08:00:27:6b:97:f7 brd ff:ff:ff:ff:ff:ff
(minikube) DBG | inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
(minikube) DBG | valid_lft 82347sec preferred_lft 82347sec
(minikube) DBG | inet6 fe80::a00:27ff:fe6b:97f7/64 scope link
(minikube) DBG | valid_lft forever preferred_lft forever
192.168.99.102
Making call to close driver server
(minikube) Calling .Close
(minikube) DBG | 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
(minikube) DBG | link/ether 08:00:27:21:bf:68 brd ff:ff:ff:ff:ff:ff
(minikube) DBG | inet 192.168.99.102/24 brd 192.168.99.255 scope global dynamic eth1
(minikube) DBG | valid_lft 1194sec preferred_lft 1194sec
(minikube) DBG | inet6 fe80::a00:27ff:fe21:bf68/64 scope link
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | 4: sit0#NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
(minikube) DBG | link/sit 0.0.0.0 brd 0.0.0.0
(minikube) DBG | 6: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
(minikube) DBG | link/ether 02:42:f6:89:ce:77 brd ff:ff:ff:ff:ff:ff
(minikube) DBG | inet 172.17.0.1/16 scope global docker0
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | inet6 fe80::42:f6ff:fe89:ce77/64 scope link
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | 8: vetha3e3212#if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
(minikube) DBG | link/ether a2:f2:25:6e:36:4d brd ff:ff:ff:ff:ff:ff link-netnsid 0
(minikube) DBG | inet6 fe80::a0f2:25ff:fe6e:364d/64 scope link
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | 10: veth5a5eea5#if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
(minikube) DBG | link/ether 26:6e:b4:68:46:80 brd ff:ff:ff:ff:ff:ff link-netnsid 1
(minikube) DBG | inet6 fe80::246e:b4ff:fe68:4680/64 scope link
(minikube) DBG | valid_lft forever preferred_lft forever
(minikube) DBG | 12: veth784d436#if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
(minikube) DBG | link/ether ca:46:10:26:92:a7 brd ff:ff:ff:ff:ff:ff link-netnsid 2
(minikube) DBG | inet6 fe80::c846:10ff:fe26:92a7/64 scope link
(minikube) DBG | valid_lft forever preferred_lft forever
Successfully made call to close driver server
Making call to close connection to plugin binary
(minikube) DBG | 14: veth48a4207#if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
I have confirmed that the port numbers on this line
Plugin server listening at address 127.0.0.1:59573 changes everytime minikube ip is called
If I switch to the xhyve driver it all works great.
I am running
macOS 10.12.3
virtualbox 5.1.4 r110228
node 7.5.0

I found the answer. Apparently VBoxManage is picky about what user it uses. I was able to get it to work with sudo -u USERNAME minikube ip
exec('sudo -u USERNAME minikube ip', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
});

Related

How to read virtual IP in linux using golang/net package

I am trying to read a particular interface and all the virtual IP in that interface.
Here is and example of the linux ifconfig -a | grep -A eth0
ifconfig -a | grep -A2 eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.180.89.148 netmask 255.255.255.224 broadcast 100.180.89.140
inct6 fe80::ac16:2dff:fead:a321 prefixlen 64 scopeid 0x20<link>
--
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.180.89.150 netmask 255.255.255.255 broadcast 100.180.89.150
ether cc:16:2d:ad:a3:20 txqueuelen 1000 (Ethernet)
--
eth0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.180.89.151 netmask 255.255.255.255 broadcast 100.180.89.151
ether ac:16:2d:ad:a3:20 txqueuelen 1000 (Ethernet)
--
eth0:3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.180.89.152 netmask 255.255.255.255 broadcast 100.180.89.152
ether ac:16:2d:ad:a3:20 txqueuelen 1000 (Ethernet)
I tried like this in go code:
// nwkIfName = eth0
func networkInterfaces(nwkIfName string) ([]Interfaces, error) {
ifaces, err := net.Interfaces()
if err != nil {
return nil, fmt.Errorf("failed to get network interfaces: %w", err)
}
for _, nwIf := range ifaces {
fmt.Println(nwIf.Name)
if nwIf.Name == nwkIfName {
fmt.Println(nwIf.Addrs())
}
}
return nil, nil
}
Output:
[100.180.89.148/27 100.180.89.150/32 100.180.89.151/32 100.180.89.152/32 fe80::ae16:2dff:fead:a320/64] <nil>
How can I read the IP address of eth0:2 ?
Thanks James
Call Interface.Addrs() to get the interface's addresses, and type-assert *net.IPNet from the addresses.
Use its IPNet.IP field to get just the IP address (of type net.IP), and its IP.To4() method if you need an IPv4 address.
for _, nwIf := range ifaces {
fmt.Println(nwIf.Name)
if nwIf.Name == nwkIfName {
fmt.Println(nwIf.Addrs())
addrs, err := nwIf.Addrs()
if err != nil {
return nil, fmt.Errorf(
"failed to get addresses of interface: %s, err: %w",
nwIf.Name, err,
)
}
for _, addr := range addrs {
if ipNet, ok := addr.(*net.IPNet); ok {
fmt.Println("\tIP:", ipNet.IP)
} else {
fmt.Println("\tnot IPNet:", addr)
}
}
}
}

Kue connect Redis at AWS EC2 fail, show `Caught exception: AbortError`

I use docker to run redis on AWS EC2 and I use kue to connect to it at my node server.
But it shows error like below.
How could I fix this? I use redis-cli to ping to IP and GUI tool to connect redis are woring fine.
Caught exception: AbortError
11:05:00 0|server | at RedisClient.flush_and_error (/Users/Project/node_modules/kue/node_modules/redis/index.js:357:23)
11:05:00 0|server | at RedisClient.connection_gone (/Users/Project/node_modules/kue/node_modules/redis/index.js:659:14)
11:05:00 0|server | at Socket.<anonymous> (/Users/Project/node_modules/kue/node_modules/redis/index.js:293:14)
11:05:00 0|server | at Object.onceWrapper (events.js:293:19)
11:05:00 0|server | at emitNone (events.js:91:20)
11:05:00 0|server | at Socket.emit (events.js:188:7)
11:05:00 0|server | at endReadableNT (_stream_readable.js:974:12)
11:05:00 0|server | at _combinedTickCallback (internal/process/next_tick.js:80:11)
11:05:00 0|server | at process._tickDomainCallback (internal/process/next_tick.js:128:9)
11:05:00 0|server | code: 'UNCERTAIN_STATE',
11:05:00 0|server | command: 'BLPOP',
11:05:00 0|server | args: [ 'q:processSendEMail:jobs', 0 ] }

How to find/grep ethernet interface (en) from inet ip in Mac shell script

I want to grep or need result which ethernet interface "en" is getting inet ip.
In below ifconfig in terminal result en6 is getting inet 192.188.10.111 so the result should be en6.
example: If en2 oren5 or any en XxX is getting inet IP id should show the ethernet interface enno.
It should not show lo0 loopback inet 127.0.0.1
MY_MAC:~ SKULL$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=1<PERFORMNUD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8823<UP,BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
ether 83:c1:9y:z0:g9:99
nd6 options=1<PERFORMNUD>
media: autoselect (<unknown type>)
status: inactive
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 99:85:40:69:05:z0
media: autoselect <full-duplex>
status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 99:84:43:67:43:b6
media: autoselect <full-duplex>
status: inactive
p2p0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 2304
ether 09:k5:6m:s6:q1:78
media: autoselect
status: inactive
awdl0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> mtu 1452
ether w1:6t:c3:w2:n4:78
nd6 options=1<PERFORMNUD>
media: autoselect
status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether 23:j5:12:43:43:67
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: en1 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 5 priority 0 path cost 0
member: en2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 6 priority 0 path cost 0
nd6 options=1<PERFORMNUD>
media: <unknown type>
status: inactive
en6: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::2e0:4cff:fe36:550%en6 prefixlen 64 scopeid 0xb
inet 192.188.10.111 netmask 0xffffff00 broadcast 192.168.255.255
nd6 options=1<PERFORMNUD>
media: autoselect (100baseTX <full-duplex>)
status: active
Does this meet your needs?
#!/bin/bash
for interface in `ifconfig | grep -v "\t" | awk -F':' '{print $1}'`; do
if [ `ipconfig getifaddr $interface` ] ; then
echo $interface
fi
done

Installing fabric8 in linux VM machine

I am installing fabric8 on my linux VM machine. I have followed the steps which is mentioned in the guide. I have installed KVM drive and downloaded fabric8 binary code. After that when I tried gofabric8 start command I am getting the following error. Any suggestions?
Unable to download driver Driver install for linux not yet supported
minikube is already available on your PATH
kubectl is already available on your PATH
funktion is already available on your PATH
There are no extra logs I can see. So run the minikube. Details are given below.
Command I used
/root/.fabric8/bin/minikube start --vm-driver=kvm --v=7
log message
Starting local Kubernetes cluster...
Found binary path at /usr/local/bin/docker-machine-driver-kvm
Launching plugin server for driver kvm
Plugin server listening at address 127.0.0.1:41218
() Calling .GetVersion
Using API Version 1
() Calling .SetConfigRaw
() Calling .GetMachineName
(minikube) Calling .GetState
(minikube) DBG | Getting current state...
(minikube) DBG | Fetching VM...
***(minikube) Failed to fetch machine
(minikube) DBG | panic: runtime error: invalid memory address or nil pointer*** dereference
(minikube) DBG | [signal 0xb code=0x1 addr=0x0 pc=0x4d7167]
(minikube) DBG |
(minikube) DBG | goroutine 22 [running]:
(minikube) DBG | panic(0x8c54a0, 0xc82000a100)
(minikube) DBG | /usr/local/go/src/runtime/panic.go:464 +0x3e6
(minikube) DBG | github.com/alexzorin/libvirt-go.(*VirDomain).GetState(0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
(minikube) DBG | /home/daniel/go/src/github.com/alexzorin/libvirt-go/domain.go:192 +0x87
(minikube) DBG | github.com/dhiltgen/docker-machine-kvm.(*Driver).GetState(0xc8201320e0, 0x0, 0x0, 0x0)
(minikube) DBG | /home/daniel/go/src/github.com/dhiltgen/docker-machine-kvm/kvm.go:450 +0x70
(minikube) DBG | github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).GetState(0xc8200e3b60, 0xe0d430, 0xc820154910, 0x0, 0x0)
(minikube) DBG | /home/daniel/go/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:191 +0x45
(minikube) DBG | reflect.Value.call(0x8858a0, 0x93fe88, 0x13, 0x959cd0, 0x4, 0xc82002def8, 0x3, 0x3, 0x0, 0x0, ...)
(minikube) DBG | /usr/local/go/src/reflect/value.go:435 +0x120d
(minikube) DBG | reflect.Value.Call(0x8858a0, 0x93fe88, 0x13, 0xc82002def8, 0x3, 0x3, 0x0, 0x0, 0x0)
(minikube) DBG | /usr/local/go/src/reflect/value.go:303 +0xb1
(minikube) DBG | net/rpc.(*service).call(0xc82004dac0, 0xc82004d880, 0xc820154080, 0xc8200a9680, 0xc8201506a0, 0x7e14a0, 0xe0d430, 0x16, 0x89fca0, 0xc820154910, ...)
(minikube) DBG | /usr/local/go/src/net/rpc/server.go:383 +0x1c2
(minikube) DBG | created by net/rpc.(*Server).ServeCodec
(minikube) DBG | /usr/local/go/src/net/rpc/server.go:477 +0x49d
E0119 09:42:23.506636 7110 start.go:96] Error starting host: Error getting state for host: unexpected EOF.
Retrying.
E0119 09:42:23.507014 7110 start.go:102] Error starting host: Error getting state for host: unexpected EOF

How to get scope of an IPv6 host?

I don't have much knowledge about the IPv6 protocol, so sorry if the question sounds stupid.
When I retrieve the list of all IPv6 addresses in my network, I get a field named scope, as shown below :
inet6 addr: 2001:470:1:82::11/64 Scope:Global
inet6 addr: 2001:470:1:82::10/64 Scope:Global
inet6 addr: 2001:470:1:82::13/64 Scope:Global
inet6 addr: fe80::21d:9ff:fe69:2c50/64 Scope:Link
inet6 addr: 2001:470:1:82::12/64 Scope:Global
inet6 addr: 2001:470:1:82::15/64 Scope:Global
inet6 addr: 2001:470:1:82::14/64 Scope:Global
inet6 addr: 2001:470:1:82::5/64 Scope:Global
inet6 addr: 2001:470:1:82::17/64 Scope:Global
inet6 addr: 2001:470:1:82::6/64 Scope:Global
inet6 addr: 2001:470:1:82::16/64 Scope:Global
inet6 addr: 2001:470:1:82::7/64 Scope:Global
inet6 addr: 2001:470:1:82::19/64 Scope:Global
inet6 addr: 2001:470:1:82::8/64 Scope:Global
inet6 addr: 2001:470:1:82::18/64 Scope:Global
inet6 addr: 2001:470:1:82::9/64 Scope:Global
inet6 addr: 2001:470:1:82::1b/64 Scope:Global
inet6 addr: 2001:470:1:82::a/64 Scope:Global
inet6 addr: 2001:470:1:82::1a/64 Scope:Global
inet6 addr: 2001:470:1:82::b/64 Scope:Global
inet6 addr: 2001:470:1:82::1d/64 Scope:Global
inet6 addr: 2001:470:1:82::c/64 Scope:Global
inet6 addr: 2001:470:1:82::1c/64 Scope:Global
inet6 addr: 2001:470:1:82::d/64 Scope:Global
inet6 addr: 2001:470:1:82::1f/64 Scope:Global
inet6 addr: 2001:470:1:82::e/64 Scope:Global
inet6 addr: 2001:470:1:82::1e/64 Scope:Global
inet6 addr: 2001:470:1:82::f/64 Scope:Global
inet6 addr: ::1/128 Scope:Host
In my application, I need to get those addresses for which the scope is 'Link'. I could have used a system call to ifconfig and then parsed the output to extract corresponding addresses. But the problem is, I'm using the call to getifaddrs(), which returns a linked list of structure ifaddr, given as :
struct ifaddrs {
struct ifaddrs *ifa_next; /* Next item in list */
char *ifa_name; /* Name of interface */
unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */
struct sockaddr *ifa_addr; /* Address of interface */
struct sockaddr *ifa_netmask; /* Netmask of interface */
union {
struct sockaddr *ifu_broadaddr;
/* Broadcast address of interface */
struct sockaddr *ifu_dstaddr;
/* Point-to-point destination address */
} ifa_ifu;
#define ifa_broadaddr ifa_ifu.ifu_broadaddr
#define ifa_dstaddr ifa_ifu.ifu_dstaddr
void *ifa_data; /* Address-specific data */
};
The question is : how to get the addresses with 'Link' scope from this list ?
There are helper macros to assist:
struct sockaddr_in6 s6;
if (IN6_IS_ADDR_LINKLOCAL(&s6.sin6_addr)) {
puts ("link-local");
} else if (IN6_IS_ADDR_SITELOCAL(&s6.sin6_addr)) {
puts ("site-local");
} else if (IN6_IS_ADDR_V4MAPPED(&s6.sin6_addr)) {
puts ("v4mapped");
} else if (IN6_IS_ADDR_V4COMPAT(&s6.sin6_addr)) {
puts ("v4compat");
} else if (IN6_IS_ADDR_LOOPBACK(&s6.sin6_addr)) {
puts ("host");
} else if (IN6_IS_ADDR_UNSPECIFIED(&s6.sin6_addr)) {
puts ("unspecified");
} else {
puts ("global");
}
One way to do this would simply be to check whether the address falls within fe80::/10. The IPv6 address space is available from IANA, which details the possible scopes available.
I downloaded the source code to net-tools (the source package for ifconfig), and it looks like they parse /proc/net/if_inet6. (Comments are my own additions in the following code — also the below is extremely abridged and will most certainly not compile.)
/* some defines collected around the place: */
#define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6"
#define IPV6_ADDR_LOOPBACK 0x0010U
#define IPV6_ADDR_LINKLOCAL 0x0020U
#define IPV6_ADDR_SITELOCAL 0x0040U
#define IPV6_ADDR_COMPATv4 0x0080U
int scope; /* among other stuff */
/* looks like here we parse the contents of /proc/net/if_inet6: */
if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) {
while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n",
addr6p[0], addr6p[1], addr6p[2], addr6p[3],
addr6p[4], addr6p[5], addr6p[6], addr6p[7],
&if_idx, &plen, &scope, &dad_status, devname) != EOF) {
/* slightly later: */
printf(_(" Scope:"));
switch (scope) {
case 0:
printf(_("Global"));
break;
case IPV6_ADDR_LINKLOCAL:
printf(_("Link"));
break;
case IPV6_ADDR_SITELOCAL:
printf(_("Site"));
break;
case IPV6_ADDR_COMPATv4:
printf(_("Compat"));
break;
case IPV6_ADDR_LOOPBACK:
printf(_("Host"));
break;
default:
printf(_("Unknown"));
}
So let's have a look at what the above is parsing:
$ cat /proc/net/if_inet6
20010db8000008000000000000000001 03 40 00 00 eth0
fe800000000000000000000000004321 03 40 20 80 eth0
00000000000000000000000000000001 01 80 10 80 lo
So you can see the third column from the left (0x00 Global, 0x20 Link-Local, and 0x10 Loopback) is the scope. Using the above constants from the net-tools code you can work out what they mean. Further investigation would be required to determine a more authoritative source for such constants, and also whether parsing /proc/net/if_inet6 is your best option.
I don't think the scope is stored explicitly in that data structure. However, you can infer the scope from the IP address itself. See http://en.wikipedia.org/wiki/IPv6_address#Address_scopes

Resources