Rsh reboot in a loop?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rsh reboot in a loop?
# 1  
Old 11-20-2018
Rsh reboot in a loop?

Hi folks. I'm trying to get the following script working for rebooting a bunch of clients. Up to now I've been using PSSH, but when they all startup again at the same time I get a few mount problems. So, I'm trying to stagger the reboot command. I know reboot will depend on what's running at the time. According to everything I've found the code attached should work.

But this script exits after the first iteration. I'm guessing the rsh command loses connection without getting a return so it produces an error "closed by remote host" which isn't getting caught

Could someone please help me out, this is starting to drive me nuts! I could do the same in python, but then I'm not learning anything.

Thanks.


Code:
#!/bin/bash
set +e

cat /nodes/nodes-128 | while read LINE; do
        echo "Attempting to reset - $LINE"
        rsh pi@$LINE sudo reboot now || true
        sleep .5
done

# 2  
Old 11-20-2018
That is a useless use of cat, don't do that.

I suspect rsh is trying to read from standard input and eating all the following lines. ssh does that too. You can work around that by using a different file descriptor.

Code:
while read -u5 LINE
do
        echo "Attempting to reset - $LINE" >&2
        rsh "pi@$LINE" sudo reboot now || true
done 5< /nodes/nodes-128

# 3  
Old 11-20-2018
Ok, well incorporating those couple of things (I'm still using cat. I like cat. I have one!) does make a difference, it now loops for two nodes, it resets at least one of them, them closes my ssh to the header machine.

Just before my session is closed the error tcserror: Input/output error is thrown.

I have since tried nohup and disown, these do similar, they run for a couple of loops then just end.

I should add at this point I've checked and checked, there is no problem with my nodes file. So I continue to be confused.

The problem surely is I want to explicitly ignore "Connection lost', not an error. Connection lost isn't an error, is a loss of connection, it's not a return from the command.

So, now I'm very confused.

EDIT: pssh manages fine which is a python script, so it must be possible with bash surely?
# 4  
Old 11-21-2018
Using cat requires a pipe, and this requires the loop to 1. run in a sub shell and 2. read from stdin (descriptor 1, default).
1. A subshell is more overhead, and you cannot modify shell variables in the main shell.
2. rsh (and ssh) read from stdin, that competes with a read from stdin. Work-arounds are: rsh -n ... or rsh </dev/null ...

I think reboot does not take arguments like now, is misleading at least.

Because the connection might be dropped before the command finishes, it is safer to run it in the background wirh a little delay.
Code:
rsh -n remotehost "(sleep 1; reboot) &"

This User Gave Thanks to MadeInGermany For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk, double variable, for loop and rsh

Hello folks, I've a (perhaps) simple question. In a text file I've : server_name1: directory1 server_name2: directory2 server_name3: directory3 I want to make a loop that lets me connect and operate on every server: rsh server_name1 "ls -l directory1" I've tried with awk,... (6 Replies)
Discussion started by: gogol_bordello
6 Replies

2. Solaris

X2200 in reboot loop & mounting ZFS drive on other boxes

So I was patching a Solaris 10 U08 X86 X2200 box in preparation for an Oracle upgrade. Rebooted the box because the patches failed and the box will not boot successfully. I need to back up the zones on the 2 drives before going further. I pulled the drives and attempted to mount them on my Ubuntu... (0 Replies)
Discussion started by: LittleLebowski
0 Replies

3. Solaris

Reboot loop

Oh, how I regret having chosen Solaris... Really, when I had my last Solaris system ten years ago I was just happy. Like a tank: Slow, clumsy, ugly but rock-solid. Then there were 10 ten years of FreeBSD and OpenBSD. Simple install, fast, nice, good package managing, just running along. But... (11 Replies)
Discussion started by: PatrickBaer
11 Replies

4. Shell Programming and Scripting

rsh script with inside a for loop

hi everyone, I have the following problem: the foreach loop inside rsh doesn'work. I have tried the for command but it's not recognized. with the foreach command I don't receive any error, but it doesn't really make the cycle, ignoring the foreach and executing 1 time the echo command. Anyone has... (5 Replies)
Discussion started by: trekianov
5 Replies

5. AIX

Rsh

How to configure rsh for different users in aix? (4 Replies)
Discussion started by: vjm
4 Replies

6. Shell Programming and Scripting

rsh breaking me out of loop

Hey all I have two scripts, one script containing the guts of my code. The other simply loops through a list, calling the other script on each iteration. Problem is when I add the line `/usr/bin/rsh -l root $HOSTNAME ""` to my main script, the loop never seems to exectute any more... (1 Reply)
Discussion started by: mark007
1 Replies

7. Solaris

different between soft reboot and hard reboot

Hi Guru's Can any want here could explain to me the different between soft reboot and hard reboot . Best Regards Seelan (3 Replies)
Discussion started by: seelan3
3 Replies

8. UNIX for Advanced & Expert Users

While read loop and rsh

Hi all I have a while read loop that I use to process a file line by line. The reason I am using this is due the fact that I have spaces in the line and a for loop treats the space as a delimeter for the next record. In this while loop I have a rsh. It appears that cos of the rsh, I never get... (1 Reply)
Discussion started by: 104234
1 Replies

9. Shell Programming and Scripting

rsh and for loop

hi I wanted to use the for loop structure in tandem with rsh command and the result to be redirected into a local .lst file within a shell script . Tried the following but does not help :confused: . rsh ABCD "cd /bosp/local/home/linus/;for i in `ls -ltr | grep ^- | awk {'print $9'}` do... (4 Replies)
Discussion started by: newbee2005
4 Replies

10. Shell Programming and Scripting

rsh command in a while loop

Hi , reading a "file1" with 2 data in each line (VAR1 and VAR2) , i'm using a while loop like this : cat file1|awk '{print $1,$2}'|while read VAR1 VA2 do echo $VAR1 echo $VAR2 done as this example shows , it works but if between do and done i use a "rsh" command , the script reads... (6 Replies)
Discussion started by: Nicol
6 Replies
Login or Register to Ask a Question