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
./power-off
What am I doing wrong? Any help would be appreciated.
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.
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.
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
do
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.