Which terminal command to get just IP address and nothing else?

后端 未结 29 1339
春和景丽
春和景丽 2020-12-04 06:16

I\'m trying to use just the IP address (inet) as a parameter in a script I wrote.

Is there an easy way in a unix terminal to get just the IP address, rather than loo

29条回答
  •  难免孤独
    2020-12-04 06:51

    #!/bin/sh
    # Tested on Ubuntu 18.04 and Alpine Linux 
    # List IPS of following network interfaces:
    # virtual host interfaces
    # PCI interfaces
    # USB interfaces
    # ACPI interfaces
    # ETH interfaces
    for NETWORK_INTERFACE in $(ls /sys/class/net -al | grep -iE "(/eth[0-9]+$|vif|pci|acpi|usb)" | sed -E "s@.* ([^ ]*) ->.*@\1@"); do 
        IPV4_ADDRESSES=$(ifconfig $NETWORK_INTERFACE | grep -iE '(inet addr[: ]+|inet[: ]+)' | sed -E "s@\s*(inet addr[: ]+|inet[: ]+)([^ ]*) .*@\2@")
        IPV6_ADDRESSES=$(ifconfig $NETWORK_INTERFACE | grep -iE '(inet6 addr[: ]+|inet6[: ]+)' | sed -E "s@\s*(inet6 addr[: ]+|inet6[: ]+)([^ ]*) .*@\2@")
        if [ -n "$IPV4_ADDRESSES" ] || [ -n "$IPV6_ADDRESSES" ]; then
            echo "NETWORK INTERFACE=$NETWORK_INTERFACE"
            for IPV4_ADDRESS in $IPV4_ADDRESSES; do 
                echo "IPV4=$IPV4_ADDRESS"
            done
            for IPV6_ADDRESS in $IPV6_ADDRESSES; do 
                echo "IPV6=$IPV6_ADDRESS"
            done
        fi
    done
    

提交回复
热议问题