ssh and for loop


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers ssh and for loop
# 1  
Old 05-10-2011
Tools ssh and for loop

Hi all,

I am facing an issue while trying to access a for loop variable inside ssh. Can anyone please help me with what this issue is, the following is the code that I have ->

Code:
IMPL_LOG_FOLDERS=(transaction_logs invalid_transaction_logs)
 
sshg3 ftp_id@boxname << EOS
 
for log_folder in ${IMPL_LOG_FOLDERS[@]}
do
echo "my $log_folder ";
 
done
EOS

The $log_folder always prints blank. Now the script prints something like this ->

Code:
Last login: Tue May 10 2011 15:47:17 -0400 from boxname 
my 
my

This shows that the for loop is executing twice and hence it is able to read that variable IMPL_LOG_FOLDERS, what I am not understanding is why the varible log_folder can not be read from inside the for loop.

Any help regarding this will be greatly appreciated.

Last edited by pludi; 05-10-2011 at 06:59 PM..
# 2  
Old 05-13-2011
Quote:
Originally Posted by anindyabecs
The $log_folder always prints blank.
Try this:

Code:
cat <<EOF
for N in 1 2 3
do
        echo VAR:$N
done
EOF

You get:
Code:
for N in 1 2 3
do
        echo VAR:
done

because $N gets substituted before the text is even printed! You have to escape the $ to make it remain a $.

Code:
cat <<EOF
for N in 1 2 3
do
        echo VAR:\$N
done
EOF

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 05-13-2011
Hi Corona688,
Thank you so much for the reply. It does work when I escape the $ , if you can please help me understand why the $N gets substituted it will be really great for my knowledge. Who substitutes that variable and makes it blank ?
Is it ssh who does that , if so why ...

Thanks again ...
# 4  
Old 05-13-2011
The shell always interprets the $ prefixed names as variable, and in your current shell you may not have a variable N, so you will get null being replaced for $N and this code will be sent trough ssh

Finally the execution will not work in the remote machine.

But when you escape the $ , the shell doesn't do anything except removing the \ .

So in the remote machine it works fine.
This User Gave Thanks to kumaran_5555 For This Post:
# 5  
Old 05-13-2011
for ssh I use puTTY its easier..
This User Gave Thanks to okhawaja For This Post:
# 6  
Old 05-13-2011
Hi kumaran_5555,

Thanks a lot for the explanation. Now I understand what the issue was.

Hi Okhawaja,

We in our project use the tectia ssh product. But thanks for the info , we will try to go through the putty secure ftp implementation.

Lastly , thanks all for your time and help in solving my problem. You guys rock Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Ssh disturbs while loop

Hi all, I have observed that ssh exits while loop. #!/bin/ksh typeset -i i typeset -i size set -A server = " " "SERVER1" "SERVER2" i=2 while ] do while read in_module do print $in_module size=`ssh ${server} ls -l $in_module 2>/dev/null | awk '{print $5}'` ... (3 Replies)
Discussion started by: Soham
3 Replies

2. Shell Programming and Scripting

Unable to loop with ssh

I read a file (iplist.txt) ine-by-line in a loop which has the list of all the server hostnames. With each hostname read; I do ssh and fire multiple commands to gather information about that systemas shown below. #!/bin/bash while IFS='' read -r line || ]; do echo "Text read from file:... (3 Replies)
Discussion started by: mohtashims
3 Replies

3. UNIX for Dummies Questions & Answers

SSH Loop command each minute

Hello all :) I want to know how can i do to loop a command each minute for example ? I'm in SSH under Putty ;) Thanks you for your help :) (1 Reply)
Discussion started by: stevefigueras
1 Replies

4. AIX

Need help on for loop inside ssh

Hi, I am having a file like, #cat file Jun 19 13:08 Jun 19 13:08 Jun 19 13:08 Jun 19 13:14 when I run the below comamnd locally it will work fine, IFS=$'\n'; for i in $(cat file) ;do echo "HI $i" ; done And the output is, HI Jun 19 13:08 HI Jun 19 13:08 HI Jun 19 13:08 HI... (1 Reply)
Discussion started by: sumanthupar
1 Replies

5. Shell Programming and Scripting

ssh breaks loop

Here is the smallest extract to demonstrate the problem that I experience. #!/bin/bash r=$1 while read ip do if ] ;then x=`ssh $ip echo "$ip"` else x=`echo "$ip"` fi echo $x done << EOF 192.168.8.241 192.168.8.241 EOF # Any IP with public key set (0 Replies)
Discussion started by: ivolvo
0 Replies

6. Shell Programming and Scripting

ssh inside a for loop

Hi, The requirement is to ssh to unix servers and oracle databases, to perform some monitoring activity. I'm using shell script to perfom this. I pass the server details and database to a variable ... SERVERS="SERVER1 SERVER2 SERVER3" DATABASE="DB1 DB2 DB3" for i in $SERVERS do ssh... (2 Replies)
Discussion started by: senthil3d
2 Replies

7. Shell Programming and Scripting

using ssh with a for loop

How do you do an ssh on a for statement. I have done ssh on individula lines of code before with no problems. #!/usr/bin/ksh cat server_list.txt | while read line do ssh $line "for i in `lslpp -l |grep tsm` do lslpp -Lc $i |grep -v State |tr ':' ',' |awk -F, '{print $2, "," ,... (4 Replies)
Discussion started by: din
4 Replies

8. Shell Programming and Scripting

ssh and executing a for loop

Hi all, I am trying to run a script which is expected to do: on the remote machine, There are two directories /export/home/abc1,/export/home/abc2 i am trying to do, ssh SERVERNAME "for i in `ls -l /export/home/abc*|awk '{print $9}'`; do cd $i; ls -l; done" But its not working ,iam... (11 Replies)
Discussion started by: Jartan
11 Replies

9. Shell Programming and Scripting

ssh stops a while loop

The while loop exits (early) when a simple ssh command is run. #!/bin/ksh #set -x #------------------------------------------------------------------------- # Functions Section #------------------------------------------------------------------------- while : do cat list.txt|while read... (1 Reply)
Discussion started by: bkdias26
1 Replies

10. Shell Programming and Scripting

Pb in while loop with ssh command

Hi I use the following command to check if my_base is active or not : active_db=`${LOCAL_BIN}/ssh -l ${my_user} ${my_service} "ps -ef | grep ora_smon | grep ${my_base} | sed -e \"s/ */ /g\" | cut -d'?' -f2 | cut -d' ' -f3 | cut -d'_' -f3"` When I use a file listing databases to check them... (1 Reply)
Discussion started by: madmat
1 Replies
Login or Register to Ask a Question