Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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
share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

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|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.