0
votes

La fonction Shell to Grep compte de deux hôtes et retourne la somme de WC

J'ai écrit un script shell qui se connecte à deux hôtes et grep un mot dans le serveur sur un chemin particulier. Je dois attribuer la sortie du GREP à une variable et renvoyer la sortie. PFB ma fonction xxx

Je veux que la variable de somme soit renvoyée par la fonction ci-dessus. J'ai essayé le code ci-dessus mais je ne reçois aucune sortie à partir des variables $ $ SUMD2, $ SUM. S'il vous plaît conseiller.


0 commentaires

3 Réponses :


0
votes

La ligne dans votre script xxx

doit être réécrité comme xxx


3 commentaires

$ Ajouter ne sont pas définis sur le côté du client


@Sorin, l'OP demande comment résumer, le reste est sa responsabilité


"J'ai essayé le code ci-dessus mais je ne reçois aucune sortie à partir des variables $ add2, $ add2, $ somme. S'il vous plaît conseiller." - Ceci est de la question. Il me semble qu'il demande plus qu'une somme



0
votes

Cela devrait vous donner une idée de ce que vous devez faire: xxx

Note: non testé

Vos erreurs:

  • Vous ne capturez pas la sortie de la SSH, les variables d'ajout que vous définissez. sont définis sur le côté serveur et ils ne seront pas au client
  • Vous n'utilisez pas la syntaxe appropriée pour Bash Expressions $ (())
  • Vous ne devez pas utiliser l'entrée de tuyauterie aveuglément à bash / ssh, utilisez -c si vous devez exécuter une coque

8 commentaires

grep -c retirez ensuite le | wc -l


@Jetchisel: cela fonctionne pour un fichier unique si vous grep -h ou Redirection ou coupe -d: -f2 ou similaire, mais pas avec grep -r où il produit plusieurs chiffres par fichier non un total


Le Bash -C semble inconnu et il semble manquer une citation unique.


@tripleeee, sans Bash -C toutes les lignes résultantes seraient apportées du côté du client, s'il ya de nombreux matchs, cela signifierait beaucoup de données transférées inutilement


Just ssh ebi @ "1 $ 1" "grep -ri '$ 2' / var / log / cluster / | wc -l" y ferait déjà. Il n'y a pas de code spécifique à bash ici. (Remarquez cependant les citations ajoutées.)


@tripleeeeee, à partir du manuel SSH "Si la commande est spécifiée, elle est exécutée sur l'hôte distant au lieu d'une coque de connexion", donc j'ai toujours supposé qu'une coquille est nécessaire pour la tuyauterie, mais j'ai fait un test rapide et il semble que vous avez raison.


@tripleee regarda le code - il utilise la coque de l'utilisateur pour exécuter la commande - github.com/openssh/openssh-portable/blob/... - J'ai appris quelque chose aujourd'hui, merci


Oui, il y a toujours le problème que certains utilisateurs ont une coquille non standard; Je suppose que je suis d'accord avec la décision que ssh devrait exécuter la coque préférée de l'utilisateur, mais c'est une mise en garde pour la portabilité, bien sûr.



-4
votes

Vous pouvez également essayer xxx


1 commentaires

Aucun script Bash ne devrait exiger Expr ; Bash a des remplaçants intégrés pour toutes les fonctionnalités fournies par cet outil hérité. La syntaxe de backtick est obsolète et doit être évitée en faveur du POSIX moderne $ (substitution de commande) syntaxe.