Re: modificar un archivo en bash
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:
-----------archivo main.cf--------------------------
# NOMBRE, DOMINIO(S) y RED(ES)
myhostname = <var1>
mydomain = <var2>
relay = <var3>
# 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"
-----------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
Reply to: