Script for shutting down 48 computers

Login or Register to Reply

Thread Tools Search this Thread
# 1  
Script for shutting down 48 computers

Hi All, I am pretty new to unix type languages. At work we have a server room with about 50 windows computers in one system and 50 in a unix system. We sometimes have power outages and I don't like the power slam. I wrote a windows batch file using sysinternals help to shutdown the windows computers. I am trying to write one for the unix servers. I started by using vi editor. I remember a little from school. Anyhoo, I start from one of the computers (I use ACC36 because that is where my KVM is. all are names ACC###)ACC36 and
ssh ACC30

to get to ACC30. Then my next line is
init 0

this is the shutdown command.
My next command is to get back to ACC36 before the shutdown is
ssh ACC36

Well, that works, but when I repeat the commands in the script for the other ACC's, it never goes past the first return to ACC36. After I write and save it with :wq , I then
chmod 755 power-off

Then to execute I go

What am I doing wrong? Any help would be appreciated.
# 2  
while read COMP; do echo ssh $COMP init 0; done < complist

and supply the computer names in that list. I assumed e.g. ssh ACC36 will safely log you into that machine.
Remove the echo if you're happy with what you see.
# 3  
If you shut down the computer the script is executing on - e.g., ACC36 is first in the list, you've lost scripting process. No more shutdowns. Be sure to run the script on the LAST ACCxxx box in your list of computers.
# 4  
Depending on availability on your system, you might shutdown +5.
# 5  
I presume you are doing this as root. You allow root to ssh onto all your servers ?

Using rudiC example. Just add & on the end and/or </dev/null

while read COMP
     echo " Shutting down  "$COMP
     echo    ssh $COMP init 0  </dev/null  &  
 done < complist

If you are running remote ssh commands on a list of servers, you have to add
</dev/null at the end or it will exit after the first one.
With just </dev/null it will run the command on each server in foreground one after another.

You can also add & to the end and it will execute the command in background on each server and return at once.

Test the script with the echo first and then remove, when you want to use it.

Last edited by Scrutinizer; 04-17-2015 at 12:49 AM.. Reason: CODE tags
Login or Register to Reply

Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Can i see wich Computers are up in my network with a script
#!/bin/bash for ((n=0 ; n < 254 ; n+=1)) do ip=192.168.0.$n if ping -c 1 -w 1 $ip > /dev/null 2> /dev/null >> /etc/logping.txt; then echo "${ip} is up" # output up # sintax >> /etc/logping.txt log with .txt format else echo "${ip} is down" # output...... Shell Programming and Scripting
Shell Programming and Scripting
Getting error while shutting down
Hi, I am getting the error "/etc/rc.shutdown failed. Shutdown aborting" while shutting down the os. Please suggest.... AIX
Shell script to Shutdown Computers on Cluster
Hello all. I have built a cluster of 9 Macs for computational chemistry and I need a shell script that I can use from one computer to all the rest to shutdown. I have modified all of the Macs so that there is pass-wordless ssh. As well, I have modified each "visudo" file on each machine by...... Shell Programming and Scripting
Shell Programming and Scripting
Script to get IP addresses of LAN computers
I need a shell script for OS X, one that can find IP addresses of machines connected to my LAN, get the names of the computer associated with those addresses, then display them like so in a list: "Bob's L33T Boxx: #.#.#.#" Something like the network scanner in Apple Remote Desktop is what I'm...... Shell Programming and Scripting
Shell Programming and Scripting