Quiero usar sendmail para enviarme cosas y quiero hacerlo en línea.
echo "mail content" | sendmail emailataddres.com
Lo envía sin tema.
La línea de asunto debe aparecer antes del contenido del Correo, por lo que busco algo similar a:
echo "mail content" | prepend "Subject: All that matters" | sendmail emailataddres.com
sed y awk tienden a ser realmente incómodos de usar y recordar.
EDITAR : Solo para aclarar: echo "Contenido de correo" es solo un ejemplo ilustrativo. Necesito poder anteponer cosas a las secuencias estándar de cualquier fuente. por ejemplo: ifconfig, zcat, etc.
command-line
bash
posix
AndreasT
fuente
fuente

echo -e "Subject: All that matters\nmail content"? O más independiente de la plataforma:printf 'Subject: %s\n%s\n' "All that matters" "mail content". También podría escribir un pequeño script que solo tome los dos argumentos de cadena para hacer una línea más simple.prependhacer Para saber cómo anteponer algo, debe esperar hasta que el comando ascendente (pecho. Ej. ) Envíe el EOF, para que pueda insertar sus datos delante de él en el flujo antes de pasarlo a stdout para que se canalice a sendmail. Suena como una tarea para un script corto de Ruby o Python.mailcomando (a veces llamado bsdmail) en lugar de hacerlosendmaildirectamente.mailtoma una-s subjectopción opcional , por ejemplo:ifconfig -a | mail -s 'Current ifconfig output' [email protected]Respuestas:
Estoy bastante seguro de que hay una mejor solución, pero esto debería funcionar.
fuente
printflugar del segundoechoy debería estar bienecho -nUtilice lo que dijo Claudio o haga el suyo:
~ / bin / prepend:
p.ej:
fuente
Esto está inspirado en la respuesta de Claudio.
Si no desea un retorno de descanso entre sus salidas, agregue el
-nparámetro. Esto se verá así:$ echo 1 | (echo -n 2 && cat)Lo que dará:
21fuente
-nlugar equivocado. De todos modos, la actualización debería dar "21 \ n" si desea deshacerse de la \ n luego agregue un -n antes del 1.De las piezas que he reunido ... podrías hacer algo como esto:
Tenga en cuenta que no cerré las comillas en la primera línea ... porque no todos los shells traducen el carácter
\na una nueva línea ... pero todavía tengo que encontrar uno que no procese una nueva línea real dentro de las comillas.Cuando un comando está encerrado en el carácter `, se ejecutará y la salida se inyectará en el lugar. Tenga en cuenta que este código es un poco peligroso ya que es posible inyectar comandos adicionales en línea que podrían comprometer fácilmente su sistema ...
**** editar **** Siguiendo los consejos de Claudio, una opción más limpia se vería así:
Incluso con esa plantilla, podría ser explotada.
fuente
$()que `` ya que se supone que es más portátil (y también más legible). Además, puede usarechola-eopción '' para hacer que traduzca nuevas líneas (echo -e "1\n2") o simplemente use printf como lo sugiere Daniel en el primer comentario.Puede anteponer la salida canalizada mediante la sustitución del proceso :
fuente