便利なネットワーク構成のためのZenityフォーム

便利なネットワーク構成のためのZenityフォーム

ネットワーク構成を容易にするためにzenityフォームを作成しています。エンドユーザーが情報を入力するだけで、スクリプトは残りのタスクを実行します。
もっと良い方法がありますか?
どんな意見でも歓迎します。
ありがとう

sudo sed -i.bak '7,8 d' /etc/network/interfaces
sudo sed -i '/inet ネットワークマスク/d' /etc/network/インターフェース
sudo sed -i '/inet ネームサーバー/d' /etc/network/interfaces
sudo sed -i '/inet アドレス/d' /etc/network/インターフェース
sudo sed -i '/inet ゲートウェイ/d' /etc/network/インターフェース
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
マスク=$(zenity --entry --title="ネットワークマスク" --text="ネットワークマスクアドレス:")
sudo sed -i "11a ネットワークマスク$mask" /etc/network/interfaces
Gateway=$(zenity --entry --title="ゲートウェイアドレス" --text="ゲートウェイアドレス:")
sudo sed -i "10a Gateway$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/interfacesroot以外のユーザーとしてコピーを作成して作業し、次のように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

関連情報