Section: User Commands (1)
Index Return to Main
Contents
suck - Obtiene un pequeño grupo de mensajes de un servidor NNTP, evitando los comandos NEWNEWS
[ nodo ] [ @archivo ] [ -V ] [ -K ] [ -L[SL] ] [ -H ] [ -d[tmd] directorio ] [ -s | -S archivo ] [ -e | -E archivo ] [ -a ] [ -m ] [ -b[irlf] archivo_batch ] [ -r tamaño ] [ -p extensión ] [ -U usuario ] [ -P clave ] [ -c ] [ -M ] [ -N puerto ] [ -W tiempo_de_pausa núm_mensajes_pausa ] [ -w tiempo_de_pausa núm_mensajes_pausa ] [ -l archivo_de_frases ] [ -D ] [ -R ] [ -q ] [ -C artículos ] [ -k ] [ -A ] [ -AL archivo_active ] [ -hl localhost ] [ -bp ] [ -T tiempo_tope ] [ -n ] [ -u ] [ -z ] [ -x ] [ -B ]
Opciones válidas en todos los modos
-V
Esta opción hace que suck escriba el número de versión y finalice.
-s | -S archivo
Estas opciones enviarán todos los mensajes de estado (que normamente van a la salida estándar) a un archivo alternativo. Cuando la opción es la minúscula, -s, enviarán los mensajes de estado al archivo por defecto en definido en tiempo de compilación en suck_config.h. Por defecto se toma /dev/null, o sea: no se escribirán mensajes de estado. La mayúscula, -S, requiere un nombre de archivo. Todos los mensajes de estado serán enviados a este archivo.
-e | -E archivo
Estas opciones enviarán todos los mensajes de error (normalmente escritos en la salida de error estándar) a un archivo alternativo. La versión en minúscula, -e enviará los mensajes de error al archivo por defecto definido en tiempo de compilación en suck_config.h. Por defecto se toma suck.errlog. La mayúscula, -E, requiere un nombre de archivo. Todos los mensajes de error serán enviados a este archivo.
-a
Esta opción obliga a suck a hacer siempre un archivo batch de los articulos obtenidos, incluso si el proceso se aborta por alguna razón. Sin esta opción, suck sólo crea el batch de los artículos si finaliza correctamente o si es cancelado por una señal (véase más adelante).
-N puerto
Esta opción hace que suck use un puerto NNRP alternativo cuando se conecta al nodo, en lugar del puerto 119, que es el que se toma por defecto.
@archivo
Esta opción hace que suck lea otras opciones del archivo indicado, además de las de la línea de comando.
-dt directorio
-dm directorio
-dd directorio
Especifica la colocación de varios archivos usados por suck.
-dt directorio = directorio de los archivos temporales creados por suck (suck.newsrc, suck.sort, suck.restart, suck.killlog, suck.post).
-dm directorio = diretorio para guardar los artículos creados en el modo Multiarchivo o en el modo batch. NO haga coincidir este directorio con los usados en las opciones -dt o -d o perderá todos sus archivos de configuración.
-dd directorio = directorio de archivos de datos usados por suck (sucknewsrc suckkillfile suckothermsgs active-ignore)
-p extensión
Esta extensión se añade a todos los archivos, de modo que Vd. puede tener varios nodos de toma de artículos. Por ejemplo, si Vd. especifica -p .dummy, entonces suck busca sucknewsrc.dummy, suckkillfile.dummy, etc, y crea sus archivos temporales con la misma extensión. Esto le permite a Vd. mantener varios archivos sucknewsrc, uno para cada nodo.
-K Esta opción hace que suck que no tenga en
cuenta el(los) archivo(s)
killfile (archivos de filtro).
-L Esta opción hace que suck que NO escriba en
suck.killlog el
registro de los artículos filtrados.
-LS
Esta opción hace que suck cree un registro corto de cada artículo eliminado por el filtro. El registro corto contiene el grupo del artículo y cual es el patrón al que se ajustaba, así como el MsgID del artículo eliminado.
-LL
Esta opción hace que suck cree un registro largo de cada artículo filtrado. El registro largo contiene la información del registro corto y la cabecera del artículo filtrado.
-H Esta opción hará que suck omita la
comprobación del
historial.
-U usuario
-P clave
Estas dos opciones le permiten a Vd. especificar un usuario y una clave si su servidor de NNTP las solicita.
-c
Si se especifica esta opción suck hará limpieza cuando finalice su cometido. Esto incluye:
-M
Esta opción hace que suck envíe un comando de "modo de lectura" al servidor remoto. If Vd. obtiene un comando de mensaje inválido inmediatamente después del anuncio de bienvenida, pruebe esta opción.
-W tiempo_de_pausa núm_mensajes_pausa
Esta opción hace que suck haga pausas mientras recoge artículos. Vd. puede necesitar especificar la pausa (en segundos), y cuan a menudo parar (cada X artículos). Ej.: -W 10 100 hará que suck pare durante 10 segundos cada 100 artículos. ¿ Por qué querría hacer esto ? Suck puede causar altas cargas en el servidor remoto y esta pausa permite al servidor "tomar aliento".
-w tiempo_de_pausa núm_mensajes_pausa
Esta opción le permite a Vd. decelerar a suck mientras obtiene artículos. Si Vd. envía a suck una señal predefinida (por defecto SIGUSR1, véase suck_config.h) suck pasará de las opciones de pausa por defecto (definidas mediante la opción -W) a los valores de esta opción. Por ejemplo, Vd. ejecuta suck con -w 2 2 y Vd. envía a suck una señal SIGUSR1 (usando kill). Suck parará dos segundos entre un mensaje y otro, permitiendo "recuperar aliento" al servidor. Si Vd envía otra señal SIGUSR1 a suck, entonces suck volverá a las opciones de pausa por defecto. Si no se especificaron opciones de pausa en la línea de comando (Vd. omitió -W), entonces suck volverá a su velocidad máxima de recogida.
-l archivo_de_frases
Esta opción hace que suck cargue un archivo de frases alternativas, en vez de usar los mensajes imbuidos. Esto le permite a Vd. hacer que suck imprima sus mensajes en otro idioma o permite personalizar los mensajes sin tener que recompilar suck. Véase más abajo.
-D
Esta opción hace que suck envíe varios mensajes de debug a "debug.suck", usado básicamente por mantenedor.
-R
Esta opción hace que suck no revise el servidor de news cuando recomience. El comportamiento por defecto es volver a revisar el servidor de news en busca de artículos nuevos, inclusive en los recomienzos.
-q
Esta opción hace que suck no escriba la cuenta de artículos y BPS mientras dura la obtención de mensajes. Conveniente cuando se está ejecutando suck en modo desatendido, por ejemplo mediante crontab.
-C artículos
Esta opción hace que suck rompa la conexión y la reabra cada cierto número de artículos. Esto está diseñado para luchar contra la opción LIKE_PULLERS=DONT de INN, con la que hay quien compila. Con LIKE_PULLERS=DONT, después de 100 mensajes, INN para cada mensaje, bajando drásticamente la velocidad de recogida. Yo no recomiendo el uso de esto, pero Vd. no tiene elección...
-k
Esta opción hace que suck NO añada el sufijo de la opción -p a los archivos de filtro (killfiles), ni al maestro ni al de grupos. Esto le permite a VD. mantener un mismo conjunto de archivos de filtro para varios servidores.
-A
Esta opción hace que suck examine el nodo local (localhost, especificado en la opción -hl ) y use su archivo active para confeccionar y actualizar el sucknewsrc. Si Vd. añade un grupo a su nodo local, suck lo añadirá a sucknewsrc y recogerá los artículos. O, si Vd. borra un grupo de su nodo local, éste será borrado de sucknewsrc. Si no está permitido enviar artículos a un grupo particular, entonces la línea de sucknewsrc estará comentada. Con esta opción Vd. nunca tiene que editar sucknewsrc. En caso de que Vd. tenga grupos de news (como local y junk) de los que no quiere recoger mensajes, puede poner esos grupos en el archivo "active-ignore", uno por cada línea, y suck ignorará esos grupos cuando revise el nodo local (localhost). Si Vd. usa la opción -p de sufijo, suck buscará la existencia de un archivo "active-ignore" con ese sufijo. Si no existe, entonces buscará la existencia de un archivo sin el sufijo.
-AL archivo_active
Esta opción es similar a la opción -A, excepto que lee la lista del archivo active en lugar de conectarse al servidor de NNTP. Todas las características de la opción -A son aplicables aquí también. Si se usan las dos en la línea de comando, suck intentará primero usar la opción -A; si ésa falla, usará esta opción.
-hl localhost
Esta opción especifica el nodo local. Se requiere para las opciones -A y -bp.
-T tiempo_tope
Esta opción reemplaza el valor precompilado de TIMEOUT, tiempo tope de conexión. Es el tiempo que suck está esperando datos del host remoto antes de sobrepasar el tope y abortarse.
-n
Esta opción hace que suck use el número de artículo en lugar del MsgId cuando se reciben mensajes. Esta opción es supuestamente menos dificultosa para el servidor remoto. También puede eliminar problemas si su ISP (proveedor de acceso a internet) caduca los artículos rápidamente y Vd. recibe errores de "article not found" con frecuencia.
-u
Esta opción hace que suck envíe al servidor remoto un comando AUTHINFO USER nada más conectarse, en lugar de esperar la petición de autorización. Deberá además usar las opciones -U y -P cuando use ésta.
-z
Esta opción hace que suck omita el proceso normal de eliminación de duplicaciones. Básicamente es para máquinas lentas donde la eliminación de mensajes duplicados puede llevar más tiempo del que se emplearía en la descarga de éstos. No se recomienda.
-x
Esta opción hace que suck no compruebe la existencia del caracter > al final de los Messagge-ID's. Esta opción es para los servidores NNTP desneuronados que truncan la información del XHDR a 72 caracteres.
-B
Esta opción hace que suck intente almacenar artículos en su directorio ANTES de empezar a recoger mensajes. Esto puede ser útil si Vd. tuvo problemas en una recogida previa. Esta opción sólo funciona si Vd. especifica una opción de almacenamiento (ver más adelante). Si no hay mensajes para almacenar alguna de las de las opciones de almancenamiento pueden producir mensajes de advertencia. Pueden ser ignorados con toda confianza. Si existen archivos de almacenamiento al final de la ejecución de suck en el modo inn-batch, estos serán sobre-escritos ya que el nuevo archivo de almacenamiento contendrá todos los mensajes. En el modo rnews, si el archivo existe, se abortará y no almacenará ningún mensaje.
Suck obtiene mensajes de un servidor NNTP y envía los artículos a la salida estándar. Suck acepta como argumento el nombre del servidor NNTP o, si Vd. no da un argumento, tomará la variable de entorno NNTPSERVER. Vd. puede redireccionar los artículos o comprimirlos directamente con algo como "suck server.domain | gzip -9 > output.gz". Ahora es asunto suyo que hacer son ellos. Puede Vd. tenerlos ya en su máquina local porque usó una línea slip o puede tener que enviarlos a su máquina local.
Suck obtiene mensajes de un servidor NNTP y guarda cada artículo en un archivo separado. Se guardan en el directorio especificado en suck_config.h o en la opción -dm de la línea de comando.
Suck obtiene los archivos de un servidor NNTP y los guarda en archivos, uno por cada artículo (modo multiarchivo). La colocación de los archivos está basada en las definiciones en suck_config.h y la -dm de la línea de comando. Una vez que suck ha recogido todos los artículos, construirá un archivo batch que puede ser procesado por innxmit o rnews, o podrá llamar a lmove para poner los archivos directamente en el formato /news/grupo/numero.
-bi - construye el archivo batch para innxmit. Los archivos se dejan intactos y el archivo batch se construye conteniendo una lista con el path completo de cada artículo. Entonces innxmit puede ser ejecutado mediante:
-bl - suck podrá lmove(r) para dejar los artículos con el formato /news/grupo/numero. Vd. debe especificar el nombre del archivo de configuración. Se pasan de suck a lmove los siguienetes argumentos:
-br - construye un archivo para rnews. Los artículos son concatenados consecutivamente, con el separador #!rnews tamaño. Esto puede ser usado como entrada para rnews:
-r tamaño especifica el tamaño máximo del archivo para rnews. Esta opción le permite a Vd. especificar el tamaño máximo del archivo para rnews. Cuando se alcanza este límite, se crea un nuevo archivo DESPUÉS de escribir el artículo en curso en el archivo batch antiguo. El archivo batch segundo y los sucesivos tienen una secuencia que comienza por 1 añadida al nombre de archivo especificado con -br. Nótese que como se debe acabar de escribir el artículo en curso después de alcanzar el límite, el tamaño máximo de archivo es solamente aproximado.
-bf - construye un archivo de batch para infeed. Este archivo contiene el MsgID y el camino completo para cada artículo. La principal diferencia entre la opción de innxmit y ésta es que el archivo de infeed se contruye según los artículos están siendo descargados, con lo que se le pueden pasar los artículos a infeed incluso aunque todavía haya más artículos descargándose.
-bp - Esta opción hace que suck construya un archivo batch y envíe los artículos de ese archivo al nodo local (especificado como localhost en la opción -hl). Esta opción usa el comando IHAVE para enviar todos los artículos descargados al nodo local. El archivo batch se llama suck.post y se sitúa en el directorio temporal (-dt). Se borra cuando concluye el envío de todos los artículos de una forma satisfactoria. Los artículos se borran incluso si no son aceptados por el servidor (generalemente si ya está en el servidor o el artículo es demasiado antiguo). Si ocurre otro error el artículo NO es borrado. Vd. puede descargar y enviar artículos a su servidor local con el siguiente comando, sin preocuparse por estar usando INND o CNEWS.
Si Vd. especifica @archivo en la línea de comando, suck lo leerá y buscará en él cualquier parámetro que Vd. quiera pasarle. Puede especificar en este archivo los mismos argumentos que en la línea de comando. También puede incluir comentarios. Los comentarios comienzan con '#' y siguen hasta el final de la línea. Los argumentos de la línea de comando prevalecen sobre los del archivo.
Suck busca un archivo sucknewsrc para ver que artículos desea Vd. y cuales ya han sido recibidos. El formato de sucknewsrc es muy simple. Consiste en dos o tres campos. el primero es el nombre del grupo. El siguiente es el número del mayor artículo del grupo descargado en la anterior conexión. El tercer campo, opcional, limita el número de artículos que son descargados cada vez. Si hay más artículos que ese número, sólo se descargan los más recientes. Si el tercer campo es 0 no se descargan mensajes. Los campos están separados por un espacio.
Cuando suck acaba, crea el archivo suck.newsrc que contiene el nuevo sucknewsrc con los números de artículo actualizados.
Para añadir un nuevo grupo de news, simplemente añádalo a sucknewsrc con número de artículo -1 (o cualquier número menor que 0). Suck tomará los X mensajes más nuevos de ese grupo. Por ejemplo, un -100 hará que suck descargue los 100 artículos más recientes para ese grupo de news.
Para hacer que suck no tenga en cuenta un grupo de news ponga un # como primer caracter de la línea.
Para usar las rutinas de mantener y filtar archivos, quítese de comentario a la línea #define KILLFILE en el archivo suck_config.h. Entonces, si existe el archivo suckkillfile las cabeceras de todos los artículos serán revisadas y los artículos descargados o no según los parámetros en los archivos. Si no se especifica opción de longitud de registro (véanse las opciones -L anteriores), entonces se utilizará la opción de registro larga.
Se permiten comentarios en las líneas de los archivos de filtro. Las líneas de comentario tienen un # en su primera posición. Todo el contenido de la línea de comentario será ignorado.
El sistema de borrado y aceptación funciona así: Todos los artículos son comprobados usando el archivo de filtro maestro (killfile). Si un artículo no es eliminado por el filtro maestro, entonces se estudia su línea de grupo (group). Si existe un archivo de grupo para alguno de los grupos en el artículo, se comprueba ese archivo de grupo. Si se ajusta al contenido de un archivo de aceptación (keepfile) entonces se acepta y en otro caso se marca para ser borrado. Si se ajusta al contenido de un archivo de filtro (killfile) entonces se marca para ser borrado, en otro caso se mantiene entre los aceptados. Todo esto se hace con cada uno de los grupos de la línea group.
HILINES= Selecciona cualquier artículo de más líneas que el especificado.
LOWLINES= Selecciona cualquier artículo de menos líneas que el especificado.
NRGRPS= Esta línea seleccionará cualquier artículo que tenga más grupos que el número especificado. Típicamente se usa en el killfile para evitar spam. ( Un artículo spam es el que se envía a demasiados grupos, como esos que siguen el esquema de "hágase rico", etc.)
CABECERA: Cualquier línea de cabecera válida: Suck le permite comprobar la existencia de un patrón o cadena en una línea de cabecera simple o bien en toda la cabecera del artículo. Para comprobar una línea individual basta especificarla. Por ejemplo, para comprobar si [email protected] está en la línea del From hay que poner
Nótese que la línea de cabecera se debe ajustar EXACTAMENTE con el contenido del artículo. Para comprobar existencia de una línea de Follow-To: basta poner "Follow-To:" como parámetro. Cada item de búsqueda debe ir en una línea separada, eg:
El parámetro HEADER: es un caso especial de los citados. Si Vd. usa HEADER:, se buscará el item en toda la cabecera. Se permiten varias líneas HEADER: en cada archivo de filtro (killfile).
Si en su sistema están las rutinas regex(), entonces se busca que case con las expresiones regulares en vez de meras cadenas. Observe que la opción QUOTE= se aplica incluso en las expresiones regulares.
BODY: Esta parámetro le permite analizar el cuerpo de un artículo en busca de texto. De nuevo, si su sistema tiene regex(), Vd. puede usar expresiones regulares y también se aplica la opción QUOTE=. Se permiten varias líneas BODY: en cada archivo de filtro. ADVERTENCIA: con ciertas combinaciones de regex, especialemnte con .* al principio (ej BODY:.*jpg) y con grandes artículos puede ocurrir que las rutinas regex consuman mucho tiempo de UCP y parezca que suck no está haciendo nada.
BODYSIZE> Este parámetro selecciona cualquier artículo cuyo tamaño de cuerpo (sin incluir las cabeceras) sea mayor que ese parámetro.
BODYSIZE< Este parámetro selecciona los artículos cuyo tamaño de cuerpo sea menor que dicho parámetro.
QUOTE= Este item define el caracter usado para la cita literal de cadenas. El valor por defecto es ". Si un item comienza por el caracter QUOTE, entonces es comprobado tal y como aparece (diferenciando las mayúsculas y las minúsculas). Si un item no comienza con el caracter de QUOTE, entonces las comprobaciones se hacen sin importar si se trata de mayúsculas o minúsculas.
GROUP= Esta línea permite especificar parámetros para aceptar o borrar artículos grupo por grupo. Hay tres partes en esta línea. Las partes se deben separar por un espacio exactamente. La primera parte es o "keep" o "delete". Si es keep, entonces se recogen los artículos de ese grupo que se ajustan los parámetros del archivo de grupo. Si es delete, entonces no se recogen los artículos de ese grupo que se ajustan a los parámetros. La segunda parte, el nombre de grupo, es el nombre completo del grupo que se se comprobará usando el archivo de grupo. El nombre de grupo puede contener un * como último caracter para ajustarse a varios grupos, ej: "esp.comp.so.linux.*" puede ajustarse a esp.comp.so.linux.anuncios, esp.comp.so.linux.redes, etc. La tercera parte indica el archivo de grupo que contiene los parámetros sobre los que se comprobará. Observe que si Vd. especifica un sufijo con la opción -p, ese sufijo se añade al nombre del archivo que busca suck, SALVO que use la opción -k anterior.
GROUP_OVERRIDE_MASTER Esto le permite a Vd. suprimir el comportamiento por defecto del archivo de filtro. Si aparece esta opción en el archivo de filtro maestro se comprobará el archivo de grupo incluso aunque el artículo en cuestión sea marcado para eliminar por el filtro maestro. Si el archivo de grupo decide no eliminarlo, entonces será aceptado.
TIEBREAKER_DELETE
Esta opción le permite a Vd. suprimir el comportamiento de desligadura que incluido por defecto. Se da cuando un mensaje es marcado para aceptarse en un grupo y para ser eliminado en otro. El comportamiento por defecto es aceptar el mensaje. La opción TIEBREAKER_DELETE evitará esto y hará que el artículo sea eliminado.
USE_EXTENDED_REGEX Esta opción hace que suck use expresiones regulares extendidas en vez de expresiones regulares estándar. Puede ser usado en el archivo de filtro maestro, en cuyo caso se aplica a todos los archivos de filtro o en un archivo de filtro individual, en cuyo caso se aplica a los parámetros que le siguen en el archivo de filtro.
PROGRAM= Esta opción permite a suck llamar a un programa externo para comprobar cada artículo. En esta línea Vd. puede especificar argumentos además del nombre del archivo. Si la línea está en su suckkillfile, todas las demás lineas se ignorarán. En vez de eso, la cabecera del artículo se enviará al programa externo y éste determinará si recogerlo o no. Funciona así: mediante un fork, suck ejecutará su programa con la entrada y la salida redireccionadas. Suck pasará las cabeceras a su programa a través de la entrada estandar, stdin, y esperará una respuesta a través de la salida estándar, stdout. El flujo de datos para cada artículo es el siguiente:
1. suck escribirá en la entrada estándar del programa externo una cadena de 8 octetos, que representa la longitud de la cabecera. La longitud está en ascii, alineada a la izquierda y terminada por un caracter de cambio de línea (ejemplo: "1234\n").
Todos los parámetros son válidos tanto en el archivo de filtro maestro como en el archivo de filtro de grupo, con la excepción de GROUP, PROGRAM, TIEBREAKER_DELETE y GROUP_OVERRIDE_MASTER. Éstos sólo son válidos en el archivo de filtro maestro.
Si existe suckothermsgs , debe contener un listado de Message-ID's, uno en cada línea, incluyendo los <>. Estos artículos serán recogidos, a la vez que los artículos resultantes del proceso del archivo sucknewsrc. Esto puede ser usado para recoger artículos de otros grupos o que no han sido recogidos por haber sido excluidos por el filtro. Estos artículos NO SON procesados por las rutinas de filtro de artículos.
Si se especifica la opción -l archivo_de_frases o existe el archivo /usr/local/lib/suck.phrases (definido en suck_config.h), entonces suck leerá este archivo de frases alternativas y las usará para todos los mensajes de estado y de error en lugar de los mensajes compilados por defecto. La línea de comando prevalece sobre el archivo, si aparecen ambos. El archivo de frases contiene todos los mensajes usados por suck, rpost, testhost y lmove, cada uno en una línea separada y entre comillas. Para crear un archivo de frases, ejecute en la línea de comando la instrucción: make phrases Esto creará el archivo "phrases.engl", que es una lista de las frases por defecto. Basta editar este archivo, cambiando las frases en inglés por las del lenguaje que elija, asegurándose de mantener las frases entre comillas. Esas frases pueden incluir variables usadas para escribir datos provenientes del programa, como por ejemplo el nombre del nodo. Las variables se denotan por %vN%, donde N es un número. Estas variables pueden aparecer en cualquier orden en la frase, por ejemplo, son frases válidas:
siguiente línea, de retorno de carro o un tabulador respectivamente. Observe que la primera línea del archivo de frases es el número de versión actual. Se compara con el número de versión del suck que se está ejecutando para tener por seguro de que se trata del archivo de frases de la versión correcta.
Si Vd. madifica el código fuente y añade frases nuevas, debe regenerar phrases.h para que todo funcione correctamente. Para crearlo basta ejecutar make phrases.h en la línea de comando.
Suck acepta dos señales definidas en suck_config.h. La primera señal (por defecto es SIGTERM) hará que suck acabe de recoger el artículo en curso, almacene en el batch los artículos recogidos y acabe sin error.
La segunda señal (por defecto SIGUSR1) hará que suck use los valores de pausa definidos con la opción -w (ver los párrafos anteriores).
Suck acabará con los siguientes códigos de retorno:
This document was created by man2html, using
the manual pages.
Time: 20:28:07 GMT, January 21, 2005