一道面試題

【試題】
這是一個腳本試題
 

爲了定時檢測服務器狀態 需要有一個可以定時運行的腳本,此腳本運行在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


 

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