이 명령에서 awk를 바꾸세요.

이 명령에서 awk를 바꾸세요.

저는 Debian의 프로비저닝 스크립트를 작업 중인데 설치 중에 awk를 사용할 수 없다는 것을 발견했습니다.

약간의 배경 지식

프로비저닝 스크립트는 다음 줄에서 실패하고 빈 결과를 반환합니다.

real=`ip -o link | awk '/<%= @host.mac -%>/ {print $2;}' | sed s/://`
cat << EOF > /etc/network/interfaces
#loopback
auto lo
iface lo inet loopback

#<%= @host.primary_interface.identifier %>
auto $real
allow-hotplug $real
iface $real inet <%= host_dhcp ? 'dhcp' : 'static' %>

결과 $real는 비어 있으며 잘못된 네트워크 구성을 생성합니다.

내가 보관하고 싶은 것

ens18결과가 다음 입력과 유사 하거나 eth0이를 기반으로 하도록 명령을 다시 작성하고 싶습니다 .

root@vm:~# ip -o link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000\    link/ether 1e:7d:da:55:31:23 brd ff:ff:ff:ff:ff:ff

설치 중에 실패한 명령은 다음과 같습니다.

root@vm:~# ip -o link | awk '/1e:7d:da:55:31:23/ {print $2;}' | sed s/://
ens18

내 질문

이 경우 awk-output과 같은 인터페이스 이름을 가져오기 위해 다른 도구를 피하고 사용하는 방법은 무엇입니까? 불행히도 나는 그것에 대해별로 익숙하지 않습니다.ens18ip -o linksed

답변1

시도해 grep보세요 cut:

ip -o link | grep '1e:7d:da:55:31:23' | cut -d' ' -f2 | sed s/://

관련 정보