편리한 네트워크 구성을 위한 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

아무 일도 일어나지 않습니다. 파일이 변경되지 않습니다. 도움이 필요하십니까? :디

답변1

  1. 뛰어다녔다스크립트그리고 sudo. 모든 명령에 접두사를 붙이지 마십시오 sudo. 또는 /etc/network/interfaces루트가 아닌 사용자로 복사본을 만들고 작업한 다음 다음 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

관련 정보