GNU/Linux >> Znalost Linux >  >> Linux

Odesláním „ps“ na více serverech se výstup přesune do jednoho textového souboru?

Snažím se vytvořit skript, který vypíše všechny zaniklé procesy přes 66 redhat boxů do jediného textového souboru. Rozumím principům, jak to udělat na jedné krabici, ale nejsem si jistý, jak tento proces přeměnit na něco, co poběží na jedné krabici, ale dotazuji se na několik krabic.

Takže jsem našel tento malý skript:

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

Chápu, že mohu v podstatě odeslat ps -ef | grep "defunct" jako $command , ale myslím si, že jakýkoli výstupní soubor, který vytvořím, bude přenesen na hostitele, na kterém běží.

Potřebuji, aby se to spouštělo z jednoho boxu, přičemž výstup ukládám do toho jednoho boxu, ale obsahuje informace pro dalších 65 boxů?

Věřím, že máme zavedené ssh bez hesla. Moje znalost Unixu je středně pokročilá, trochu z toho vím, protože používám SAS.

Přijatá odpověď:

K přesměrování dojde na volajícím počítači, nikoli na vzdáleném počítači, takže výsledný soubor bude lokální. Také grep nemusí spouštět vzdáleně:

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

Tím se provede ps -ef na každém hostiteli a grep rozbalí defunct výstupní řádky. grep poběží lokálně, ne vzdáleně. Výsledný soubor je rovněž vytvořen lokálně.

Pokud chcete jeden výstupní soubor:

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

Nebo dokonce (pro jediné vyvolání grep )

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

Linux
  1. Jak zřetězit více řádků výstupu do jednoho řádku?

  2. Jak připojit obsah více souborů do jednoho souboru

  3. Kombinujte více unixových příkazů do jednoho výstupu

  1. Výstup do Stdout a zároveň Grep do souboru?

  2. Synchronizace uživatelských účtů na více serverech

  3. Soubor protokolu Tail na více počítačích přes ssh

  1. Jak nakonfigurovat více serverů MySQL na jednom systému pomocí mysqld_multi

  2. Odstraňte prázdné řádky v textovém souboru pomocí grep

  3. Jak rozdělit jeden textový soubor do více souborů *.txt?