开发者

Why doesn't this ssh command work in ksh?

开发者 https://www.devze.com 2023-03-13 16:38 出处:网络
I\'m tweaking a KSH script and I\'m trying to ssh into various hosts and execute a grep command on vfstab that will return a certain line. The problem is, I can\'t get the following to work below. I\'

I'm tweaking a KSH script and I'm trying to ssh into various hosts and execute a grep command on vfstab that will return a certain line. The problem is, I can't get the following to work below. I'm trying to get the line it returns and append it to a destination file. Is there a better way to do this, ex assign the grep statement to a command variable? The command works fine within the script, but the nested quotations 开发者_开发知识库seems to bugger it. Anyways, here's the line:

ssh $user@$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print $3, $7}' " >> $DEST

This results in:

 awk: syntax error near line 1
 awk: illegal statement near line one

If there is a better/more correct way to do this please let me know!


You're putting the remote command in double quotes, so the $3 and $7 in the awk body will be substituted. awk probably sees '{print ,}'. Escape the dollar signs in the awk body.

ssh $user@$host "grep '/var/corefiles' $VFSTAB_LOC | awk '{print \$3, \$7}' " >> $DEST
                                                                 ^    ^


I tried below and it worked for me (in ksh) not sure why it would error out in your case

user="username";
host="somehost";
VFSTAB_LOC="result.out";
DEST="/home/username/aaa.out";
echo $DEST;
`ssh $user@$host "grep '/abc/dyf' $VFSTAB_LOC | awk '{print $3, $1}'" >> $DEST`;
0

精彩评论

暂无评论...
验证码 换一张
取 消