Fórum Root.cz

Hlavní témata => Server => Téma založeno: PAvel2 07. 10. 2015, 19:55:51

Název: Kill na více serverech pomocí SSH
Přispěvatel: PAvel2 07. 10. 2015, 19:55:51
Zdravim,
ve while se snazim zabit proces na vzdalenych serverech pomoci

ssh root@$server for i in `ps -ef | grep apn | grep agent | awk '{print $2" "$3}' `; do kill -9 $i; done

bohuzel nejak spatne escapuju cast kolem awk a uplne se to .... zkousel  sem uz i  \ a moc sem si nepomohl ... muze nekdo pomoct?
Název: Re:Kill na více serverech pomocí SSH
Přispěvatel: Petr Krčmář 07. 10. 2015, 20:13:06
Skutečně je to potřeba řešit takhle? Není lepší použít Parallel SSH (http://www.root.cz/clanky/parallel-ssh-jeden-prikaz-vladne-vsem/)?
Název: Re:Kill na více serverech pomocí SSH
Přispěvatel: Homo Buzerantus 07. 10. 2015, 21:19:18
ssh root@server "bash -c 'for i in \`ps -ef | grep apn | grep agent |awk \\{print\\ \\\\\$2,\\\\\$3\\}\`; do echo \$i; done'"

Ale radši si napiš na serveru skript, kterej to zabije a kterej pustíš přes ssh, pak to nebudeš muset tak escapovat. Pokud má ten proces fixní název, tak použij killall -9 název
Název: Re:Kill na více serverech pomocí SSH
Přispěvatel: Mirek Prýmek 07. 10. 2015, 21:20:30
Zdravim,
ve while se snazim zabit proces na vzdalenych serverech pomoci

ssh root@$server for i in `ps -ef | grep apn | grep agent | awk '{print $2" "$3}' `; do kill -9 $i; done

bohuzel nejak spatne escapuju cast kolem awk a uplne se to .... zkousel  sem uz i  \ a moc sem si nepomohl ... muze nekdo pomoct?

Problem je v $1 - pri spusteni pres ssh ho musis escapovat dvakrat - poprve se totiz odescapuje ve tvem shellu a podruhe na serveru.
Název: Re:Kill na více serverech pomocí SSH
Přispěvatel: Jenda 07. 10. 2015, 23:56:01
Co třeba dát před ten for echo? Hned by ti docvaklo, co je tam špatně…