リモートサーバーでssh以降のコマンドを実行します。

リモートサーバーでssh以降のコマンドを実行します。

sshリモートホストでスクリプトを実行し、zcatコマンドを実行しようとしています。

#!/bin/bash
for server in abc.net
do
    ssh $server "echo $svr"; zcat /tmp/abc.log.gz|egrep "15 10:0[0-9]"|cut -d'|' -f6|cut -d':' -f1|grep Pattern |sort|uniq -c
done

結果は次のとおりです。 SSHメッセージの削除:

Password: 
abc.net
zcat: /tmp/abc.log.gz: No such file or directory

ファイルがリモートコンピュータにabc.log.gz存在します。/tmp

ベストアンサー1

一連のコマンドをリモートで実行するには、コマンド全体を引用する必要があります。

#!/bin/bash

for server in abc.net; do
    echo "$server" 
    ssh "$server" 'zcat /tmp/abc.log.gz|egrep "15 10:0[0-9]"|cut -d\| -f6|cut -d: -f1|grep Pattern |sort|uniq -c'
done

または、リモートではなくローカルにすべての出力を分割してサイド処理することもできます。

#!/bin/bash
for server in host1.example.com host2.example.com; do
    ssh "$server" 'zcat /tmp/abc.log.gz'
done | egrep "15 10:0[0-9]" |cut -d'|' -f6 | cut -d: -f1 | grep Pattern | sort | uniq -c'

おすすめ記事