Bash
Zenity 形式,便於網路配置
我正在做一個簡單的網路配置表格。最終使用者只需填寫資訊,其餘的由腳本完成。
有一個更好的方法嗎?
歡迎大家提出任何意見。
謝謝
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
- 使用執行腳本
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