Bash

Zenity 形式,便於網路配置

  • October 11, 2017

我正在做一個簡單的網路配置表格。最終使用者只需填寫資訊,其餘的由腳本完成。

有一個更好的方法嗎?

歡迎大家提出任何意見。

謝謝

sudo sed -i.bak '7,8 d' /etc/network/interfaces
sudo sed -i '/inet 網路遮罩/d' /etc/network/interfaces
sudo sed -i '/inet 名稱伺服器/d' /etc/network/interfaces
sudo sed -i '/inet 地址/d' /etc/network/interfaces
sudo sed -i '/inet 網關/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
#over改變的
睡眠 3s
出口
是

現在我改為:

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將其複制回原位。
  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

引用自:https://unix.stackexchange.com/questions/397359