我尝试编写一个脚本来从多个服务器获取某个软件的版本。但是当我尝试时,我得到了这个错误消息。
bash:Postfix verzio:MariaDB verzio:OS verzio:Java verzio::未找到命令
bash:postfixverzio:未找到命令
消息正文为空;希望没问题
#!/usr/bin/env bash
parancsok=$(<verziok_lekerdezese.sh)
while read line
do
array=($line)
echo "IP Addresses : ${array[0]} "
ssh -t -t root@${array[0]} ${parancsok}
done < ipcimek_test.txt
版本ziok_lekerdezese.sh:
postfixvr = $(postconf -d | grep -m 1 mail_version | cut -d= -f2)
mariadbvr = $(mysql -v)
osvr = $(cat /etc/redhat-release)
javavr = $(java -version)
hostname = $(cat /etc/hostname)
body = "Postfix verzio: $postfixvr MariaDB verzio: $mariadbvr OS verzio: $osvr Java verzio: $javavr"
echo $body | mail -s "Verziok - Szervernev: $hostname" [email protected]
exit
我为我的糟糕英语道歉。
答案1
=
您需要在 Bash 脚本中删除等号字符(在赋值语句中)两侧的空格。因此,以下几行:
postfixvr = $(postconf -d | grep -m 1 mail_version | cut -d= -f2)
mariadbvr = $(mysql -v)
osvr = $(cat /etc/redhat-release)
javavr = $(java -version)
hostname = $(cat /etc/hostname)
应该写成:
postfixvr=$(postconf -d | grep -m 1 mail_version | cut -d= -f2)
mariadbvr=$(mysql -v)
osvr=$(cat /etc/redhat-release)
javavr=$(java -version)
hostname=$(cat /etc/hostname)
这也适用于所有作业,包括body =
。