Значение переменной $ # [закрыто]

Su secuencia de comandos "se atasca solo en ssh" porque no le está dando un comando para ejecutar. El ssh $hostsimplemente establece una sesión ssh interactiva con $host, que luego espera a que comience a interactuar con él.

Cuando exitdesde el host remoto, su secuencia de comandos continuará y se ejecutará if (( $(ps....) > 0 )); then.......... fien su sistema LOCAL. Y luego continúe con el ciclo for con el próximo host en la lista (que se "atasca" nuevamente hasta que salga ).

#!/bin/bash

service=splunk

for host in $( 0 )); then
               echo $service is running
             else
               echo $service is not running
             fi"
done

o, como sugirió @DopeGhoti, una alternativa mucho más simple y mejor es:

#!/bin/sh

service=splunk

for host in $(

Una alternativa aún mejor es instalar algo como Parallel Distributed Shell de LLNL, también conocido como pdsh , luego (después de configurar el archivo de lista de hosts en/etc/genders)puede ejecutar comandos como:

pdsh -g all service splunk status

que ejecuta service splunk statusen el grupo de hosts definido por la etiqueta "todos".

pdshejecuta los comandos en varios hosts al mismo tiempo (, de ahí el nombre "shell distribuido en paralelo" ), en lugar de uno a la vez. Cada línea de salida del sistema remoto tiene como prefijo su nombre de host.

por ej. en mi pequeña red doméstica:

$ pdsh -g all uptime
kali:  12:09:03 up 3 days, 23:26,  2 users,  load average: 0.08, 0.05, 0.06
hanuman:  12:09:03 up 12 days, 13:09,  2 users,  load average: 0.00, 0.00, 0.00
indra:  12:09:03 up 12 days, 13:05,  2 users,  load average: 0.07, 0.12, 0.09
ganesh:  12:09:03 up 34 days, 23:34, 19 users,  load average: 1.86, 1.48, 1.40

Por cierto, la salida de una sola línea -como el ejemplo uptimeanterior se puede formatear en columnas ordenadas canalizándolas, por ejemplo, column -t. La salida de línea múltiple -se puede agrupar por nombre de host conectando la utilidad complementaria de pdshdshbak.

Si no desea estar ingresando contraseñas todo el tiempo, requiere que se configure la autenticación basada en la clave ssh -en cada host remoto... al igual que su bucle for o cualquier otra cosa que se conecte a través de ssh.

pdshestá empaquetado para Debian y la mayoría de las otras distribuciones de Linux.

-3
05.11.2016, 23:57
2 ответа

В оболочках POSIX значение специальной встроенной переменной $ # соответствует количеству установленных позиционных параметров. Пример: [

] Установите $ 1 , $ 2 и $ 3 и установите для « $ # » значение 3:

set c a b

От Базовые спецификации Open Group, выпуск 6

2
28.01.2020, 05:19

$ # - количество аргументов $ * - аргументы $ @ - аргументы

Посмотрите на это

#!/bin/sh
set 1 2 3 4
echo "we had $# args"
echo Arguments are  $@ using echo '$@'
echo Arguments are  $* using echo '$*'
-1
28.01.2020, 05:19

Теги

Похожие вопросы