for HOST in $(grep -v '^#' db_hostlist2.txt)
do
echo "Checking for $HOST"
ssh admin@$HOST <<EOF
echo "Hostname : " \$(hostname)
echo -e "Total DB is : \$(ps -ef | grep smon | grep -v grep | wc -l)\n"
echo -e "Total DB is : \n\$(ps -ef | grep smon | grep -v grep |awk -F_ '{print \}')\n"
EOF
echo "$HOST Complete"
done
Tudo entre os dois EOFs é tratado normalmente e executado remotamente, sem necessidade de escapar de caracteres especiais, exceto quando se usa $ (cmd) para executar um comando remoto. Você pode colocar variáveis locais lá, se quiser.