shell 自动map和unmap 应用实例url域名【高级版】

#!/bin/bash
# ************************ USEAGE **********************************
# program:mapurl.sh
# Time:2017/12/14
# version:V 3.0.0
# auth: Eden
# content:user to map or unmap url
# note:
#     1.only suitable for cloudfoundry appname's url
# ******************************************************************

###url map  function  for  cloudfoundry
function mapurl(){
#a="one,two,three,four"
a=$(cf a|grep $1|tr -s ' '|cut -d ' ' -f 6-|cut -d ',' -f 1-)
OLD_IFS="$IFS"
IFS=","
arr=($a)
IFS="$OLD_IFS"

for s in ${arr[@]}
do
 echo "$s"
 echo ${s}|grep -q "/"
 RTN=`echo $?`
 if [[ ${RTN} -eq 0 ]];then
    rurl=$(echo $s|cut -d '/' -f 1)
    rpath=$(echo $s|cut -d '/' -f 2)
    cf map-route $2  $(echo "$rurl"|cut -d '.' -f 2-) -n $(echo "$rurl"|cut -d '.' -f 1) --path ${rpath}
 else
    cf map-route $2  $(echo "$s"|cut -d '.' -f 2-) -n $(echo "$s"|cut -d '.' -f 1) 
 fi

done
}

###url unmap  function  for  cloudfoundry
function unmapurl(){
a=$(cf a|grep $1|tr -s ' '|cut -d ' ' -f 6-|cut -d ',' -f 1-)
OLD_IFS="$IFS"
IFS=","
arr=($a)
IFS="$OLD_IFS"

for s in ${arr[@]}
do
echo "$s"
echo ${s}|grep -q "/"
 RTN=`echo $?`
 if [[ ${RTN} -eq 0 ]];then
    rurl=$(echo $s|cut -d '/' -f 1)
    rpath=$(echo $s|cut -d '/' -f 2)
    cf unmap-route $1  $(echo "$rurl"|cut -d '.' -f 2-) -n $(echo "$rurl"|cut -d '.' -f 1) --path ${rpath}
 else
    cf unmap-route $1  $(echo "$s"|cut -d '.' -f 2-) -n $(echo "$s"|cut -d '.' -f 1) 
 fi

done
}
#########################################################
MAP_FLAG=FALSE;

ARGS=`getopt -o at:c:: --long all,type:,clong:: -n 'example.sh' -- "$@"`
if [ $? != 0 ]; then
    echo "Terminating..."
    exit 1
fi

#echo $ARGS
#将规范化后的命令行参数分配至位置参数($1,$2,...)
eval set -- "${ARGS}"

while true
do
    case "$1" in
        -a|--all) 
            echo "map and unmap url";
            MAP_FLAG=TRUE;
            shift
            ;;
        -t|--type)
            echo "Option t, argument $2";
            MAP_TYPE=$2
            shift 2
            ;;
        -c|--clong)
            case "$2" in
                "")
                    echo "Option c, no argument";
                    shift 2  
                    ;;
                *)
                    echo "Option c, argument $2";
                    shift 2;
                    ;;
            esac
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!"
            exit 1
            ;;
    esac
done

#处理剩余的参数
for arg in $@
do
    echo "appname: $arg"
done

#handles the domain name of the application process
SOURCE_APPNAME=$1;
DEST_APPNAME=$2;
if [[ "_$MAP_FLAG" == "_TRUE" ]];then
    mapurl $SOURCE_APPNAME $DEST_APPNAME;
    unmapurl $SOURCE_APPNAME;
    echo $MAP_FLAG
else
    if [ "_$(echo $MAP_TYPE|tr 'a-z' 'A-Z')" == "_MAP" ];then
        echo $MAP_TYPE|tr 'a-z' 'A-Z'
        mapurl $SOURCE_APPNAME $DEST_APPNAME ;
        echo "$SOURCE_APPNAME, $DEST_APPNAME" ;
    elif [ "_$(echo $MAP_TYPE|tr 'a-z' 'A-Z')" == "_UNMAP" ];then
        echo $MAP_TYPE|tr 'a-z' 'A-Z'
        unmapurl $SOURCE_APPNAME;
        echo $SOURCE_APPNAME;
    else
        echo  "please input url map type:map or unmap!"    
    fi
fi
原文地址:https://www.cnblogs.com/husbandmen/p/8039712.html