Cómo combinar descomprimir y cat para que funcionen como uno en el terminal

1

Trabajo para un host web como técnico de primer nivel y, a menudo, necesitamos instalar un SSL para un cliente. Ahora estoy en una Mac, pero también estoy familiarizado con Linux.

Lo que estoy buscando hacer es tomar el archivo comprimido, descargarlo en mi mac y luego ejecutar el comando para descomprimirlo y cat a la vez. De este modo, se elimina el tedioso proceso de descomprimir file.zip y luego se copia cada archivo, uno a la vez, para ejecutar cat.

Estoy cansado de escribir un script y he jugado con varios comandos, ninguno de los cuales funcionó.

    
pregunta sdw215 11.11.2015 - 23:11

3 respuestas

1

He hecho algunas pruebas, y parece que gzcat (y el evento zcat ) en OS X solo funcionan para archivos comprimidos con gzip, y no archivos con compresión zip estándar. Dicho esto, creo que esto es lo que estás buscando:

"sub.domain.tld.ssl.zip" contiene 2 archivos:

  • "sub.domain.tld.crt" (certificado SSL)
  • "sub.domain.tld.key" (clave privada RSA)

Para imprimir todos los archivos en STDOUT , usaría unzip -p

Para " cat " el certificado, puede usar el siguiente comando:

unzip -p sub.domain.tld.ssl.zip | sed -n '/CERT/,/CERT/p'

Para " cat " la clave privada, puede usar el siguiente comando:

unzip -p sub.domain.tld.ssl.zip | sed -n '/KEY/,/KEY/p'

Luego, puede hacer lo que desee, como crear una pequeña secuencia de comandos o función:

#!/bin/bash
unzip -p "$1" | sed -n '/CERT/,/CERT/p' > "/etc/ssl/Certs/${2}.crt"
unzip -p "$1" | sed -n '/KEY/,/KEY/p' > "/etc/ssl/Private/${2}.key"

El script anterior tomaría 2 argumentos (que idealmente deberían estar entre comillas):

  1. Nombre de archivo del archivo zip
  2. convención de nomenclatura de los archivos cert / key

Si el nombre de la secuencia de comandos fuera sslinstazip.sh , lo ejecutaría así:

./sslinstazip.sh "sub.domain.tld.ssl.zip" "sub.domain.tld"

Obviamente, hay muchas formas en que puedes modificar esto para que se ajuste a tus necesidades personales, pero en este caso, unzip es realmente tu amigo.

    
respondido por el rubynorails 12.11.2015 - 05:14
0

En realidad, encontré una forma de hacerlo con la ayuda de un amigo en el trabajo esta noche.

#!/bin/bash
#Script to run unzip and cat in one command

zipinfo -1 $1 > $1.txt;
unzip $1;
for i in $(cat $1.txt); do echo "File : $i >>" && cat $i; done

Lo guardé en TextWrangler como uzipcat.sh y ejecuté chmod u + x

Para ejecutarlo, escribo ./uzipcat.sh sslfilename.zip y lo extrae y además imprime el contenido.

¡Gracias por el interés y las sugerencias!

    
respondido por el sdw215 14.11.2015 - 06:29
-2

Omita el descomprimir y use gzcat directamente. No estoy seguro de lo que implica "instalar un SSL", pero si hace una pregunta de seguimiento con ese detalle, enlácelo en un comentario aquí y lo echaré un vistazo.

Además, hacer un script de shell corto puede ayudarlo a distinguir los requisitos de su automatización si Automator no es lo suficientemente poderoso para sus necesidades.

    
respondido por el bmike 11.11.2015 - 23:21

Lea otras preguntas en las etiquetas