红联Linux门户
Linux帮助

Fedora 13下H3C8021X客户端自动配置脚本

发布时间:2015-02-24 15:01:08来源:linux网站作者:weatny

学校用的是校园网,客户端用h3c,先连接校园网,要用外网的话就要网页认证,然后才能连接外网.

当时装客户端的时候,显示的什么 IP自动刷新脚本安装成功,开机自启动安装成功...等
原来用的是Ubuntu 每次开机进入桌面之后都要手动联网,还能受得了,因为当时不知道开机自启动到底是个什么情况.
换了Fedora后,感觉太牛X了,开机自启动,直接连接上校园网了,我只要再进行一次网页认证就可以了,一直用着很好.

但是前两天因为考试,没用网,用电脑看复习资料的时候,没插网线,然后Fedora就一直卡在蓝白条那里,按F1之后才知道,原来是h3c认证通不过的问题,显示连接超时"time out:5",然后再一次连接,再超时,再连接,连接5,6次之后就不连了,h3c退出.这时候要么进去系统,要么就会一直闪屏,只能重启.只有插上网线,认证通过才可以进入系统.

我一想,这不麻烦了吗,要是我不用网就进不去系统的话,没网的时候我连个电影都没法看啊,所以最好的办法就是把开机自启动的程序去掉就可以了啊.

由于一般的 h3c安装包里面的README文件都是说执行

./pre.ps

就可以了,然后再执行

linux1x -c

进行手动配置,又要选择是多播还是广播,还有什么IP自动刷新什么的,新手很害怕这玩意,所以有高手写了一个自动配置这玩意的脚本文件,

但是高手再写这个的时候我估计没有想太多,放了开机自动运行程序还有自动检测程序,所以就出现了我这样的 ,用fedora不插网线就进不去系统的情况,用ubuntu的时候没有出现这样的情况,而且ubuntu不管怎么样,都要进行手动联网,很不爽,当时这是再用了fedora之后才有的感想.

下面就分析分析这个脚本文件有多牛X

#程序主函数部分

declare who1=`whoami`
if [ $who1 != "root" ]
then
echo You are using a non-privileged account;
echo Please change to root user and try again;
exit;
fi
clear
sys_lang=`echo $LANG`
case $sys_lang in
zh_CN*)
menu_chinese
;;
*)
menu_english
;;
esac


首先根据你的系统语言,选择对应语言的安装程序,很周到,呵呵.

然后就调用 menu_chinese函数了

#中文菜单

function menu_chinese

{

declare wrong_input=1;

while [ $wrong_input -eq 1 ]

do

clear

echo "欢迎使用 H3C for Linux 安装引导脚本"

echo "1.安装 H3C for Linux"

echo "2.直接运行 H3C for Linux"

echo "3.卸载 H3C for Linux"

echo "4.退出"

echo -ne "请输入你的选择:"

read menu_choose

case $menu_choose in

1)

wrong_input=0

creat_hold   #此函数生成自动重连程序,所以此处可以用#注解掉.

auto_choose

install_chinese

;;

2)

wrong_input=0

run_chinese

;;

3)

wrong_input=0

uninstall_chinese

;;

4)

wrong_input=0

echo "程序结束."

;;

*)

echo "错误的选择数!"
echo "请重新输入!"
sleep 1
wrong_input=1
;;      
esac
done;

}

选择1的话先调用一个creat_hold函数,此函数就是用来生成自动重连程序的,所以一直进不去系统有很大原因是因为他,所以我们再这里把这个函数注解掉,就不会生成自动重连程序了.


然后是一个选择发行版函数,这个很重要.

然后是安装函数.

安装函数有研究

#中文安装函数

function install_chinese

{

declare wrong_pre=0

if test -e "/etc/h3c-linux1x"

then

echo "配置目录已经存在."

else

mkdir /etc/h3c-linux1x

fi

if test -e "/var/log/h3c-linux1x"

then

echo "日志目录已经存在."

else

mkdir /var/log/h3c-linux1x

fi

if test -e "/usr/lib/libstdc++-libc6.2-2.so.3"

then

echo "共享库文件已经存在."

else

declare temp1=`ls /usr/lib/libstdc++* | head -1`

ln -s $temp1 /usr/lib/libstdc++-libc6.2-2.so.3

echo "成功创建库文件软连接."

fi

if test -e "./renew.ps"

then

{

cp ./renew.ps /usr/local/bin

chmod 755 /usr/local/bin/renew.ps

echo "刷新IP脚本准备就绪."

}

else

{

echo "无法找到刷新IP脚本!"

echo "请确认'renew.ps'文件存在!"

wrong_pre=1

}

fi

if test -e "./linux1x"

then

cp ./linux1x /usr/local/bin

chmod 755 /usr/local/bin/linux1x

echo "认证程序准备就绪."

else

echo "无法找到认证程序!"

echo "请确认'linux1x'文件存在!"

wrong_pre=2

fi

autorun_chinese    #这里就是症结所在,把这个函数注解掉就不会生成开机自动运行程序了

case $wrong_pre in

0)

echo "安装成功."

;;

1)

echo "缺少 'renew.ps'文件."

;;

2)

echo "缺少 'linux1x'文件."

;;

*)

echo "安装成功."

;;

esac

mv hold_h3c.sh /usr/local/bin/  #这句话也要注解掉,因为我们把create_hold函数注解掉了,所以不会生成hold_h3c.sh,会提示找不到文件或目录

killall linux1x

/usr/local/bin/hold_h3c.sh &

/usr/local/bin/linux1x -d

}

这样理论上就把开机自动运行程序和自动重连程序去掉了,但是这样的话,进到桌面还要手动联网啊,写个最简单的sh呗

#!/bin/bash

/usr/local/bin/linux1x -d

ifup eth0

exit 0

然后再用一个启动器链接到这个文件就可以了,先认证h3c,以防网卡没有激活,然后再激活网卡。