GNU/Linux >> Tutoriels Linux >  >> Linux

Envoi de "ps" sur plusieurs serveurs, sortie vers un seul fichier texte ?

J'essaie de créer un script qui produira tous les processus obsolètes sur 66 boîtes redhat dans un seul fichier texte. Je comprends les principes de cette opération sur une boîte, mais je ne sais pas comment transformer ce processus en quelque chose qui fonctionnera sur une boîte, mais interroge plusieurs boîtes.

Alors, j'ai trouvé ce petit script :

for host in $(cat hosts.txt); do ssh "$host" "$command" >"output.$host"; done

Je comprends que je pourrais essentiellement soumettre ps -ef | grep "defunct" comme la $command , mais je pense que tout fichier de sortie que je crée sera déposé sur l'hôte sur lequel il s'exécute.

J'ai besoin de faire cette exécution à partir d'une boîte, en stockant la sortie sur cette boîte, mais contenant les informations pour les 65 autres boîtes ?

Je crois que nous avons mis en place ssh sans mot de passe. Ma connaissance d'Unix est en quelque sorte intermédiaire, j'en connais des bouts parce que j'utilise SAS.

Réponse acceptée :

La redirection se produit sur la machine appelante, pas sur la machine distante, donc le fichier de résultat sera local. Aussi, le grep n'a pas besoin d'être exécuté à distance :

while read -r host; do
    ssh "$host" ps -ef | grep "defunct" >"output.$host"
done <hosts.txt

Cela exécute ps -ef sur chaque hôte et grep extraira le defunct lignes de sortie. Le grep fonctionnera localement, pas à distance. Le fichier de résultat est également créé localement.

Si vous souhaitez un seul fichier de sortie :

while read -r host; do
    ssh "$host" ps -ef | grep "defunct"
done <hosts.txt >output.txt

Ou même (pour une seule invocation de grep )

while read -r host; do
    ssh "$host" ps -ef 
done <hosts.txt | grep "defunct" >output.txt

Linux
  1. Comment supprimer plusieurs lignes aléatoires d'un fichier texte à l'aide de Sed ?

  2. Comment configurer plusieurs serveurs MySQL sur un seul système à l'aide de mysqld_multi

  3. Supprimer les lignes vides dans un fichier texte via grep

  4. Comment concaténer plusieurs lignes de sortie sur une seule ligne ?

  5. Comment diviser un fichier texte en plusieurs fichiers *.txt ?

Envoyez un ping à plusieurs serveurs et affichez la sortie dans l'interface utilisateur textuelle supérieure

Comment enregistrer la sortie de la commande Linux dans une image ou un fichier texte

Manipuler du texte avec sed et grep

Comment joindre plusieurs lignes en une seule dans un fichier sous Linux

Comment extraire des adresses e-mail d'un fichier texte sous Linux

3 méthodes pour afficher la sortie tail -f de plusieurs fichiers journaux dans un terminal