저는 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과 같은 인터페이스 이름을 가져오기 위해 다른 도구를 피하고 사용하는 방법은 무엇입니까? 불행히도 나는 그것에 대해별로 익숙하지 않습니다.ens18
ip -o link
sed
답변1
시도해 grep
보세요 cut
:
ip -o link | grep '1e:7d:da:55:31:23' | cut -d' ' -f2 | sed s/://