Äquivalent zu Ubuntus Write-Mime-Multipart?

Ich möchte ein mehrteiliges MIME-codiertes Dokument zur Verwendung als Benutzerdaten auf EC2-Instances generieren.

Unter Ubuntu soll man write-mime-multipartdazu gemäß dieser Anleitung verwenden .

Weiß jemand, was das OSX-Befehlszeilenäquivalent wäre?

Danke!

Antworten (2)

Ich habe eine einfache Lösung gefunden. Der Befehl von Ubuntu write-mime-multipartist eigentlich ein Python-Skript, das hier verfügbar ist (oder auf einer Ubuntu-Distribution, denke ich).

Ich habe einfach dieses Skript heruntergeladen, um es zu verwenden. Vielleicht nicht ideal in Bezug auf die Versionskontrolle, aber für ein einfaches Skript in Ordnung, denke ich.

Bessere Ansätze willkommen!

Danke! Das ist toll. Ich habe es in #!/usr/local/bin/python geändert (anstatt v2.6 anzugeben) und das Skript in /usr/local/Cellar/write-mime-multipart, chmod +x installiert und es in /usr/ symbolisch verlinkt. local/bin, um eher wie Gebräu zu sein. Hat gut funktioniert. Sie können auch eine Docker-Instanz von Ubuntu ausführen, um es zu erhalten. ;-)
Beifall. Klingt nach einem guten Ansatz!

Ich konnte das Skript nicht zum Laufen bringen, also habe ich hier ein anderes zusammengestellt

#!/usr/local/bin/python
# Usage
# python utils/multi.py /path/to/cloud.cfg:text/cloud-config /path/to/script.sh:text/x-shellscript

import sys
import email
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

if len(sys.argv) == 1:
    print("%s input-file:type ..." % (sys.argv[0]))
    sys.exit(1)

combined_message = MIMEMultipart()
for i in sys.argv[1:]:
    (filename, format_type) = i.split(":", 1)
    with open(filename) as fh:
        contents = fh.read()
    sub_message = MIMEText(contents, format_type, sys.getdefaultencoding())
    sub_message.add_header('Content-Disposition', 'attachment; file    name="%s"' % (filename))
    combined_message.attach(sub_message)

msg = email.message_from_string(combined_message.as_string())

for part in msg.walk():
    if part.get_content_maintype() == 'text':
        if part['Content-Transfer-Encoding'] in {'quoted-printable', 'base64'}:
            payload = part.get_payload(decode=True)
            del part['Content-Transfer-Encoding']
            part.set_payload(payload)
            email.encoders.encode_7or8bit(part)

# Send the modified message to stdout
print(msg.as_bytes().decode(encoding='UTF-8'))

Quellen: StackOverflow Frage CloudInit Docks

Bitte antworten Sie mit mehr als einem Link. Die Antwort sollte verständlich sein, wenn die Links verschwinden