我试图创建一个几乎可以自动执行此过程的脚本: http://knowledgelayer.softlayer.com/procedure/add-additional-ips-redhat
不太确定它的工作效果如何,但是在我将剧本改为一个之前并没有走得太远。以下是脚本的内容:
使用更新的代码进行编辑: 编辑#2:它主要用于工作,但现在它运行循环并跳过读取propmt以获取静态IP
#!/bin/bash
path=/etc/sysconfig/network-scripts/
echo "Let's get your IP added :)"
echo""
getnewip()
{
echo read -p "Enter the new IP Address you wish to add: " staticip
}
getserverinfo()
{
gateway=$(netstat -rn | sed -n 3p | awk '{print $2}')
netmask=$(ifconfig eth1 | grep -i 'netmask' | grep -v '127.0.0.1' | awk '{print $4}')
clone=$( ifconfig | grep eth1 | awk '{print $1}' | cut -d: -f2 )
}
rangechecks()
{
cd /etc/sysconfig/network-scripts/
ls ifcfg-eth1-range*
filename==$1
if [[ ! -f $filename ]]; then
touch "$filename"
echo "Created \"$filename\""
fi
digit=1
while true; do
temp_name=$filename-$digit
if [[ ! -f temp_name ]]; then
touch "$temp_name"
echo "Created $path\"$temp_name\""
digit=$((digit + 1 ))
fi
done
}
writeinterfacefile()
{
cat >> "/etc/sysconfig/network-scripts/$1" << EOF
IPADDR_START=$staticip
IPADDR_END=$staticip
NETMASK=$netmask
CLONENUM_START=$((clone+1))
EOF
echo ""
echo "Your information was saved in the file '$1'."
echo ""
}
{
clear
getserverinfo
echo ""
echo "Please verify this information: "
echo "Gateway Address: " "$gateway"
echo "Netmask: " "$netmask"
echo "Your new IP: " "$staticip"
echo ''
while true; do
read -p "Is this information correct? [y/N]" yn
case $yn in
[Yy]* ) $writeinterfacefile;;
[Nn]* ) print "$getserverinfo" && exit ;;
* ) echo 'Please enter Y or n';;
esac
done
}
我在编写脚本时相当新,所以请原谅可怕的语法。我的目光在于EOF,但我不知道。
答案 0 :(得分:1)
rangechecks
没有}
,您的while
没有done
...
你应该缩进你的代码。我开始这样做,并立即注意到错误。
其他事项:
'/etc/sysconfig/network-scripts//$1
将无法执行您想要的操作。echo ""
相当于echo
。foo='bar'; echo "blah" echo -n $foo
将输出'blah echo -n bar'。exit
退出脚本,我不确定这是你的想法。[y/N]
通常表示N
(大写字母)
此外,您再问enter Y or n
。保持一致!答案 1 :(得分:0)
我无法看到函数rangechecks
另外,不要在第一行缩进shebang。