How can I use Curl to interact with websudo in Jira or Confluence?

I want to be able to kick of the re-indexing processes in Jira and Confluence from the command line as part of our sandbox refresh automation.

For this, I'm using bash and curl.

However I cannot figure out how to deal with the websude redirect that occurs when you request any admin page in either of the applications. My script for Confluence is below (based on similar Jira script I saw on

### SETTINGS ###
read -p "Enter LDAP user: " USERNAME
read -s -p "Enter LDAP password: " PASSWORD
### COMMANDS ###
curl -v -u $USERNAME:$PASSWORD --cookie-jar $COOKIE_FILE_LOCATION --output /dev/null $DASHBOARD_PAGE_URL
#curl -v --cookie-jar $COOKIE_FILE_LOCATION --cookie $COOKIE_FILE_LOCATION --header "X-Atlassian-Token: no-check" -d "password=$PASSWORD" --output /dev/null $WEBSUDO_REDIRECT
curl -v --location --cookie $COOKIE_FILE_LOCATION --header "X-Atlassian-Token: no-check" -d "webSudoPassword=$PASSWORD" -d "rebuild-search-index-form=" --output /dev/null $INDEX_PAGE_URL

Any ideas here?

4 answers

You can authenticate, save the cookie, and post to the websudo page specifying the destination as the protected action to run.

curl -o /dev/null -k -c cookies.txt -d "os_username=${USERNAME}&os_password=${PASSWORD}" https://host/jira/login.jsp

token=`tail -1 cookies.txt | tr -s "\t" " " | cut -d" " -f7`

curl -o a.html -kL -b cookies.txt -d "webSudoPassword=${PASSWORD}&webSudoDestination=/your/target/action&atl_token=${token}" "https://host/jira/secure/admin/WebSudoAuthenticate.jspa"

Thanks, that helped. I had to also pass the header:

--header "X-Atlassian-Token: no-check"

Hi ,

Did you make it work for confluence ? If yes, please could you post it here ?We have been trying to automate index rebuild for confluence ( ver 4.3.7) . The script reaches the search indexes screen - but it is not able to trigger the reindex action. Our script goes like this :


curl -k -c cookies.txt -d "os_username=<user>&os_password=<password>&os_destination=/dashboard.action&login=Log In" https://<server>/confluence/dologin.action<br< a="">>
cookieID=`tail -1 cookies.txt | tr -s "\t" " " | cut -d" " -f7`

echo ${cookieID}

curl -o b.html -kL -b cookies.txt
http://<server>/confluence/authenticate.action?destination=/admin/search-indexes.action<br< a="">>
curl -o c.html -kL -b cookies.txt -d "password=<password>&authenticate=Confirm"
http://<server>/confluence/doauthenticate.action?destination=/admin/search-indexes.action<br< a="">>
#works till the above curl.

atl_token=`cat c.html | grep -i atlassian-token | cut -d'=' -f4 | tr -d ">" | tr -d "\""`

echo ${atl_token}

curl -o d.html -kL -b cookies.txt -d "atl_token=${atl_token}&submit=Build"
http://<server>/confluence/admin/reindex.action<br< a="">>
rm cookies.txt


What could be the issue with the last curl to call reindex.action ? We tried with referer

curl -o d.html -kL -b cookies.txt -d "atl_token=${atl_token}&submit=Build" -e http://<server> /confluence/admin/search-indexes.action http://<server>/confluence/admin/reindex.action

and also this redirect :

curl -v -o d.html -kL -b cookies.txt -d "password=<password>" http://<server>/confluence/doauthenticate.action?destination=/admin/reindex.action

But none worked.


Vineetha, were you ever able to figure out a solution? I am also stuck where you were at.

Not sure with curl. However, renderRequest action from JIRA Command Line Interface will do a websudo for you automatically if you are accessing a /secure url.


With confluence, we automated the re-indexing by passing the ds_01a and myacinfo cookies, plus atlassian token. The below script worked for us.

##Variable declarations



COOKIE_DS01_A=&lt;value&gt; # got from inspect

COOKIE_MYACINFO=&lt;value&gt; # got from inspect







curl -k  -c cookies.txt  -d "os_username=${USERNAME}&amp;os_password=${PASSWORD}&amp;os_destination=/dashboard.action&amp;login=Log In" $LOGIN_PAGE_URL


curl -o b.html -kL -b cookies.txt  -c cookies.txt   $ADMIN_AUTHENTICATE_PAGE_URL


curl -o c.html -kL  -b cookies.txt  -c cookies.txt  -d "password=${PASSWORD}&amp;authenticate=Confirm"    $ADMIN_DOAUTHENTICATE_PAGE_URL


atl_token=`cat c.html | grep -i atlassian-token | cut -d'=' -f4 | tr -d "&gt;"  | tr -d "\""`


echo ${atl_token}


isRebuild=`grep build-search-index-button c.html | grep -i rebuild`

isRebuildTaskInProgress=`grep reindex-task-in-progress c.html`


if [ -z "$isRebuildTaskInProgress" ] 


if [ -n "$isRebuild" ] 


echo "Rebuilding indexes"

curl -o d.html -kL -b cookies.txt -b "ds01_a=${COOKIE_DS01_A}; myacinfo=${COOKIE_MYACINFO}"   -d "atl_token=${atl_token}&amp;submit=Rebuild"  $REINDEX_PAGE_URL


echo "Building indexes"

curl -o d.html -kL -b cookies.txt    -d "atl_token=${atl_token}&amp;submit=Build"  $REINDEX_PAGE_URL



rm cookies.txt *.html

Thanks! But would you mind putting your code into a code block? :)

Code block it is :)

Thanks Vineetha

I wasn't able to get Eddie's sample code to work properly. However, I did arrive at a similar solution, located here:

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Mar 12, 2019 in Confluence

Confluence Admin Certification now $150 for Community Members

More and more people are building their careers with Atlassian, and we want you to be at the front of this wave! Important Dates Start the Certification Prep Course by 2 April 2019 Take your e...

259 views 2 10
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you