Zenity 形式,方便网络配置

Zenity 形式,方便网络配置

我正在做一个 zenity 形式以方便网络配置。最终用户只需填写信息,脚本就会完成其余的工作。
有一个更好的方法吗?
欢迎大家提出任何意见。
谢谢

sudo sed -i.bak '7,8 d' /etc/network/interfaces
sudo sed -i '/inet 网络掩码/d' /etc/network/interfaces
sudo sed -i '/inet nameservers/d' /etc/network/interfaces
sudo sed -i '/inet 地址/d' /etc/network/interfaces
sudo sed -i '/inet gateway/d' /etc/network/interfaces
sudo sed -i“8a iface eth0 inet static”/etc/network/interfaces
ip=$(zenity --entry --title="IP 地址" --text="IP 地址:")
sudo sed -i "9a 地址 $ip" /etc/network/interfaces
mask=$(zenity --entry --title="网络掩码" --text="网络掩码地址:")
sudo sed -i "11a 网络掩码 $mask" /etc/network/interfaces
gateway=$(zenity --entry --title="网关地址" --text="网关地址:")
sudo sed -i "10a 网关 $gateway" /etc/network/interfaces
dns=$(zenity --entry --title="Dns" --text="Dns 地址:")
sudo sed -i "12a dns-nameservers $dns" /etc/network/interfaces
sudo sed -i“13a iface eth1 inet static”/etc/network/interfaces
sudo sed -i "14a 地址 $ip" /etc/network/interfaces
sudo sed -i "15a 网关 $gateway" /etc/network/interfaces
sudo sed -i "16a 网络掩码 $mask" /etc/network/interfaces
sudo sed -i "17a dns-nameservers $dns" /etc/network/interfaces
zenity --question --text "信息准确吗";回声$?
 如果 [ $? > 0];
    然后
        echo "--- 再做一次 ---"
        sudo cp home/Test/interfaces /etc/network/ #这会复制一个interfaces.bak
                                                    #覆盖已更改的
        睡眠3秒
        出口

现在我改成这样:

cp /etc/network/interfaces /tmp/interfaces
sed -i -e '7,8 d' \
       -e '/inet address/d '\
       -e '/inet netmask/d' \
       -e '/inet nameservers/d' \
       -e '/inet gateway/d' \
       -e '/iface eth0 inet static/d' \
       -e '/iface eth1 inet static/d' /tmp/interfaces
sudo sed -i "8a iface eth0 inet static" /tmp/interfaces
ip=$(zenity --entry --title="Ip adress" --text="Ip adress:")
sudo sed -i "9a address $ip" /tmp/interfaces
mask=$(zenity --entry --title="Netmask" --text="Netmask address:")
sudo sed -i "10a netmask $mask" /tmp/interfaces
gateway=$(zenity --entry --title="Gateway address" --text="Gateway address:")
sudo sed -i "11a gateway $gateway"/tmp/interfaces
dns=$(zenity --entry --title="Dns" --text="Dns address:")
sudo sed -i "12a dns-nameservers $dns" /tmp/interfaces
sudo sed -i "13a iface eth1 inet static" /tmp/interfaces
sudo sed -i "14a address $ip" /tmp/interfaces
sudo sed -i "15a gateway $gateway" /tmp/interfaces
sudo sed -i "16a netmask $mask" /tmp/interfaces
sudo sed -i "17a dns-nameservers $dns" /tmp/interfaces
wait 1s;
sudo zenity --text-info --height=500 --width=400 < <(cat /tmp/interfaces)
if ! zenity --question --text "Är alla addresser rätt ifyllda";  then
    cp /tmp/interfaces /etc/network/interfaces 
    exit
    fi

没有任何反应...文件没有任何变化..有帮助吗? :D

答案1

  1. 跑过脚本sudo。不要为每个命令添加前缀sudo.或者,/etc/network/interfaces以非 root身份复制一份并对其进行处理,然后使用sudo将其复制回原位。

  2. sed ...; sed ...; sed ...可以替换为sed -e '...' -e '...' -e '...'.

  3. $?不需要进行测试。

所以你得到的是

cp /etc/network/interfaces /tmp/interfaces
sed -i -e '7,8 d' \
       -e '/inet netmask/d' \
       -e '/inet nameservers/d \
       (etc.)
       -e '8a iface eth0 inet static' /tmp/interfaces
(etc.)

if ! zenity --question --text "Is the information accurate"; then
    ...
fi

相关内容