LINUX.ORG.RU

ssh и shell скрипт


0

0

Добрый день. Необходимо сделать следующие: Прописать в шел скрипте строчку, которая будет удалено (ssh) посылать команду убить приложение на целевом компьютере.

Моя строчка выглядит так:

ssh user${1}@${2} "export NUMKILL=`ps x | grep 'trafinspag.exe' | grep -v 'grep' | awk '{print $1}'`; kill $NUMKILL"

(переменные ${1} и ${2} это номер юзера и айпишник соответственно, они передаются при запуске скрипта.)

Не через скрипт - все работает, а вот через скрипт, как я понял, переменная NUMKILL не получает своего значения, а все что было заключено в `, выполняется как программа (команда 3456 не найдена).

так же не правельно работает awk, print $1 выводит номер юзера, который я передал скрипту а не 1 поле.

Я знаю, то решение кроется в правельном построении сентекса кавычек и скобок, но не знаю точно как.

Заранее, спасибо за помошь.

У тебя всё что в двойных кавычках раскрывается ещё на клиенте, а не на сервере. Попробуй так:

ssh user${1}@${2} /bin/sh <<EOF
    NUMKILL=\$( ps x | grep 'trafinspag.exe' | grep -v 'grep' | awk '{print \$1}' )
    kill \$NUMKILL
EOF
Here-document для улучшения читабельности. Все '$' экранированы.

И может проще вырвиглазный конвеер + kill заменить на pkill?

Deleted
()
Ответ на: комментарий от Deleted

думаю можно, но я в первый раз слышу про pkill...был бы благодарен за строчку кода реализованную с его помощью

shapiro
() автор топика

>export NUMKILL=`ps x | grep 'trafinspag.exe' | grep -v 'grep' | awk '{print $1}'`; kill $NUMKILL

O_O

Lucky1 ★★★
()
Ответ на: комментарий от Deleted

не ну надо же а) а я все в мане killa ищу как по имени процесс убить) как все оказалось просто) спасибо большое!

shapiro
() автор топика

ps aux | grep чего_убить | awk '{print $2}' | xargs kill

?

gaestur
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.