리 눅 스 셸 스 크 립 트 로 Radius 서버 관리 하기
셸 스 크 립 트 특유 의 강력 한 텍스트 처리 능력 과 각종 명령 함수 의 조합 으로 관리자 의 작업 이 수월 해 집 니 다.
참고 로 이 스 크 립 트 의 기능 을 보 여 줍 니 다.
#!/bin/bash
#
# Source function library.
. /etc/rc.d/init.d/functions
RADIUSD=/usr/sbin/radiusd
LOCKF=/var/lock/subsys/radiusd
CONFIG=/etc/raddb/radiusd.conf
USERCONFIG=/etc/raddb/users
[ -f $RADIUSD ] || exit 0
[ -f $CONFIG ] || exit 0
[ -f $USERCONFIG ] || exit 0
RETVAL=0
OPERATION=$1
MACADDRESS=$2
function help()
{
clear
echo $""
echo $"===================================================================================="
echo $"For Radius on Fedora/CentOS/RadHat Linux Server, Written by Chris"
echo $"===================================================================================="
echo $"A tool to manage Radius server"
echo $""
echo $"Usage: $0 {find|add|modify|delete|check|remove|start|stop|status|restart|reload} mac"
#TODO
echo $"Usage: $0 {import|export|debug}"
echo $""
echo $"For more information please contract [email protected]"
echo $"===================================================================================="
echo $""
exit 1
}
function mac()
{
if [ -z $MACADDRESS ];then
echo $"no mac address is signed! "
echo $"\$2 is $MACADDRESS"
exit 1
else
if [[ "${#MACADDRESS}" != "12" ]] && [[ "${#MACADDRESS}" != "17" ]] ;then
echo "mac length is ${#MACADDRESS}"
echo "mac address is illegal! "
exit 1
# else
# echo $"mac which you input is $MACADDRESS"
fi
#echo $MACADDRESS | sed -nr '/[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}/p'
#echo $MACADDRESS | sed -nr '/[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}/p'
#echo $MACADDRESS | sed -nr '/[A-Fa-f0-9]{12}/p'
if [[ `echo $MACADDRESS | grep -` ]];then
PROMAC=`echo $MACADDRESS | sed -nr '/[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}/p' | tr '[:upper:]' '[:lower:]' | sed 's/-//g'`
elif [[ `echo $MACADDRESS | grep :` ]];then
PROMAC=`echo $MACADDRESS | sed -nr '/[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}/p' | tr '[:upper:]' '[:lower:]' | sed 's/://g'`
else
PROMAC=`echo $MACADDRESS | tr '[:upper:]' '[:lower:]'`
fi
echo $PROMAC
fi
}
function find()
{
MAC=`mac`
echo $"accepted mac is $MAC"
if [[ `grep $MAC $USERCONFIG` ]]; then
MACLINE=`grep -n $MAC $USERCONFIG | awk -F ':' '{print $1}'`
#echo $MACLINE
MACLINECOUNT=$(echo $MACLINE | wc -w)
#echo $MACLINECOUNT
if [[ "$MACLINECOUNT" != "1" ]];then
echo $"ERROR, this mac $MAC has duplicate record, you should use $0 remove $MAC to remove duplicate record"
exit 1
fi
echo $"Successfully find $MAC in $MACLINE line of file $USERCONFIG! "
echo
REVAL=$?
else
echo $"Can not find $MAC in file $USERCONFIG! "
echo
exit 1
REVAL=$?
fi
}
function add()
{
MAC=`mac`
echo $"accepted mac is $MAC"
#find $MAC
LINENUM=`grep -n "Cleartext-Password :='" $USERCONFIG | grep -v \# | head -n1 | awk -F ":" '{print $1}'`
SEDOPERATION=$LINENUM"a"
sed -i "$SEDOPERATION $MAC Cleartext-Password :='$MAC'" $USERCONFIG
find $MAC
restart
}
function modify()
{
MAC=`mac`
find $MAC
#TODO
}
function delete()
{
MAC=`mac`
echo $"accepted mac is $MAC"
if [[ `grep $MAC $USERCONFIG` ]]; then
MACLINE=`grep -n $MAC $USERCONFIG | awk -F ':' '{print $1}'`
##echo $MACLINE
#MACLINECOUNT=$(echo $MACLINE | wc -w)
##echo $MACLINECOUNT
#if [[ "$MACLINECOUNT" != "1" ]];then
# echo $"ERROR, this mac $MAC has duplicate record, you should use $0 remove $MAC to remove duplicate record"
# exit 1
#fi
echo $"Successfully find $MAC in $MACLINE line of file $USERCONFIG! "
echo $"It will be deleted! "
sed -i "$MACLINE d" $USERCONFIG
#TODO
echo $"If you see 'Can not find $MAC in file $USERCONFIG! ', it means successfully! "
find $MAC
echo
REVAL=$?
else
echo $"Can not find $MAC in file $USERCONFIG! "
echo
REVAL=$?
fi
}
function check()
{
MAC=`mac`
find $MAC
remove $MAC
}
function remove()
{
MAC=`mac`
echo $"accepted mac is $MAC"
#TODO
#echo $"backuped file to file $FILENAME"
if [[ `grep $MAC $USERCONFIG` ]]; then
MACLINE=`grep -n $MAC $USERCONFIG | awk -F ':' '{print $1}'`
#echo $MACLINE
MACLINECOUNT=$(echo $MACLINE | wc -w)
#echo $MACLINECOUNT
if [[ "$MACLINECOUNT" == "1" ]];then
echo $"WARNNING, this mac $MAC is good record, no duplicate record has found! "
exit 0
fi
TOREMOVE="$MAC Cleartext-Password :='$MAC'"
sed -i "/^$TOREMOVE$/d" $USERCONFIG
add $MAC
fi
}
function restart()
{
service radiusd restart
}
function reload()
{
service radiusd reload
}
function status()
{
service radiusd status
}
case "$1" in
find)
find
RETVAL=$?
;;
add)
add
RETVAL=$?
;;
modify)
modify
RETVAL=$?
;;
delete)
delete
RETVAL=$?
;;
check)
check
RETVAL=$?
;;
remove)
remove
RETVAL=$?
;;
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
restart)
restart
RETVAL=$?
;;
reload)
reload
RETVAL=$?
;;
*)
help
exit 1
;;
esac
그 중에서 개선 할 수 있 는 부분 이 있 습 니 다. 예 를 들 어 다른 방법 으로 바 꾸 거나 사용자 의 사용 체험 을 강화 하 는 것 도 가능 합 니 다. 여러분 의 의견 을 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MVC의 심연를 보면 Trygve Reenskaug씨가 고안했다고 쓰여 있다. 뷰에 조작 오브젝트가 있는 경우와, 단순히 키보드나 마우스의 상태를 픽업하는 것을 고려하는 예이다. 그러나 잘 생각하면 이상하다. 예를 들어 키보드에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.