用于运行命令并将命令输出作为报告通过电子邮件发送的Shell脚本

iswrvxsc  于 2023-01-09  发布在  Shell
关注(0)|答案(1)|浏览(209)

我正在尝试编写一个shell脚本,它将在多台机器上运行一个ssh命令,并将输出存储在一个变量中,然后通过电子邮件将其作为报告发送。

#!/bin/bash 

DcEmitterConn='yinst ssh -H test.out "netstat -a | grep ES | grep 25019 | wc"'

SUBJECT="DC-Connections"
EMAIL="abc@abc.com"
EMAILMESSAGE="report.out"
echo $DcEmitterConn> $EMAILMESSAGE
#send email using /bin/mail 
/bin/mail -s "$SUBJECT" "$EMAIL"< $EMAILMESSAGE

在脚本中执行上述命令后,它会要求我输入密码,然后打印所请求的输出。我在上述脚本中遇到的问题是,我无法将命令输出存储在变量中,并将其打印在电子邮件正文中。有人能告诉我是否遗漏了什么吗?
输出将如下所示:

abc@dh1.data.ac2.abc.com's password:  (yinst-pw) 
     40     240    3560
abc@dh2.data.ac2.abc.com's password:  (supplied by yinst-pw)
     50     300    4450

先谢了!

qvtsj1bj

qvtsj1bj1#

您应该在第8行的$DcEmitterConn两边加上双引号,这样就可以避免临时文件:

SUBJECT="DC-Connections"
EMAIL="abc@abc.com"
yinst ssh -H test.out "netstat -a | grep ES | grep 25019 | wc" | /bin/mail -s "$SUBJECT" "$EMAIL"

相关问题