Ssh

Bash - 將變數插入字元串(找不到命令)

  • June 22, 2017

我嘗試編寫一個腳本來從許多伺服器獲取一些軟體的版本。但是當我嘗試時,我收到此錯誤消息。

bash:後綴版本:MariaDB版本:作業系統版本:Java版本::找不到命令

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

Verziok_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" sample@sample.com

exit

我為我糟糕的英語道歉。

=您需要在 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 =也。

引用自:https://serverfault.com/questions/857228