Shutdown unraid with curl


Recommended Posts

Hi Guys,

 

I'm trying to shutdown unraid via curl, so I can do a proper shutdown in the terminal. The main reason I want to do this is that I want to shutdown my server with Google Home. After reading here that there is no completely clean way to do this directly from the terminal I figured why not just press the shutdown button in the webinterface. I already tried instructions from unraid v5 (see link) however this did not work for me.

 

These are the commands I tried:

curl -u root:<password> http://<server-ip>/update.htm?shutdown=apply

curl -u root:<password> http://<server-ip>/webGui/include/Boot.php

 

 

 

 

Any advice is greatly appreciated. 

 

Link to comment
Hi Guys,
 
I'm trying to shutdown unraid via curl, so I can do a proper shutdown in the terminal. The main reason I want to do this is that I want to shutdown my server with Google Home. After reading here that there is no completely clean way to do this directly from the terminal I figured why not just press the shutdown button in the webinterface. I already tried instructions from unraid v5 (see link) however this did not work for me.
 
These are the commands I tried:
curl -u root: http:///update.htm?shutdown=apply
curl -u root: http:///webGui/include/Boot.php
 
 
 
 
Any advice is greatly appreciated. 
 
Remind me tomorrow. Since I've already read the thread, I'll forget about it

Sent from my NSA monitored device

Link to comment

Thanks Squid, I tried a few different things now, however I only got the one in the thread you linked working:

<?
$vars = parse_ini_file("/var/local/emhttp/var.ini");
exec('wget -qO /dev/null  "http://localhost:80/update.htm?cmdStop=Stop&csrf_token='.$vars['csrf_token'].'"');
?>

 

When I tried to adapt to the shutdown command none of these approaches worked:

<?
$vars = parse_ini_file("/var/local/emhttp/var.ini");
exec('wget -qO /dev/null  "http://localhost:80/update.htm?shutdown=apply&csrf_token='.$vars['csrf_token'].'"');
?>
<?
$vars = parse_ini_file("/var/local/emhttp/var.ini");
exec('wget -qO /dev/null  "http://localhost:80/update.htm?cmdShutdown=Apply&csrf_token='.$vars['csrf_token'].'"');
?>
<?
$vars = parse_ini_file("/var/local/emhttp/var.ini");
exec('wget -qO /dev/null  "http://localhost:80/update.htm?shutdown=shutdown&csrf_token='.$vars['csrf_token'].'"');
?>

 

I think my main issue at this point is, that I don't know how to find out which command corresponds to shutting down. Is there any chance to find that out?

 

 

 

Link to comment
  • 2 weeks later...

Okay, so I looked at this again today. I specifically found this:

function stopArray(form) {
  $(form).append('<input type="hidden" name="cmdStop" value="Stop">');
  swal({title:'Proceed?',text:'This will stop the array',type:'warning',showCancelButton:true},function(p){if (p) form.submit(); else $('input[name="cmdStop"]').remove();});
}
function stopParity(form,text) {
  $(form).append('<input type="hidden" name="cmdNoCheck" value="Cancel">');
  swal({title:'Proceed?',text:'This will stop the running '+text+' operation',type:'warning',showCancelButton:true},function(p){if (p) form.submit(); else $('input[name="cmdNoCheck"]').remove();});
}
function pauseParity(form) {
  $(form).append('<input type="hidden" name="cmdNoCheck" value="Pause">');
  $('#pauseButton').val('Resume').prop('onclick',null).off('click').click(function(){resumeParity(form);});
  form.submit();
}
function resumeParity(form) {
  $(form).append('<input type="hidden" name="cmdCheck" value="Resume">');
  $('#pauseButton').val('Pause').prop('onclick',null).off('click').click(function(){pauseParity(form);});
  form.submit();
}
function shutdown_now(form,cmd) {
  $(form).append('<input type="hidden" name="cmd" value="'+cmd+'">');
  swal({title:'Proceed?',text:'This will '+cmd+' the system',type:'warning',showCancelButton:true},function(p){if (p) form.submit(); else $('input[name="cmd"]').remove();});
}
function toggleApply(checked) {
  $('input[name="#apply"]').prop('disabled',!checked);
}

All commands that do not lead into an confirmation can just be called like this for example:

http://192.168.178.5:80/update.htm?cmdStop=Stop&csrf_token=<insert_token_here>


However as soon as I try to click, let's say the shutdown button I think the WebUI shows the apply button. Is there any way to directly call the apply button, or how would I proceed at this point?

Link to comment

Ouch. Okay thanks to all from preventing me to waste even more time on this 😅

So what is exactly the difference between the "powerdown" and "shutdown -h now" command?

I used to use the "shutdown" command but it almost always lead to unclean shutdowns, so I guess "powerdown" triggers all the routines to bring the array to a stop correctly. Is there any more to that?

Link to comment
5 hours ago, Fenix said:

Ouch. Okay thanks to all from preventing me to waste even more time on this 😅

So what is exactly the difference between the "powerdown" and "shutdown -h now" command?

I used to use the "shutdown" command but it almost always lead to unclean shutdowns, so I guess "powerdown" triggers all the routines to bring the array to a stop correctly. Is there any more to that?

Powerdown is Unraid specific and triggers the same processing as using the Powerdown button from the GUI.    The shutdown command is a Linux command that can bypass many of the steps that powerdown runs.

  • Upvote 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.