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.
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.
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?
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.
This User Gave Thanks to MadeInGermany For This Post:
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)
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)
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)
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)
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)
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)
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)
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)