[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: modificar un archivo en bash



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

hola
On Tuesday 25 March 2003 09:49, Rafael F. Rodríguez wrote:
> Hola a todos.
>
> 	Perdonad, creo que no he sido demasiado claro. :-).
>
> 	Se trata de la configuración de postfix y fetchmail, como sabeis hay que
> configurar varios archivos, y como la configuración, alias, etc.
>
> 	Lo que prependo hacer es un scripts donde pregunte el nombre de dominio,
> los nombre de usuario, contraseñas... y que el script acceda a los archivos
> (plantillas previamente preparadas y colocadas en cada ruta) y modifique
> los valores que tengo por defecto. ejemplo:

De la forma mas simple posible esto sería:
Simplemente recordarte que las comillas delimitan variables que contienen 
espacios.
un saludo
Victor

>
> -----------archivo main.cf--------------------------

#!/bin/bash
#uso ./miscript "hostname" "domain" "relay"
> # NOMBRE, DOMINIO(S) y RED(ES)
> myhostname = $1
> mydomain   = $2
> relay      = $3
>
echo " > # DIRECCION QUE APARECE EN EL FROM
> myorigin  = $mydomain
> .
> .
> .
>
> # PROPIETARIO DE COLAS Y PROCESOS
> mail_owner           = postfix
> setgid_group         = postdrop
>
> # TRATAMIENTO DE ALIAS
> alias_database       = hash:/etc/aliases
> alias_maps           = hash:/etc/aliases
>
> # IDENTIFICACION DE USUARIOS LOCALES
> local_recipient_maps = $alias_maps unix:passwd.byname
>
> # ENVIO EN PARALELO A UN MISMO DESTINO
> local_destination_concurrency_limit   = 2
> default_destination_concurrency_limit = 10
>
> # OTROS PARAMETROS DE CONFIGURACION
> notify_classes       = resource, software, policy
> transport_maps       = hash:/etc/postfix/transport
> disable_vrfy_command = yes
> disable_dns_lookups  = yes
> relayhost            = [$relay]
> message_size_limit   = 10485760
> mailbox_size_limit   = 0
> maximal_queue_lifetime = 5d
> #maps_rbl_domains    = relays.ordb.org
>
> # CONTROL DE CORREO ENTRANTE / SALIENTE
> mynetworks           = <variable4>
> mydestination        = $myhostname localhost.$mydomain $mydomain
> relay_domains        = $mydestination
> #smtpd_client_restrictions = reject_maps_rbl reject_unknown_client
> #smtpd_helo_required       = yes
> #smtpd_helo_restrictions   = reject_invalid_hostname
> reject_unknown_hostname reject_non_fqdn_hostname
> smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains
> header_checks              = regexp:/etc/postfix/header_checks
> body_checks                = regexp:/etc/postfix/body_checks
> content_filter             = vscan:
> #mailbox_command           = procmail -a "$EXTENSION"
" > archivo_de_salida
> -----------fin archivo--------------------
> 	Pues eso, el script modificaría los <var> dependiendo de diversas entradas
> de por el teclado.
>
> El Mar 25 Mar 2003 01:19, Cesar Rincon escribió:
> > On Mon, 2003-03-24 at 13:41, Fernando Blat Peris wrote:
> > > A alguien se le ocurre algo más elegante que mi chapucilla??
> >
> > Probablemente no he entendido lo que Rafael quiere, pero me suena
> > demasiado simple...  En fin.  Mi solución no es más elegante, pero sí
> > más compacta (y quizá más entendible y fácil de mantener):
> >
> > Asumiendo que el archivo contiene una línea que reza literalmente
> > "Nombre: <var1> cuya dirección ip es <var2>":
> >
> > -----------------------------------------------------------------------
> > #!/bin/bash
> > if [ -z "$1" -o -z "$2" ]; then
> >   echo "Uso: $0 nombre ip" >&2
> >   exit 1
> > fi
> >
> > sed -e "s|^Nombre: <var1> cuya dirección ip es <var2>|\
> > Nombre: $1 cuya dirección ip es $2|"
> >
> > exit 0
> > -----------------------------------------------------------------------
> >
> > Y lo usarías como un filtro:
> >
> >   cat archivo.in | script NOMBRE 123.123.123.123 > archivo.out
> >
> > O, si te interesa reemplazar el archivo, algo como
> >
> >   script NOMBRE 123.123.123.123 < archivo > archivo.$$ && \
> >     mv archivo.$$ archivo
> >
> > Decía que "demasiado fácil" porque ésto es realmente un "one liner": no
> > es necesario hacer el script, basta con teclear la invocación a sed.
> >
> > Pero bueno, seguramente no he entendido...
> >
> >  -CR

- -- 
- --
Marzo
Uno de los peores meses para andar metiendo al mundo en guerras absurdas
El resto de meses del mismo tipo son: Enero, Febrero, Abril, Mayo, Junio, 
Julio, Agosto, Septiembre, Octubre, Noviembre y Diciembre. 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+gCo0EzqHF8R72ekRAjqnAKCVWzSEOTGQsaAbMTB9LM3LCuDF0wCeIXUC
00phKznYtW9KsC3yaIlvblE=
=N+Hv
-----END PGP SIGNATURE-----



Reply to: