ネットワーク構成を容易にするために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
ジャンプしたスクリプトそして
sudo
。すべてのコマンドにプレフィックスを付けないでくださいsudo
。または、/etc/network/interfaces
root以外のユーザーとしてコピーを作成して作業し、次のようにsudo
コピーします。sed ...; sed ...; sed ...
に置き換えることができますsed -e '...' -e '...' -e '...'
。$?
テストは必要ありません。
だからあなたが得るものは
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