如何以编程方式将MAC地址插入/ etc / network / interfaces?

时间:2012-05-23 13:25:18

标签: string bash ubuntu text insert

我正在尝试使用wlan0接口编写使用用户创建的MAC地址的脚本。

为了测试,我创建了一个名为testFile.txt的文件,它是/etc/network/interfaces的副本。如果在wlan0之后有接口,我就无法使用echo "$var" >> testFile.txt,因为这只会将文本添加到最后。

我能够找到wlan0界面文本的结尾,但我不知道如何插入那里。以下是我目前的情况:

#!/bin/bash

echo "Enter MAC Address"
read var
log=$(cat testFile.txt | grep -o "wlan0.*" | grep -o dhcp)
echo $log

echo $log打印dhcp

我尝试将| echo "hwaddress ether $var" >> testFile.txt添加到$log,但仍然会附加到文件的末尾。 如何在$log之后直接插入?

3 个答案:

答案 0 :(得分:2)

问题

  1. 无用地使用 cat 。不要那样做。
  2. 您没有使用合适的工具来完成工作。使用GNU sed让自己的生活更轻松。
  3. 解决方案

    # Insert hwaddress line into /etc/network/interfaces.
    read -p "Enter MAC Address: "
    sudo sed -i.bak "/iface wlan0/a\    hwaddress $REPLY" /etc/network/interfaces
    
    # Replace existing hwaddress line in /etc/network/interfaces.
    read -p "Enter MAC Address: "
    sudo sed -ri.bak "s/(hwaddress).*/\1 $REPLY/"
    

答案 1 :(得分:1)

您可能希望使用sed插入MAC地址。如果你想在wlan0的行尾插入它,那就是

sed "s/\(wlan0.*\)/\1 $var/" testFile.txt > testFile.txt.tmp

如果有效,那么

mv testFile.txt.tmp testFile.txt

答案 2 :(得分:-1)

您需要一个不同的工具,例如USED

$ seq 5 | sed '/3/ s/.*/something else/'
1
2
something else
4
5
例如,你可以用'其他'代替'3'的行 - 并且没有限制