一道面试题

【试题】
这是一个脚本试题
 

为了定时检测服务器状态 需要有一个可以定时运行的脚本,此脚本运行在Linux服务器环境下 可以检测http://lonlife.net/lonlife.xml页面内所有的服务器状态,目前配置为每10分钟检测一次 服务器分三种


第一种种是socks5代理的 端口通常为443或53 比如 这里面port为端口 host为服务器地址

第二种是snt 此业务在linux下 无客户端 所以不用检测了 端口为80

第三种是openvpn 在栏内

只要检测 第一 和 第三种 就行了

要求先提取lonlife.xml内的服务器列表再进行检测

检测方法是 找到linux下的socks5与openvpn的客户端软件,搜索"socks5 linux client"或"openvpn linux client"会找到

对lonlife.xml内所有的服务器地址与端口进行连接 连接成功后访问www.123cha.com或www.ip138.com 如果能正常访问则表示服务正常 记录日志 如果检测的服务器不正常 则发邮件至[email protected] 并记录日志

openvpn的证书 可以在这里下载 www.lonlife.net/down 下载的客户端里有 配置文件则请将lonlife.xml内flag中内容进行base64反编译即可获得

测试用的用户名密码为 lontestt 加密后密码为d89f3c83 (加密后的密码仅用于登陆第三方客户端 即非lonlife加速器客户端)

Windows版本测试客户端 http://lonlife.net/files/s5.rar 下载后运行 SuperSocks5Cap_RunAsAdmin.exe 即可打开 此时可以点"配置"对代理进行配置 可以修改账号密码 连接的服务器地址与端口 也可以直接点击"代理所有新进程(排除)运行的进程" 点击后代理就生效了 先关闭所有的浏览器 再重新打开 然后可以打开www.ip138.com或www.123cha.com 可以看到已经变成代理服务器的ip地址了 证明代理生效了。

这个脚本我们的sa在8小时内完成 所以要求应试人员在8小时内完成 如果能写出来 超过8小时也行

 

socks5和openvpn检测没有做

 

#!/bin/bash

wget http://lonlife.net/lonlife.xml
if [ $? = 1 ];then
echo "get failied ! exit "
exit 1
fi

file=./lonlife.xml
temp_file=./.temp_file
i=1    #line_num
flag=0 #注释标识
rm -f $temp_file

#提取服务器列表 name,host,port
cat $file | while read line
do
#echo "$i:$line"
#判断是否被注释
if [ $flag = 1 ];then
	if echo "x$line" | grep -q "x-->";then
		flag=0
		let "i = $i + 1"
		continue
	else
		let "i = $i + 1"
		continue
	fi
fi

if echo "$line" | grep -q "<!--";then
	flag=1
	let "i = $i + 1"
	continue
fi

echo $line|grep server|grep host|grep port >/dev/null
if [ $? = 0 ];then
#	echo "$i:$line"
	echo "$line" | awk 'BEGIN{FS="[\" =]";OFS=",";} {print $4,$8,$12}' >>$temp_file

fi
let "i = $i + 1"
done


socks5_check(){
	echo "socks5 $1 $2 $3"
	#test command
}

openvpn_check(){
echo "openvp $1 $2 $3"
	#test command
}


#连接并测试
cat $temp_file |while read line
do
name=`echo "$line" |awk -F',' '{print $1}'`
host=`echo "$line" |awk -F',' '{print $2}'`
port=`echo "$line" |awk -F',' '{print $3}'`
#echo $name $port $host

if [ $port = 443 -o $port = 53 ];then
	socks5_check  $name $host $port
elif [ $port = 80 ];then
continue
else
	openvpn_check $name $host $port
fi
done


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章