Выполнение команды после выполнения 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
16.06.2017, 01:05
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'
0
28.01.2020, 05:12

Теги

Похожие вопросы