私は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/://