scripts script resueltos programas pasar parametros manejo español ejercicios ejemplos cadenas bash shell while-loop

bash - resueltos - Script de shell mientras el ciclo de la línea de lectura se detiene después de la primera línea



scripts linux ejercicios resueltos (4)

El problema es que do_work.sh ejecuta comandos ssh y, por defecto, ssh lee de stdin, que es su archivo de entrada. Como resultado, solo verá la primera línea procesada, porque ssh consume el resto del archivo y su ciclo while termina.

Para evitar esto, pase la opción -n a su comando ssh para hacer que lea desde /dev/null lugar de stdin.

Tengo el siguiente script de shell. El objetivo es recorrer cada línea del archivo de destino (cuya ruta es el parámetro de entrada al script) y trabajar contra cada línea. Ahora, parece que solo funciona con la primera línea en el archivo de destino y se detiene después de que esa línea fue procesada. ¿Hay algo mal con mi script?

#!/bin/bash # SCRIPT: do.sh # PURPOSE: loop thru the targets FILENAME=$1 count=0 echo "proceed with $FILENAME" while read LINE; do let count++ echo "$count $LINE" sh ./do_work.sh $LINE done < $FILENAME echo "/ntotal $count targets"


La opción ssh -n evita verificar el estado de salida de ssh cuando se usa HEREdoc mientras se canaliza la salida a otro programa. Por lo tanto, se prefiere el uso de / dev / null como stdin.

#!/bin/bash while read ONELINE ; do ssh ubuntu@host_xyz </dev/null <<EOF 2>&1 | filter_pgm echo "Hi, $ONELINE. You come here often?" process_response_pgm EOF if [ ${PIPESTATUS[0]} -ne 0 ] ; then echo "aborting loop" exit ${PIPESTATUS[0]} fi done << input_list.txt


Use ssh -n ... para ejecutar sus comandos remotos a través de ssh.


#! /bin/bash cat /root/host.txt | while read LINE .. ..

use ssh -n -o StrictHostKeychecking=no en la do_work.sh comandos do_work.sh

  1. Artículo de lista