![ssh 到远程服务器后执行命令](https://linux22.com/image/113521/ssh%20%E5%88%B0%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8E%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
我正在尝试执行脚本到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'