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'

相关内容