remote awk syntax problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting remote awk syntax problem
# 1  
Old 10-28-2009
remote awk syntax problem

Hi there

If i run this command on my Linux box directly, i get the desired result

Code:
[server1] # ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product Serial/&&f{print $NF}'
00:AA:4F:A6:A6:C4

however, if i try to run it from a remote server (using SSH) and populating a variable with the result, then i get an error f{print command not found ..note, i had to escape the bang otherwise bash would not even accept the command ..not sure if this is part of my problem, see below, as you can see, it matches multiple instances of "Product Serial". I guess this is down to the the print part of the command not working?


Code:
[server6] # REMOTE_MAC=`ssh server1 'ipmitool fru | gawk '\!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print $NF}''`
bash: f{print: command not found
#

# echo $REMOTE_MAC
Product Serial : 00:AA:4F:AF:2C:45 Product Serial : 0806AL91AE Product Serial : 1506341E Product Serial : 1506251C Product Serial : 15064C21 Product Serial : 15062F16 Product Serial : 15063610 Product Serial : 1506251F Product Serial : 1506561B Product Serial : 15065618 Product Serial : 00:AA:4F:A6:A6:C4 Product Serial : 00:AA:4F:A6:A6:C6
#


now, i thought id try just running it remotely rather than trying to populate a variable, so i tried just ssh'ing the command... still problems


Code:
[server6] # ssh server1 'ipmitool fru | gawk '\!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print $NF}''
 Product Serial        : 00:AA:4F:AF:2C:45
 Product Serial        : 0806AL91AE
 Product Serial        : 1506341E
 Product Serial        : 1506251C
 Product Serial        : 15064C21
 Product Serial        : 15062F16
 Product Serial        : 15063610
 Product Serial        : 1506251F
 Product Serial        : 1506561B
 Product Serial        : 15065618
 Product Serial        : 00:AA:4F:A6:A6:C4
 Product Serial        : 00:AA:4F:A6:A6:C6
bash: f{print: command not found
#

From what i can see, the f{print error, seems to be causing my problems

Does anybody have any idea what i could be doing wrong here, it seems i have tried a huge amount of different variations without any success

any guidance would be fantastic
# 2  
Old 10-28-2009
Try double quotes around your ssh command and escape the $ in $NF:
Code:

ssh server1 "ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print \$NF}' "

(the f{print isn't the problem it's the awk single quotes confusing the ssh single quotes. Alternatively, escape the awk single quotes)

Last edited by Scott; 10-28-2009 at 09:10 PM..
# 3  
Old 10-29-2009
thats brilliant thanks Scott. just one thing, which i guess will be down to escaping or quoting once again, but if i populate a variable with the results, it still grabs the "Product Serial : "part ?, for example


Code:
# ssh server1 "ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print \$NF}' "
00:AA:4F:A6:A6:C4

PerfectSmilie

but if i poulate a variable

Code:
# MAC=`ssh server1 "ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print \$NF}' "`
# echo $MAC
Product Serial : 00:AA:4F:A6:A6:C4

am i doing something glaringly wrong
# 4  
Old 10-29-2009
Hi.

I don't have ipmitool, so I had to improvise!

And just noticed a very interesting this:

Code:
$ MAC=$(ssh myself@myserver "/home/myself/ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print \$NF}' ")
myself@myservers's password:
$ echo $MAC
00:11:a3:d7:65

$ MAC=`ssh myself@myserver "/home/mxself/ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product.Serial/&&f{print \$NF}' "`
myself@myserver's password:
$ echo $MAC
Product.Serial : 00:11:a3:d7:65

Using backticks has a different effect to using $( ... )
# 5  
Old 10-29-2009
thanks Scott, yes that works perfectly on my side

Just for the purposes of helping me to understand the multiple implied if-then constructs within this one liner, I have included a semi colon to separate each if-then


Code:
# MAC=$(ssh server1 "ipmitool fru | gawk '!NF{f=0} ; /mb.net0.fru/{f=1} ; /Product.Serial/&&f{print \$NF}' ")
# echo $MAC
00:AA:4F:A6:A6:C4

thank you again SmilieSmilie
# 6  
Old 10-29-2009
I alwasy find it easier to run the awk commands locally...

ssh blah1 "somecommand" | gawk '/whatever... '

That way you dont have to worry about the crazy formatting you have to do to make the awk statement work through ssh...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk remote multiple hosts print remote hostname and output

Hi all, i'm trying to gether multiple pattern on remote hosts, and trying to print hostname and the pattern, ssh remoteserver1 -C 'hostname 2>&1;cat /var/log/server1.log | awk -F ";" '"'"'{ print " "$2" "$5}'"'"'| sort | uniq -c | sort -g -r ' The output is the following, remoteserver1 ... (8 Replies)
Discussion started by: charli1
8 Replies

2. Shell Programming and Scripting

awk problem with syntax

awk -v sw="lemons|dogs" 'NR>100 && NR<200 BEGIN { c=split(sw,a,""); } { for (w in a) { if ($0 ~ a) d]++; } } END { for (i in a) { o=o (a"="(d]?d]:0)","); } sub(",*$","",o); print o; }' /home/jahitt/data.txt what am i doing wrong with the above code? im pretty sure the issue is in the... (6 Replies)
Discussion started by: SkySmart
6 Replies

3. Shell Programming and Scripting

awk syntax problem

Hi, I am using this awk command in my shell script : find . -name "*" -ctime -6 | xargs cat | grep -E -v ^fileName\|^\(\) | awk -v DATE="${CURR_DATE}" -v DATE_LOG=$DATE_SYS 'BEGIN {FS=";";OFS=";";CONVFMT="%.9g";OFMT="%.9g"}... (4 Replies)
Discussion started by: abhi1988sri
4 Replies

4. Shell Programming and Scripting

Problem with if-else syntax

I'm calling the following if-else from nawk. But I keep getting an error at the "else". I've tried putting more brackets and ; but still I get complaints about the "else". Any ideas ? Thanks, wbrunc BEGIN { FS = "," ; OFS = "," } { if ( $8 ~ /A/ && $9 == B ) $1="4/29/2013" ; $2="J.Doe"... (2 Replies)
Discussion started by: wbrunc
2 Replies

5. Shell Programming and Scripting

Help with awk syntax error problem asking

Input file: 703 1192 720 1162 316 380 1810 439 1969 874 Desired output file: 3 3 awk code that I tried: (1 Reply)
Discussion started by: perl_beginner
1 Replies

6. Shell Programming and Scripting

Syntax Problem with awk

Hello, I have perl script,which take some part of data in the file. the below command works fine in normal cmd prompt. `awk '/CDI/ && // && !/Result for/ {print $3 $5 > "final.txt"}' datalist.txt`; `nawk -F"" '{print $2}' finalcdi.txt`; But not working. Please use code tags, thanks. (5 Replies)
Discussion started by: rasingraj
5 Replies

7. Shell Programming and Scripting

Problem with awk syntax

Hi, Below is the code I am using. I am trying to list only those numbers which has a + symbol in it cat num | awk -F"+" '{if (/^$/) { } else {if ( $0 ~ egrep "^+$" ) { if ( $0 ~ grep "+" ) {print $0} } }}' I am getting the following error: awk: 0602-521 There is a... (7 Replies)
Discussion started by: sudvishw
7 Replies

8. Shell Programming and Scripting

Problem with syntax using awk

Hi Guys, When below code is executed in script, I get desired output in output file. awk 'NR >= $start_line && NR <= 3' master_scriptlist.txt > $driver1/scriptlist.txtBut when i replace 3 with a variable end_line=3, I do not get ouput. See code below. Is there any problem with syntax awk... (6 Replies)
Discussion started by: ajincoep
6 Replies

9. Shell Programming and Scripting

syntax problem

Dear friends, I am writing shell script in csh . i want to make arthimatic operation in csh. i wrote sysntax like this. set val = 230 set tmp = `0.1 * $val + 300` echo $tmp but it is not working . anyone please give me syntax. (3 Replies)
Discussion started by: rajan_ka1
3 Replies

10. Shell Programming and Scripting

syntax problem

dear friends, I have a large size file containg two fields data like this *** **** 122 222 ***** ***** ***** ***** 232 233 i have file like this. i want to remove blank lines from file . i think awk is servive this problem i wrote a awk command but the error is... (3 Replies)
Discussion started by: rajan_ka1
3 Replies
Login or Register to Ask a Question