• @aidanOP
    link
    4
    edit-2
    2 months ago

    No, because neither of those are the inputs. The input was the systemd file in the image. The whole command was not printed in the error, only surrounding context. The single-quote was indicating the ending of that context(because it was the end of the line) printed by the error.

    The same thing was done with `)' on the first line of error

    • @[email protected]
      link
      fedilink
      32 months ago

      Here’s what I’m reading:

      startup-script line 27 threw the error.

      I’m reading this and interpreting that line 27 of that script is

      sudo echo "# FYI quotes(") must be escaped with \ like \"

      I am confused why there is no trailing double quote, the last 3 chars should be \"" so perhaps this is a bad assumption but the best I can do with the available information.

      So the fix here is to change startup-script line 27 so that you’re not echoing things that might contain characters that might be interpreted by echo or your shell.

      Now if startup-script is provided by your distro, there may be a reason that it’s using echo, but I will tell you now whatever dipshit reason they provide they’re fucking wrong because EXHIBIT A: # " fucks the script and rule 0 of linux is “don’t break userspace”.

      Everything else allows any printable char after the # in a comment, that script is not special, comments are not to be interpreted by the program. That is a show-stopping bug in startup-script and must be fixed.

      EOF

      • @aidanOP
        link
        12 months ago

        I’m reading this and interpreting that line 27 of that script is

        And your interpretation is wrong. Line 27 is actuallly

        sudo echo "${server_service}" > /lib/systemd/system/server.service

        ${server_service} is read from the file I posted in the 2nd image. Since it was a test script I hadn’t bothered implementing any escaping tools, I wanted to make sure terraform allowed this first.

        • @[email protected]
          link
          fedilink
          3
          edit-2
          2 months ago

          And there’s your problem. You’re echoing using double quotes which will interpret characters. Don’t do that. That’s a bug. cat or cp the file to the destination; printf if the contents are all in that variable.

          • @aidanOP
            link
            12 months ago

            No, you’re still misunderstanding what’s being done. ${server_service} is an injected string, the string is the whole contents of the file. That file is not stored locally on the server, except through being injected here(by a terraform file template). And no, printf won’t be any better than echo because its not format string, and I don’t want any formatting from printf applied to it.