Elimina um processo através do SSH encontrando o ID do processo

3

Eu quero escrever um script que me deixe matar um processo, enviando um comando para o script.

Eu tenho trabalhado mais, mas o meu problema é atualmente eu preciso ssh em duas vezes para matá-lo 1) Para obter o ID do processo 2) Para matar o processo - Eu preferiria fazer isso de uma só vez, e eu tentei canalizar, mas parece que não consigo dar certo.

Aqui está minha versão atual:

ProcessNumber='ssh user1@server1 -p22222 ps -ef | awk '/[s]sh -f -N -T -R32400:localhost:32400 remote@remote/{print }''
ssh user1@server1 -p22222 "kill $ProcessNumber"

E aqui está o roteiro que não consigo trabalhar.

ssh user1@server1 -p22222 kill 'ps -ef | awk "/[s]sh -f -N -T -R32400:localhost:32400 remote@remote/{print }"'

Alguma sugestão para conseguir o segundo trabalho de uma só vez?

    
por denski 16.01.2017 / 16:34

2 respostas

4

A análise de saída de ps -ef é um pouco complicada. Eu recomendo que você use pgrep como

pgrep -f 'ssh -f -N -T -R32400:localhost:32400 remote@remote'

Ou reduza tudo com pkill :

ssh user1@server1 -p22222 "pkill -f 'ssh -f -N -T -R32400:localhost:32400 remote@remote'"
    
O
por Sergiy Kolodyazhnyy 16.01.2017 / 16:58
3

Algo parecido com esse cara feia pode fazer isso:

ssh user1@server1 -p22222 "kill $(ps -ef | awk '/[s]sh -f -N -T -R32400:localhost:32400 remote@remote/{print $2}')"

O escape ainda pode precisar de alguns ajustes (não foi testado).

    
por Jakuje 16.01.2017 / 16:47