Created 04-11-2021 10:33 PM
Hi Team ,
I trying to get information using curl command and seems CM Manager sending me login page. I already using user name and password .
curl -X GET --user 'xxxx':'xxxx' https://CM URL:7183/cmf/serviceRedirect/schemaregistry/instances
<!-- __CLOUDERA__PRE__LOGIN__FORM__ -->
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body></body>
</html>
<script type="text/javascript">
var returnUrl = window.location.pathname + window.location.search + window.location.hash;
var loginPageUrl = "/cmf/login";
if (returnUrl !== "/cmf" && returnUrl !== "/cmf/" && returnUrl !== "/cmf/home" && returnUrl !== "/cmf/home/") {
loginPageUrl = loginPageUrl + "?returnUrl=" + encodeURIComponent(returnUrl);
}
window.location = loginPageUrl;
</script>
pls some one help.
Thanks
Created on 03-15-2022 08:30 AM - edited 03-15-2022 08:44 AM
Found a dirty workaround: generate a cookie from an API call and then use it to login into the console. As an example, in order to get the HDFS usage report,
#!/bin/bash -x
COOKIES=./cookies.txt
USER=""
PASS=""
LOGIN="https://<cloudera_manager>:7183/api/version"
REPORT="https://<cloudera_manager>:7183/cmf/services/11/nameservices/nameservice1/reports/currentDiskUsage?g...
"
SALIDA=./hdfs_usage.csv
function login_cloudera(){
USER=$1
PASS=$2
wget --save-cookies ${COOKIES} --keep-session-cookies --user
"${USER}" --password "$(echo ${PASS}|base64 -d)" --delete-after
${LOGIN}
}
function download_report(){
USER=$1
read -p "Password:" -s PASS
PASS=$(echo $PASS | base64)
login_cloudera $USER $PASS
wget --load-cookies ${COOKIES} ${REPORT} -O ${SALIDA}
rm ${COOKIES}
}
# MAIN
USER=$1
download_report $USER
Created 04-11-2021 11:25 PM
Hello
One example
$ curl -X GET -u "admin:admin" -i http://cm-host:7180/api/v6/tools/echo?message=hello
Created 04-11-2021 11:45 PM
getting below error
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 401 Bad credentials</title>
</head>
<body><h2>HTTP ERROR 401</h2>
<p>Problem accessing /api/v6/tools/echo. Reason:
<pre> Bad credentials</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.14.v20181114</a><hr/>
</body>
</html>
Created 04-11-2021 11:49 PM
user name and url mark as xxx
curl -X GET --user 'xxxx':'xxxx' -i https://CMURL:7183/cmf/serviceRedirect/schemaregistry/instances
HTTP/1.1 200 Connection established
HTTP/1.1 200 OK
Date: Mon, 12 Apr 2021 06:47:14 GMT
Set-Cookie: CLOUDERA_MANAGER_SESSIONID=node0xzy9bnjzrx6x1s70qz8gu8w2713126907.node0;Path=/;Secure;HttpOnly
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Language: en-AU
Content-Type: text/html;charset=utf-8
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Expires: Tue, 01 Jan 1980 1:00:00 GMT
X-UA-Compatible: IE=edge
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Content-Length: 546
Server: Jetty(9.4.14.v20181114)
<!-- __CLOUDERA__PRE__LOGIN__FORM__ -->
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body></body>
</html>
<script type="text/javascript">
var returnUrl = window.location.pathname + window.location.search + window.location.hash;
var loginPageUrl = "/cmf/login";
if (returnUrl !== "/cmf" && returnUrl !== "/cmf/" && returnUrl !== "/cmf/home" && returnUrl !== "/cmf/home/") {
loginPageUrl = loginPageUrl + "?returnUrl=" + encodeURIComponent(returnUrl);
}
window.location = loginPageUrl;
</script>
Created on 03-15-2022 08:30 AM - edited 03-15-2022 08:44 AM
Found a dirty workaround: generate a cookie from an API call and then use it to login into the console. As an example, in order to get the HDFS usage report,
#!/bin/bash -x
COOKIES=./cookies.txt
USER=""
PASS=""
LOGIN="https://<cloudera_manager>:7183/api/version"
REPORT="https://<cloudera_manager>:7183/cmf/services/11/nameservices/nameservice1/reports/currentDiskUsage?g...
"
SALIDA=./hdfs_usage.csv
function login_cloudera(){
USER=$1
PASS=$2
wget --save-cookies ${COOKIES} --keep-session-cookies --user
"${USER}" --password "$(echo ${PASS}|base64 -d)" --delete-after
${LOGIN}
}
function download_report(){
USER=$1
read -p "Password:" -s PASS
PASS=$(echo $PASS | base64)
login_cloudera $USER $PASS
wget --load-cookies ${COOKIES} ${REPORT} -O ${SALIDA}
rm ${COOKIES}
}
# MAIN
USER=$1
download_report $USER