mirror of
https://github.com/Telecominfraproject/wlan-cloud-tools.git
synced 2026-01-27 02:22:57 +00:00
Initial commit
This commit is contained in:
167
microservice_sample/test_scripts/curl/cli
Executable file
167
microservice_sample/test_scripts/curl/cli
Executable file
@@ -0,0 +1,167 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# License type: BSD 3-Clause License
|
||||
# License copy: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/LICENSE
|
||||
#
|
||||
# Created by Stephane Bourque on 2021-03-04.
|
||||
# Arilia Wireless Inc.
|
||||
#
|
||||
|
||||
if [[ "$(which jq)" == "" ]]
|
||||
then
|
||||
echo "You need the package jq installed to use this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$(which curl)" == "" ]]
|
||||
then
|
||||
echo "You need the package curl installed to use this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${OWSEC}" == "" ]]
|
||||
then
|
||||
echo "You must set the variable OWSEC in order to use this script. Something like"
|
||||
echo "OWSEC=security.isp.com:16001"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${FLAGS}" == "" ]]
|
||||
then
|
||||
FLAGS="-s"
|
||||
fi
|
||||
|
||||
target_microservice=ow_helloworld
|
||||
token=""
|
||||
result_file=result.json
|
||||
#username="script.runner@arilia.com"
|
||||
#password="RunningScript100#"
|
||||
browser_list=(firefox sensible-browser xdg-open w3m links links2 lynx youtube-dl)
|
||||
browser=""
|
||||
|
||||
login() {
|
||||
payload="{ \"userId\" : \"$username\" , \"password\" : \"$password\" }"
|
||||
token=$(curl ${FLAGS} -X POST -H "Content-Type: application/json" -d "$payload" "https://${OWSEC}/api/v1/oauth2" | jq -r '.access_token')
|
||||
|
||||
if [[ "${token}" == "" ]]
|
||||
then
|
||||
echo "Could not login. Please verify the host and username/password."
|
||||
exit 13
|
||||
fi
|
||||
echo "${token}" > token.json
|
||||
setservicevar
|
||||
}
|
||||
|
||||
findbrowser() {
|
||||
if [[ "${browser}" != "" ]]
|
||||
then
|
||||
echo
|
||||
elif [[ "$(uname)" == "Darwin" ]]
|
||||
then
|
||||
browser=open
|
||||
else
|
||||
BROWSER_LIST=(firefox sensible-browser xdg-open w3m links links2 lynx youtube-dl)
|
||||
for br_name in "${browser_list[@]}"
|
||||
do
|
||||
if [[ $(which ${br_name}) != "" ]]
|
||||
then
|
||||
browser=${br_name}
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
setservicevar() {
|
||||
curl ${FLAGS} -X GET "https://${OWSEC}/api/v1/systemEndpoints" \
|
||||
-H "accept: application/json" \
|
||||
-H "Authorization: Bearer ${token}" > ${result_file}
|
||||
# jq < ${result_file}
|
||||
|
||||
for index in {0..10}
|
||||
do
|
||||
endpointlocation=".endpoints[${index}].uri"
|
||||
endpointlocationtype=".endpoints[${index}].type"
|
||||
rawurl="$(cat ${result_file} | jq -r ${endpointlocation})"
|
||||
svctype="$(cat ${result_file} | jq -r ${endpointlocationtype})"
|
||||
proto="$(echo $rawurl | grep :// | sed -e's,^\(.*://\).*,\1,g')"
|
||||
url="$(echo ${rawurl/$proto/})"
|
||||
user="$(echo $url | grep @ | cut -d@ -f1)"
|
||||
hostport="$(echo ${url/$user@/} | cut -d/ -f1)"
|
||||
host="$(echo $hostport | sed -e 's,:.*,,g')"
|
||||
port="$(echo $hostport | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')"
|
||||
path="$(echo $url | grep / | cut -d/ -f2-)"
|
||||
if [[ ${url} != "null" ]]
|
||||
then
|
||||
if [[ ${svctype} == "${target_microservice}" ]]
|
||||
then
|
||||
# echo "url: $url"
|
||||
# echo " proto: $proto"
|
||||
# echo " user: $user"
|
||||
# echo " host: $host"
|
||||
# echo " port: $port"
|
||||
# echo " path: $path"
|
||||
OWMS="${url}"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
# echo "Using ${OWMS}..."
|
||||
}
|
||||
|
||||
logout() {
|
||||
curl ${FLAGS} -X DELETE -H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer ${token}" \
|
||||
"https://${OWSEC}/api/v1/oauth2/${token}"
|
||||
rm -rf token.json
|
||||
}
|
||||
|
||||
hello() {
|
||||
curl ${FLAGS} -X GET --url "https://${OWMS}/api/v1/hello" \
|
||||
-H "accept: application/json" \
|
||||
-H "Authorization: Bearer ${token}" > ${result_file}
|
||||
jq < ${result_file}
|
||||
}
|
||||
|
||||
systeminfo() {
|
||||
curl ${FLAGS} -X GET "https://${OWMS}/api/v1/system?command=info" \
|
||||
-H "accept: application/json" \
|
||||
-H "Authorization: Bearer ${token}" > ${result_file}
|
||||
jq < ${result_file}
|
||||
}
|
||||
|
||||
reloadsubsystem() {
|
||||
payload="{ \"command\" : \"reload\", \"subsystems\" : [ \"$1\" ] }"
|
||||
curl ${FLAGS} -X POST "https://${OWMS}/api/v1/system" \
|
||||
-H "accept: application/json" \
|
||||
-H "Authorization: Bearer ${token}" \
|
||||
-d "$payload"
|
||||
}
|
||||
|
||||
help() {
|
||||
echo
|
||||
echo "hello Get the device JSON document."
|
||||
echo "setloglevel <sys> <level> Set the logging system level for individual subsystems."
|
||||
echo " sys:ufileuploader/websocket/storage/restapi/commandmanager/auth/deviceregistry/all"
|
||||
echo " level:none/fatal/critical/error/warning/notice/information/debug/trace"
|
||||
echo "getloglevels Get the log levels of all the subsystems"
|
||||
echo "getloglevelnames Get the list of log level names possible"
|
||||
echo "getsubsystemnames Get the subsystems that can be used when setting log levels."
|
||||
echo
|
||||
echo
|
||||
}
|
||||
|
||||
shopt -s nocasematch
|
||||
case "$1" in
|
||||
"findbrowser") findbrowser; echo "Browser: ${browser}" ;;
|
||||
"setloglevel") login; setloglevel "$2" "$3" ; logout ;;
|
||||
"getloglevels") login; getloglevels; logout ;;
|
||||
"getloglevelnames") login; getloglevelnames; logout ;;
|
||||
"getsubsystemnames") login; getsubsystemnames; logout ;;
|
||||
"reloadsubsystem") login; reloadsubsystem; logout ;;
|
||||
"systeminfo") login; systeminfo ; logout;;
|
||||
"hello") login; hello ; logout;;
|
||||
*) help ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user