원격 서버에 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'

관련 정보