我正在尝试执行脚本到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'