Question:
Is there a way to easily shutdown a remote linux server with a shell script?
bdb4269
2007-01-26 11:34:56 UTC
I have 3 linux servers hooked to my UPS. I can only hook the UPS to one of them. The UPS software will allow me to run a shell script on that one server before it shuts down. And I want that shell script to shut down the other 2 servers. Is this possible?
Three answers:
bdb4269x
2007-01-26 13:40:32 UTC
Actually SSH would have to be set up first to allow passwordless, login between servers.



I found the solution else where, and just wanted to post it here, in case anyone else stubles on this question looking for an answer.



NOTE: IN THE RESOLUTION BELOW MANY OF THE COMMANDS ARE CUT OFF, OR INCORECTULY SHOW AS TWO LINES. FOLLOW THIS LINK FOR A PROPERLY FORMATED ANSWER.

http://www.justlinux.com/forum/showthread.php?p=863427#post863427



RESOLUTION:

Here's what I did...



First I ssh'd from each machine to each other one. (The first time u ssh to new machine it asked you to accept the machines "fingerprint" and saves it -- this is just so they know who each other are.



Then on the machine I wanted to be able to shutdown FROM I did

[CODE]

cd /root/.ssh/

ssh-keygen -t rsa

[/CODE]

and accepted the default location. (/root/.ssh/id_rsa)

I left the passphrase blank, so it would not be required.



Then basically you just need to copy that "id_rsa" file onto the DESTINATION machine, in the same directory, but named as "authorized_keys". Which can easily be done like this:

[CODE]

scp id_rsa.pub xxx.xxx.xxx.xxx:/root/.ssh/authorized_keys [/CODE]

Where xxx.xxx.xxx.xxx is the IP address or host name of remote machine.



[INDENT]NOTE: You may want to check if a file by that name already exists, on the remote machine, because the above command will overwrite it without warning. -- If you already have a file by that name on the remote machine, I would suggest using command above, but change the file name. Then on the remote machine, append the file you just copied to the existing one. This could easily be done like this: (there may be an even simpler way - but this is what I know)



[CODE]mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.backup

cat /root/.ssh/authorized_keys.backup /root/.ssh/yourfilename > /root/.ssh/authorized_keys

[/CODE]

[/INDENT]



Then make sure the /root/.ssh/authorized_keys file has 600 permissions.

[CODE]

chmod 600 /root/.ssh/authorized_ keys

[/CODE]



Then try to ssh to the remote machine.

[CODE]

ssh xxx.xxx.xxx.xxx

[/CODE]

And if it works like it did for me -- it will let you right in, with no username or password. If this works correctly, you should be able to remotely run commands through ssh within scripts.
manuelriliz
2007-01-26 20:14:09 UTC
you can tack on that shutdown command to the end of an ssh command you know. I don't know the specific syntax, it'd be like ssh username:password "shutdown -r now"
anonymous
2007-01-26 19:40:53 UTC
the command to shut down a Linux machine is...



/usr/sbin/shutdown -h now



do a man shutdown for details



RJ


This content was originally posted on Y! Answers, a Q&A website that shut down in 2021.
Loading...