Forma Zenity para fácil configuração de rede

0

Estou fazendo um formulário zenity para facilitar a configuração da rede. O usuário final preenche as informações e o script faz o resto.
 Existe uma maneira melhor de fazer isso?
Qualquer entrada de vocês é bem vinda.
Obrigado

sudo sed -i.bak '7,8 d' /etc/network/interfaces
sudo sed -i '/inet netmask/d' /etc/network/interfaces
sudo sed -i '/inet nameservers/d' /etc/network/interfaces
sudo sed -i '/inet address/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 adress" --text="Ip adress:")
sudo sed -i "9a address $ip" /etc/network/interfaces
mask=$(zenity --entry --title="Netmask" --text="Netmask address:")
sudo sed -i "11a netmask $mask" /etc/network/interfaces
gateway=$(zenity --entry --title="Gateway address" --text="Gateway address:")
sudo sed -i "10a gateway $gateway" /etc/network/interfaces
dns=$(zenity --entry --title="Dns" --text="Dns address:")
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 address $ip" /etc/network/interfaces
sudo sed -i "15a gateway $gateway" /etc/network/interfaces
sudo sed -i "16a netmask $mask" /etc/network/interfaces
sudo sed -i "17a dns-nameservers $dns" /etc/network/interfaces
zenity --question --text "Is the information accurate"; echo $?
 if [ $? > 0 ];
    then
        echo "--- do it again ---"
        sudo cp home/Test/interfaces /etc/network/ #this copies a interfaces.bak 
                                                    #over the changed one
        sleep 3s
        exit
    fi

Agora eu mudei para isso:

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

E nada acontece ... sem alterações no arquivo.  Socorro? : D

    
por hibridpc 11.10.2017 / 09:09

1 resposta

1
  1. Execute o script com sudo . Não prefixar todos os comandos com sudo . Como alternativa, faça uma cópia de /etc/network/interfaces como não-raiz e trabalhe nela e, em seguida, use sudo para copiá-la de volta no lugar.

  2. sed ...; sed ...; sed ... pode ser substituído por sed -e '...' -e '...' -e '...' .

  3. O teste em $? não é necessário.

Então, o que você recebe é

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
    
por 11.10.2017 / 09:18