Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
archiv:4_x:server:knowledgebase:change-ip [07.06.2023 15:41] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | archiv:4_x:server:knowledgebase:change-ip [07.06.2023 15:41] (aktuell) – ↷ Seite von archiv:4_x:ucware:server:knowledgebase:change-ip nach archiv:4_x:server:knowledgebase:change-ip verschoben richard.neubert | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== change-ip.sh ====== | ||
+ | |||
+ | Das Skript // | ||
+ | |||
+ | ===== Kurzanleitung ===== | ||
+ | |||
+ | - // | ||
+ | - Die Berechtigung zum Ausführen setzen: | ||
+ | |||
+ | < | ||
+ | chmod +x change-ip.sh | ||
+ | </ | ||
+ | - Skript unter dem Benutzer root ausführen: | ||
+ | |||
+ | < | ||
+ | sudo ./ | ||
+ | </ | ||
+ | Das Skript fragt jetzt dialoggesteuert nach der neuen IP-Adresse und konfiguriert anschließend die UCWare um. | ||
+ | |||
+ | Um auch die reale IP-Adresse der UCware zu ändern, muss die Datei '' | ||
+ | |||
+ | ===== Best Practice ===== | ||
+ | |||
+ | Die Netzwerkeinstellungen in der '' | ||
+ | |||
+ | |||
+ | <file bash change-ip.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | export LANG=" | ||
+ | LOGFILE="/ | ||
+ | |||
+ | # handle ctrl+c / cancel | ||
+ | function handle_exit() { | ||
+ | if [[ $1 -ne 0 ]]; then | ||
+ | export DIALOGRC | ||
+ | export DIALOGOPTS=' | ||
+ | dialog --msgbox " | ||
+ | clear | ||
+ | exit 1 | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | # check for root privileges | ||
+ | [ "$(id -u)" -eq 0 ] || { echo "This installer needs root privileges, please re-run with sudo. Exiting."; | ||
+ | |||
+ | apt-get install --assume-yes --quiet --no-install-recommends --no-install-suggests dialog subnetcalc pwgen wget debconf-utils gzip > | ||
+ | |||
+ | # set up dialog | ||
+ | TMPFILE=$(mktemp --quiet) | ||
+ | DIALOGRC=$(mktemp --quiet) | ||
+ | echo " | ||
+ | export DIALOGRC | ||
+ | export DIALOGOPT# | ||
+ | |||
+ | export LANG=" | ||
+ | LOGFILE="/ | ||
+ | |||
+ | # handle ctrl+c / cancel | ||
+ | function handle_exit() { | ||
+ | if [[ $1 -ne 0 ]]; then | ||
+ | export DIALOGRC | ||
+ | export DIALOGOPTS=' | ||
+ | dialog --msgbox " | ||
+ | clear | ||
+ | exit 1 | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | # check for root privileges | ||
+ | [ "$(id -u)" -eq 0 ] || { echo "This installer needs root privileges, please re-run with sudo. Exiting."; | ||
+ | |||
+ | apt-get install --assume-yes --quiet --no-install-recommends --no-install-suggests dialog subnetcalc pwgen wget debconf-utils gzip > | ||
+ | |||
+ | # set up dialog | ||
+ | TMPFILE=$(mktemp --quiet) | ||
+ | DIALOGRC=$(mktemp --quiet) | ||
+ | echo " | ||
+ | export DIALOGRC | ||
+ | export DIALOGOPTS=' | ||
+ | |||
+ | trap "rm -f $TMPFILE $DIALOGRC" | ||
+ | |||
+ | # the disclaimer | ||
+ | dialog --msgbox "This installer will configure automatically your UCware VoIP config" | ||
+ | |||
+ | # get the VoIP interface, so we can suggest its IP later | ||
+ | INTERFACE=" | ||
+ | export DIALOGOPTS=' | ||
+ | dialog --inputbox " | ||
+ | INTERFACE=$(awk 'NR==1 {print; | ||
+ | |||
+ | # basic variable initialization | ||
+ | IP=$(ifconfig $INTERFACE | grep "inet addr" | cut -d ':' | ||
+ | NETMASK=$(ifconfig $INTERFACE | grep "inet addr" | cut -d ':' | ||
+ | NTPSERVER=" | ||
+ | DNSSERVER=" | ||
+ | |||
+ | # IP configuration, | ||
+ | IPVALID=1 | ||
+ | while [[ $IPVALID -ne 0 ]]; do | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | # read answers | ||
+ | | ||
+ | | ||
+ | |||
+ | # extrapolate router, broadcast, dhcp range | ||
+ | | ||
+ | | ||
+ | |||
+ | if [[ $IPVALID -ne 0 ]]; then | ||
+ | dialog --title " | ||
+ | else | ||
+ | IP=$(echo " | ||
+ | NETMASK=$(echo " | ||
+ | BROADCAST=$(echo " | ||
+ | ROUTER=$(echo " | ||
+ | NET=$(echo " | ||
+ | DHCPMIN=" | ||
+ | DHCPMAX=" | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | # Gateway and DHCP configuration | ||
+ | dialog | ||
+ | --inputbox " | ||
+ | --inputbox " | ||
+ | --inputbox " | ||
+ | handle_exit $? | ||
+ | ROUTER=$(awk 'NR==1 {print; | ||
+ | DHCPMIN=$(awk 'NR==2 {print; | ||
+ | DHCPMAX=$(awk 'NR==3 {print; | ||
+ | |||
+ | # present summary, ask user to confirm values | ||
+ | dialog --title " | ||
+ | |||
+ | Router: $ROUTER | ||
+ | Broadcast: $BROADCAST | ||
+ | DHCP range: $DHCPMIN - $DHCPMAX | ||
+ | |||
+ | This UCware server will be configured using those settings, proceed?" | ||
+ | |||
+ | PROCEED=$? | ||
+ | |||
+ | if [[ " | ||
+ | | ||
+ | clear | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | export DIALOGOPTS=' | ||
+ | dialog --infobox " | ||
+ | |||
+ | DBPW=$(/ | ||
+ | DBUSER=$(/ | ||
+ | |||
+ | mysql --user=$DBUSER --password=$DBPW <<< | ||
+ | |||
+ | OLDINTERFACE=$(awk '/ | ||
+ | OLDNETMASK=$(awk '/ | ||
+ | |||
+ | zcat / | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | |||
+ | sed -i " | ||
+ | |||
+ | OLDPROVHOST=$(awk -F ' | ||
+ | OLDNTPSERVER=$(awk -F ' | ||
+ | OLDBUTTONDAEMONHOST=$(awk -F ' | ||
+ | |||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | |||
+ | |||
+ | PERMIT=$() | ||
+ | sed --in-place " | ||
+ | sed --in-place " | ||
+ | |||
+ | |||
+ | echo "VoIP net interface: $INTERFACE | ||
+ | VoIP net address: $IP/ | ||
+ | Router: $ROUTER | ||
+ | DHCP range: $DHCPMIN - $DHCPMAX | ||
+ | SQL password for ucware: $SQLPASS | ||
+ | SQL password for root: $SQLROOTPASS | ||
+ | UCware package user: $UCUSER | ||
+ | UCware package password: $UCPASS | ||
+ | NTP server: $NTPSERVER | ||
+ | DNS server: $DNSSERVER" | ||
+ | |||
+ | service isc-dhcp-server restart | ||
+ | service asterisk restart | ||
+ | service ucwared restart | ||
+ | |||
+ | </ | ||