大家来分析一下河南网通的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
htc
帖子: 16
注册时间: 2007-01-30 1:15

大家来分析一下河南网通的脚本

#1

帖子 htc » 2007-02-18 0:49

#!/bin/sh

EXCUTE_NAME="racer"
X_NAME="race"

verify_system()
{
#check if this is a linux platform, if not linux, alert and quit
if [ `uname` != "Linux" ]; then
echo "This process being available ONLY on Linux"
return 1
fi

#check if it's root, otherwise quit
if [ `whoami` != "root" ]; then
echo "No more than root has previlege to run this process"
return 1
fi
#check size of log file
if [ -f "ecou.log" ]; then
FSIZE=`du -ks ecou.log | awk '{print $1}'`
if [ $FSIZE -gt 1000 ]; then
>ecou.log #clear the log file
fi
else
>ecou.log
fi

return 0
}

find_ecou()
{
#FINDNUM=`ps -ef | grep "$EXCUTE_NAME" | grep -v grep | wc -l`
FINDNUM=`pgrep -nx "$EXCUTE_NAME" | wc -l`
if [ $FINDNUM -eq 0 ]; then
return 1
else
return 0
fi
}

start_ecou()
{
if find_ecou
then
echo "The pocess is running"
exit
fi

#to which interface link with Internet
INTERNUM=`ifconfig -a | grep "HWaddr" | wc -l`
if [ $INTERNUM -eq 0 ]; then
echo "No net Interface can be found, may you type command such as insmod and ifup eth0 first"
return 1
fi

#if more than ONE eth installed, have to select one
CMPNUM=0
if [ "$INTERNUM" -gt "$CMPNUM" ]; then
ifconfig -a | grep "HWaddr" | awk '
BEGIN {
i=0;
printf("All names of your net interface installed\n");
printf("-----------------------------------------\n");
}
{
printf("\t%s\t%d\n", $1, i);
i++;
}'
echo -n "Input one name to hace access with Internet (eth0): "
read INTERNAME
if [ ! $INTERNAME ]; then #default name is eth0
INTERNAME="eth0"
fi
#if the name input is correct or not
TMP_NUM=`ifconfig -a | grep "HWaddr" | grep "$INTERNAME" | wc -l`
if [ $TMP_NUM -eq 0 ]; then
echo "You have input an invalid name of net interface"
return 1
fi
else
INTERNAME=`ifconfig -a |grep "HWaddr" | awk '{print $1}'`
fi
echo "The name of interface is: " $INTERNAME

#okey, we have got correct env & parameters to run this process
#However, definitly necessary ini files as well as process file must be found
#in the same path
if [ ! -f "racer.ini" ]; then
echo "Warning: No relative file racer.ini found, re-creating"
echo "Server1=218.29.0.227" >racer.ini
echo "Server2=218.29.0.228" >>racer.ini
fi

if [ ! -f "$X_NAME" ]; then
echo "Unable to find process to run, try re-install your process again!"
return 1
fi

if [ ! -x "$X_NAME" ]; then
chmod +x $X_NAME
fi

if [ ! -L "$EXCUTE_NAME" ]; then
ln -s $X_NAME $EXCUTE_NAME
fi

./$EXCUTE_NAME $INTERNAME

RETVAL=$?
if [ ! $RETVAL -eq 0 ]; then
echo "Failed to run the process"
else
echo "$EXCUTE_NAME has been started successfully"
fi

return 0
}

#for help info
usage()
{
echo "Usage: $0 {[start]|[status]|[stop]}"
}

#to stop ecou
stop_ecou()
{
#ps -ef | grep "$EXCUTE_NAME" | grep -v grep | awk '{print $2}' | xargs kill -SIGINT 2>/dev/null
pgrep -nx "$EXCUTE_NAME" | xargs kill -SIGINT 2>/dev/null
FINDNUM=1
while [ ! $FINDNUM -eq 0 ]
do
#FINDNUM=`ps -ef | grep "$EXCUTE_NAME" | grep -v grep | wc -l`
FINDNUM=`pgrep -nx "$EXCUTE_NAME" | wc -l`
sleep 1
done
if [ $? -eq 0 ]; then
echo "The process has been halted successfully"
else
echo "Failed to terminate the process OR the process is not running"
fi
}

#to tell status
tell_status()
{
#ps -ef | grep "$EXCUTE_NAME" | grep -v grep | awk '{print $2}' | xargs kill -SIGUSR1 2>/dev/null
pgrep -nx "$EXCUTE_NAME" | xargs kill -SIGUSR1 2>/dev/null
if [ $? -eq 0 ]; then
return;
else
echo "No status returned for $EXCUTE_NAME"
fi
}

#main
PARAM_NUM=$#
if [ ! $PARAM_NUM -eq 1 ]; then
usage
exit
fi

if [ -n $RACERC ]; then
cd $RACERC
fi

if ! verify_system
then
exit
fi

case $1 in
start) start_ecou;;
status) tell_status;;
stop) stop_ecou;;
*) usage;;
esac


是这样的,小弟是菜鸟……但是想用这个客户端上网,所以发现了几点问题

这个客户端是来分析ifconfig -a 的情况来判断有什么卡的

在中文ubuntu下,由于ifconfig -a显示的是中文,没有HWaddr这一项,所以会提示找不到活动网卡,如果把HWaddr替换为硬件地址,就可以了

但是又有一个疑问,由于河南bt网通采用了mac绑定,换了一块网卡就不行了,所以每次上网前执行 ifconfig eth0 hw ether XXXXXXXXXXX命令修改网卡mac地址,以前使用可行(以前的方法是删除某个文件,是ifconfig -a显示英文,但是与显卡驱动冲突),但是现在就不行了

所以,我请问

1,能不能修改locale使得ifconfig -a 显示英文
2,如果不能,怎么修改这个脚本,让它达到认出虚拟mac地址的效果……

由于是菜鸟,所以一些专业术语可能用错了……- -bbb
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

Re: 大家来分析一下河南网通的脚本

#2

帖子 nobrain » 2007-02-18 13:27

htc 写了: 1,能不能修改locale使得ifconfig -a 显示英文
在#!/bin/sh下面一行加上:

代码: 全选

export LC_ALL=en_US
爱喝真猪奶茶的夜鸣猪
回复