Sloppy Script needs help


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Sloppy Script needs help
# 1  
Old 07-20-2008
Sloppy Script needs help

Mates,
I have written the following script to ssh into remote servers, run a few commands, and write the data to a file on the local server. It works but it seems very inefficient. I have trimmed out comments to make it cleaner to read.
Code:
#!/bin/bash
filename=devesx
rs=(`cat "$filename"`)
date=`date +"%Y%m%d"`
fname=/home/esxdata$date

(
ssh ${rs[0]} "hostname" 1>$fname
sleep 2
)
wait
(
ssh ${rs[0]} "vmware -v" 1>>$fname
sleep 2
)
wait
(
ssh ${rs[0]} "uname -r" 1>>$fname
sleep 2
)

(
ssh ${rs[1]} "hostname" 1>>$fname
sleep 2
)
wait
(
ssh ${rs[1]} "vmware -v" 1>>$fname
sleep 2
)
wait
(
ssh ${rs[1]} "uname -r" 1>>$fname
sleep 2
)

(
ssh ${rs[2]} "hostname" 1>>$fname
sleep 2
)
wait
(
ssh ${rs[2]} "vmware -v" 1>>$fname
sleep 2
)
wait
(
ssh ${rs[2]} "uname -r" 1>>$fname
sleep 2
)
exit # This actually continues on quite awhile...

My first point of reference has been the advanced bash scripting site.

This script does what I need it to do but it seems to have unnecessary code. I have tried to figure out a way for the script to just have a few lines of the commands and then loop until it completes the array, but that is where I am stumbling.

I am not looking for someone to do my work but rather understanding on how to make this script more efficient. Obviously I am new to scripting, but I loves it. Thanks for taking time to peek at my FNG scripting.
# 2  
Old 07-20-2008
Code:
#!/bin/bash
filename=devesx
date=$(date +"%Y%m%d")
fname=/home/esxdata$date

while read rs ; do
      ssh $rs "hostname; vmware -v ; uname -r" 
      sleep 2
done < $filename >> $fname

# 3  
Old 07-20-2008
I'll give that a shot. I tried putting the commands on the same line before but it failed. That is why I ended up putting each command on a new line.

cheers,
# 4  
Old 07-21-2008
Quote:
Originally Posted by reborg
Code:
#!/bin/bash
filename=devesx
date=$(date +"%Y%m%d")
fname=/home/esxdata$date

while read rs ; do
      ssh $rs "hostname; vmware -v ; uname -r" 
      sleep 2
done < $filename >> $fname

I ran the script you put together and received the same error, when I attempted to run the commands upon a single line at first, hence attempting a new approach, I received a similar error.

bash: line 1: server.name.com: command not found (actual server name changed)

It runs on the first server in the text file and then returns that error.

I have attempted to align my text file as follows:
server.name.com server1.name.com server2.name.com
and
server.name.com
server1.name.com
server2.name.com

I read that, (bash) "Each whitespace-separated "word" in the file
has been assigned to an element of the array" -Advanced BASH Scripting
Arrays

So I assumed I do not require any special formating in the text file.

I am not certain was causes the error.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question