BASH - ssh - wykonywanie 2 komend w jednym poleceniu
: 25 wrz 2011, 10:48
Mam nie mały problem. Otóż w jednym skrypcie łącze się z kilkoma maszynami i na każdej z nich muszę wykonać kilka komend. Idea jest mniej więcej taka: łącze się z daną maszyna zbieram PID interesującego mnie procesu. Łącze się drugi raz i sprawdzam utlizację CPU przez ten PID. Łącze się trzeci raz i sprawdzam uptime danego PID.
Jak pisałem wcześniej maszyn jest kilka, procesów które mnie interesują na każdej z maszyn również kilka, co przy obecnej idei skryptu powoduje konieczność łączenia się z jedną maszyna kilkanaście razy w trakcie jednego wywołania skryptu (skrypt wywoływany co 1 minutę).
Można to zmienić -> łącząc 2 i 3 komendę w jedno polecenie. I tu właśnie zaczynają się schody- nie do końca potrafię złączyć dwa polecenia typu:
Jeśli próbuje wykonać polecenie typu:
to oczywiście drugie polecenie nie zwraca nic, co więcej jeśli stworzę sobie testowo polecenie:
to wynik drugiej komendy (ps -efw) zwraca wyniki z maszyny lokalnej i nie zdalnej.
Czy ktoś może mi podpowiedzieć co robię źle i jak wykonać kilka komend w jednym poleceniu na zdalnej maszynie ?
Jak pisałem wcześniej maszyn jest kilka, procesów które mnie interesują na każdej z maszyn również kilka, co przy obecnej idei skryptu powoduje konieczność łączenia się z jedną maszyna kilkanaście razy w trakcie jednego wywołania skryptu (skrypt wywoływany co 1 minutę).
Można to zmienić -> łącząc 2 i 3 komendę w jedno polecenie. I tu właśnie zaczynają się schody- nie do końca potrafię złączyć dwa polecenia typu:
Kod: Zaznacz cały
ssh user@maszyna top -b -n1 |grep grep cokolwiek | grep cokolwiek |awk '{if ($9 < 800 ) print $1"\t"$9"\t"; else print "\033[37;5;41m"$1"\t"$9"\t""\033[0m" ; }'`
ssh usr@maszyna ps -eo user,pid,etime,ucmd | grep cokolwiek | grep cokolwiek | cut -b1-23 | sed -e 's/-/d/g' -e 's/:/h/g' | awk '{ if ( $2 == "'cokolwiek'" ) print $3"m" ; }'`
Kod: Zaznacz cały
ssh user@maszyna top -b -n1 |grep grep cokolwiek | grep cokolwiek |awk '{if ($9 < 800 ) print $1"\t"$9"\t"; else print "\033[37;5;41m"$1"\t"$9"\t""\033[0m" ; }'` ; ps -eo user,pid,etime,ucmd | grep cokolwiek | grep cokolwiek | cut -b1-23 | sed -e 's/-/d/g' -e 's/:/h/g' | awk '{ if ( $2 == "'cokolwiek'" ) print $3"m" ; }'`
Kod: Zaznacz cały
ssh user@maszyna top -b -n1 |grep grep cokolwiek | grep cokolwiek |awk '{if ($9 < 800 ) print $1"\t"$9"\t"; else print "\033[37;5;41m"$1"\t"$9"\t""\033[0m" ; }'` ; ps -efw
Czy ktoś może mi podpowiedzieć co robię źle i jak wykonać kilka komend w jednym poleceniu na zdalnej maszynie ?