Script to add static ip to network interfaces

18,723

I found some mistakes in your script. Here is how I think it should be (assuming that these are the things that you want to do this script):

#!/bin/bash

getinfo()
{
  read -p "Enter the IP of your router:          (looks like 192.168.1.1)   " routerip
  read -p "Enter the netmask for your network:   (looks like 255.255.255.0) " netmask
  read -p "Enter the ip address for your server: (looks like 192.168.1.22)  " staticip
}

writeinterfacefile()
{ 
cat << EOF > $1 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp

#Your static network configuration  
iface eth0 inet static
address $staticip
netmask $netmask
gateway $routerip 
EOF
#don't use any space before of after 'EOF' in the previous line

  echo ""
  echo "Your informatons was saved in '$1' file."
  echo ""
  exit 0
}

file="/home/radu/test"
if [ ! -f $file ]; then
  echo ""
  echo "The file '$file' doesn't exist!"
  echo ""
  exit 1
fi

clear
echo "Let's set up a static ip address for your site"
echo ""

getinfo
echo ""
echo "So your settings are:"
echo "Address of your Router is:   $routerip"
echo "The Mask for the Network is: $netmask"
echo "Your decided Server IP is:   $staticip"
echo ""

while true; do
  read -p "Are these informations correct? [y/n]: " yn 
  case $yn in
    [Yy]* ) writeinterfacefile $file;;
    [Nn]* ) getinfo;;
        * ) echo "Pleas enter y or n!";;
  esac
done
Share:
18,723

Related videos on Youtube

Josh
Author by

Josh

I`m an Ubuntu enthusiast who likes the web in general. I think linux in general is the base for the Internet. Therefore I like to learn as lot as I can about Linux Web techniques and all related stuff that fits into my leaky brain. Currently I try to develop an automated installer for a Drupal Development Server based on Ubuntu 14 LTS and extend this basic system with basic features like ftp or even a desktop Chooser and so on. If you like o take a look go to https://horvan.github.io/drubuntu

Updated on September 18, 2022

Comments

  • Josh
    Josh over 1 year

    I've got a little script here that should be pretty self explanatory but I can't figure out why the while loop doesn't handle the functions right. It should show the getinfo function again if the user presses N for no and if the user press yes it should execute the writeinterfacefile function.

    What is wrong whith my loop?

    #!/bin/bash
    echo "Let's set up a static ip address for your site"
    echo""
    
    getinfo()
    {
    read -p "Enter the IP of your router:           (looks like 192.168.1.1) " routerip
    read -p "Enter the netmask for your network:    (looks like 255.255.255  " netmask
    read -p "Enter the ip address for your server:  (looks like 192.168.1.22 " staticip
    }
    
    writeinterfacefile()
    { 
    cat << EOF >> /home/ubuntu/test 
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    # The loopback network interface
    auto lo
    iface lo inet loopback
    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    
    #Your static network configuration  
    iface eth0 inet static
    address echo $staticip
    netmask echo $netmask
    gateway echo $routerip 
    EOF 
    
    }
    
    clear
    getinfo
    echo""
    echo"So your settings are"
    echo "Address of your Router is    " echo -n $routerip
    echo "The Mask fpr the Network is  " echo -n $netmask
    echo "Your decided Server IP is    " echo -n $istaticp
    echo""
    echo "Are these informations correct? (Y/n)"
    
    while true; do
     read -p "Are these informations correct? [y/N]" yn? 
     case $yn in
       [Yy]* ) writeinterfacefile ;;
       [Nn]* ) getinfo ;;
           * ) echo "Pleas enter Y or n";;
     esac
    done