BASH의 변수에 네트워크 정보를 저장하는 방법은 무엇입니까?

BASH의 변수에 네트워크 정보를 저장하는 방법은 무엇입니까?

일부 원시 네트워크 정보를 별도의 변수에 저장해야 하는 bash 스크립트를 작성 중입니다. 예를 들어, Mac 주소와 IP 주소는 다음과 같은 별도의 변수에 있습니다.

IPADDRESS=$(some_command)
MACADDRESS=$(some_other_command)
echo "$IPADDRESS has mac address $MACADDRESS"

이것은 단순화된 예입니다.아니요이 콘텐츠는 직접 읽히는 대신 독점 프로그램에 /bin/proprietary_program $IPADDRESS $MACADDRESS.

Linux에서 MAC 주소만 문자열로, IP 주소만 문자열로 가져오는 방법은 무엇입니까? 나는 ip가능할 때마다 이 명령을 사용하는 것을 선호합니다.

답변1

(NetworkManager)를 사용하는 예제 가 없으므로 nmcli여기에 추가하겠습니다.

nmcli -f IP4.ADDRESS device show your_nic (returns all IPv4 addresses)
nmcli -f IP6.ADDRESS device show your_nic (returns all IPv6 addresses)
nmcli -f GENERAL.HWADDR device show your_nic (returns MAC address)

답변2

다음 출력을 구문 분석할 수 있습니다 ip address. 내 출력은 다음과 같습니다(이 작업이 수행될 수 있음을 보여주기 위해 추가 IP 주소를 추가했습니다).

$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp10s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether f0:79:59:dc:c4:bf brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether f0:79:59:dc:c3:75 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet 129.168.1.101/24 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::f279:59ff:fedc:c375/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

정규식을 사용하여 주소를 찾으면 결국 IPv4 주소 목록이 생성됩니다.

$ IPV4=$(ip address | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}' )

$ echo $IPV4
127.0.0.1/8 192.168.1.100/24 129.168.1.101/24

$ for i in $IPV4; do echo $i; done
127.0.0.1/8
192.168.1.100/24
129.168.1.101/24

IPv6(필요한 경우) 및 MAC에 대한 정규식을 작성하기만 하면 됩니다.

관련 정보