2 votos

¿Equivalente al write-mime-multipart de Ubuntu?

Me gustaría generar un documento multiparte codificado en mime para utilizarlo como datos de usuario en instancias EC2.

En Ubuntu, se supone que hay que utilizar write-mime-multipart para hacer esto, según estas instrucciones .

¿Alguien sabe cuál sería el equivalente en la línea de comandos de OSX?

Gracias.

3voto

Anaphory Puntos 165

He encontrado una solución sencilla. El programa de Ubuntu write-mime-multipart es en realidad un script de Python, disponible aquí (o en una distro de Ubuntu supongo).

Simplemente he descargado este script para usarlo. Quizás no sea lo ideal con respecto al control de versiones, pero está bien para un simple script creo.

Se aceptan mejores enfoques.

0 votos

Gracias. Esto es genial. Lo cambié a #!/usr/local/bin/Python (en lugar de especificar v2.6) e instalé el script a /usr/local/Cellar/write-mime-multipart, chmod +x y symlink en /usr/local/bin para que fuera más parecido a brew. Funciona bien. También puedes ejecutar una instancia Docker de Ubuntu para conseguirlo. ;-)

0 votos

Salud. Parece un buen enfoque.

0voto

sshevlyagin Puntos 101

No pude conseguir que el script funcionara, así que armé uno diferente aquí

#!/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'))

Fuentes: Pregunta de StackOverflow Muelles CloudInit

0 votos

Por favor, responda con algo más que un enlace. La respuesta debe ser comprensible cuando los enlaces desaparecen

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X