Je ne vois pas bien le problème dont tu parle, mais à minima tu peux te simplifier la vie en construisant la commande dans ton script (1 ligne si tu t'embête pas avec les longueurs de ligne, 3 ou 4 sinon) et construire ton document ainsi :
cat << 'EOF' > /etc/systemd/system/sshtunel_${ASSHHOST}_${TUNNELID}.service[Unit]Description=Keeps a tunnel to '${ASSHHOST}' open, tunnel ID : '${TUNNELID}'After=network.target[Service]User=${ASSHLUSER}# -p [PORT]# -l [user]# -M 0 --> no monitoring# -N Just open the connection and do nothing (not interactive)# LOCALPORT:IP_ON_EXAMPLE_COM:PORT_ON_EXAMPLE_COMEnvironment="AUTOSSH_GATETIME=0" "AUTOSSH_PORT=0"ExecStart=${ssh_cmd_format}[Install]WantedBy=multi-user.targetEOF
Il est clair et tu évite d'avoir une dizaine de sed compliqué à relire et à mettre à jour.
À minima quitte à utiliser bash, tu peux faire :
service_file="/etc/systemd/system/sshtunel_${ASSHHOST}_${TUNNELID}.service"declare -A unit_vars
unit_vars[__ASSHHOST__]="<IP serveur zabbix>"# comme tes variables ne servent qu'au remplacement tu peu directement les stocker dans le dictionnairefor var in "${!unit_vars[@]}";do
sed -i "s|${var}|${unit_vars[$var]}|g""${service_file}"done
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: HEREDOC et variables
Posté par barmic . En réponse au journal Zabbix, autossh, systemd. Évalué à 3.
Je ne vois pas bien le problème dont tu parle, mais à minima tu peux te simplifier la vie en construisant la commande dans ton script (1 ligne si tu t'embête pas avec les longueurs de ligne, 3 ou 4 sinon) et construire ton document ainsi :
Il est clair et tu évite d'avoir une dizaine de
sedcompliqué à relire et à mettre à jour.À minima quitte à utiliser bash, tu peux faire :
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)