I am using the following bash
script in order to get info from curl from --> https://komat/api/v1/jedh
( from chrome browser page we get the expected results but not from curl
)
#!/bin/bash
url="https://komat/api/v1/jedh"
user="toto"
password="blomatis!"
curl_opts=(
--insecure
--request GET
--header "Accept: application/json"
--header "Content-Type: application/json"
--header "Authorization: Basic $( echo "$user:$password" | base64 )"
)
curl "${curl_opts[@]}" "$url"
but the output that we get is
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>401 - Unauthorized: Access is denied due to invalid credentials.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
<div class="content-container"><fieldset>
<h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
<h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
</fieldset></div>
</div>
</body>
</html>
from the windows machine on the browser page we get the right output but not from the Linux machine by curl
any suggestion on how to resolve the above problem?
our machine version
more /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
Mistake just here:
echo "$user:$password" | base64
When you try to encode this string, you encode the string with the newline.
Just add -n
parameter for echo
command:
echo -n "$user:$password" | base64