存档

文章标签 ‘bash’

看看阿里云的sh脚本代码是怎么写的

2015年7月28日 没有评论

#!/bin/bash

####################################################################

ip_route_helper() {
net1=’100.64.0.0/10′
net2=’11.0.0.0/8′

gw=$(ip r get 10.0.0.0 | awk ‘/via/ {print $3}’)

[[ -z “$gw” ]] && error “Error: the default gw: [$gw] is empty”

route_entry_1=”$net1 via $gw dev eth0″
route_entry_2=”$net2 via $gw dev eth0″

if ! ip route | grep -q “$net1” ; then
ip route add $route_entry_1 || error “Error: failed to add $route_entry_1”
fi
if ! ip route | grep -q “$net2” ; then
ip route add $route_entry_2 || error “Error: failed to add $route_entry_2″
fi

}

change_redhat_routes() {
route_conf_file=/etc/sysconfig/network-scripts/route-eth0
[[ -f $route_conf_file ]] && cp $route_conf_file ${route_conf_file}.original

ip_route_helper

route_entry_1=”$net1 via $gw dev eth0″
route_entry_2=”$net2 via $gw dev eth0”

if ! grep -q “100\.64\.0\.0” $route_conf_file >& /dev/null; then
echo “$route_entry_1” >> $route_conf_file
fi

if ! grep -q “11\.0\.0\.0” $route_conf_file >& /dev/null; then
echo “$route_entry_2″ >> $route_conf_file
fi
}

change_ubuntu_routes() {
route_conf_file=/etc/network/interfaces
[[ -f $route_conf_file ]] && cp $route_conf_file ${route_conf_file}.original

ip_route_helper

route_entry_1=”up route add -net 100.64.0.0 netmask 255.192.0.0 gw $gw dev eth0″
route_entry_2=”up route add -net 11.0.0.0   netmask 255.0.0.0   gw $gw dev eth0”

if ! grep -q “100\.64\.0\.0” $route_conf_file >& /dev/null ; then
echo “$route_entry_1” >>  $route_conf_file
fi
if ! grep -q “11\.0\.0\.0” $route_conf_file >& /dev/null ; then
echo “$route_entry_2″ >>  $route_conf_file
fi
}

change_suse_routes() {
route_conf_file=/etc/sysconfig/network/ifroute-eth0
[[ -f $route_conf_file ]] && cp $route_conf_file ${route_conf_file}.original

ip_route_helper

route_entry_1=”100.64.0.0 $gw 10 eth0″
route_entry_2=”11.0.0.0 $gw 8 eth0”

if ! grep -q “100\.64\.0\.0” $route_conf_file >& /dev/null; then
echo “$route_entry_1” >>  $route_conf_file
fi
if ! grep -q “11\.0\.0\.0” $route_conf_file >& /dev/null; then
echo “$route_entry_2” >>  $route_conf_file
fi
}

change_gentoo_routes() {
route_conf_file=/etc/conf.d/net
[[ -f $route_conf_file ]] && cp $route_conf_file ${route_conf_file}.original
gw=$(route -n | awk ‘/^0.0.0.0/ {print $2}’)

if ! route -n | grep -q ‘100\.64\.0\.0′ ; then
route add -net 100.64.0.0/10 gw $gw eth0 || error “Error: failed to add 100.64.0.0/10”
fi
if ! route -n | grep -q ’11\.0\.0\.0’ ; then
route add -net 11.0.0.0/8 gw $gw eth0 || error “Error: failed to add 11.0.0.0/8”
fi

if ! grep -q ‘routes_eth0’ $route_conf_file >& /dev/null; then
echo “routes_eth0=(\”100.64.0.0/10 via $gw\” \”11.0.0.0/8 via $gw\”)” >> $route_conf_file
else
if ! grep -q ‘100\.64\.0\.0′ $route_conf_file >& /dev/null; then
sed -i “s#\(routes_eth0=.*\))#\1 \”100.64.0.0/10 via $gw\”\)#” $route_conf_file
fi
if ! grep -q ’11\.0\.0\.0’ $route_conf_file >& /dev/null; then
sed -i “s#\(routes_eth0=.*\))#\1 \”11.0.0.0/8 via $gw\”\)#” $route_conf_file
fi
fi
}

change_coreos_routes() {
route_conf_file=/etc/systemd/network/10-eth0.network
[[ -f $route_conf_file ]] && cp $route_conf_file ${route_conf_file}.original

ip_route_helper

if ! grep -q ‘100.64.0.0’ $route_conf_file >& /dev/null; then
cat >> $route_conf_file << EOF
[Route]
Destination=100.64.0.0/10
Gateway=$gw
EOF
fi

if ! grep -q ‘11.0.0.0’ $route_conf_file >& /dev/null; then
cat >> $route_conf_file << EOF
[Route]
Destination=11.0.0.0/8
Gateway=$gw
EOF
fi
}

####################################################################

error() {
echo $1
exit 1
}

change_routes() {

result=$(egrep -o ‘Ubuntu|Red Hat|SUSE|Debian|Gentoo|Gentoo Hardened|AliCloud’ /proc/version | uniq | head -n 1)
case $result in
‘Ubuntu’ | ‘Debian’)
change_ubuntu_routes
;;
‘Red Hat’ | ‘AliCloud’)
change_redhat_routes
;;
‘SUSE’)
change_suse_routes
;;
‘Gentoo’)
change_gentoo_routes
;;
‘Gentoo Hardened’)
change_coreos_routes
;;
*)
error “Error: unknow platform: [$result]”
;;
esac
echo ‘add route 11.0.0.0/8 100.64.0.0/10 success !’
}

change_routes

####################################################################

分类: 张宏良张洪量 标签: , ,

linux致命漏洞CVE-2014-6271解决方法

2014年9月27日 没有评论

最近linux漏洞可谓热火朝天啊,我的ubuntu也需要升级了

否则会被致命的。

漏洞编号为CVE-2014-6271,是bash漏洞,bash 1.14 – 4.3都含有此漏洞,希望广大linux爱好者升级bash,否则可能是致命性的,尤其是linux服务器,漏洞检测命令如下:

env x=‘() { :;}; echo vulnerable’ bash -c “echo this is a test”

我的ubuntu解决方法如下:

1,如果是的ubuntu是10.04,12.04,14.04长期支持版,可以更新源之后,使用:

sudo apt-get update

sudo apt-get install bash

即可完成

2,如果你的ubuntu版本已经超出官方支持的日期,如10.04,那么可以将如下sh脚本运行即可:

#!/bin/bash
cd /usr/local/src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
tar zxf bash-4.3.tar.gz
cd bash-4.3
wget -r -nd -np http://ftp.gnu.org/gnu/bash/bash-4.3-patches/
for BP in `ls bash43-*|grep -v sig`
do patch -p0 < $BP
done
./configure
make && make install

将以上代码保存为sh脚本(你也可以理解为ubuntu linux 编译安装bash),sudo 运行下就可以了,比如:

update.bash.sh

sudo ./update.bash.sh

等待更新即可。linux致命漏洞CVE-2014-6271就可以修复了。

另附上:bash的官方下载地址:http://ftp.gnu.org/gnu/bash/

分类: ubuntu高手 标签: ,
css.php