Você perdeu o recurso de tubulação ( |
em vez de ;
) em seu comando. Eu proponho este:
ssh -t [email protected] "sudo netstat -plnt | grep 2020 | awk '{print \}' | sed s+/.*++g | sort -u | xargs kill"
Suponho que você tenha sudo
instalado e permissões para usá-lo em seu servidor. Meus testes mostraram que você pode precisar dele para que o netstat
funcione corretamente com a opção -p
.
Eu prefiro usar aqui grep
+ sed
para evitar script awk complicado (na minha opinião).
-
-t
: permite inserir sua senha de usuário para executarsudo
command -
grep 2020
: filtra o número da porta -
awk '{print \}'
: permite queawk
escolha o campo correto -
sed s+/.*++g
: remove/
e os seguintes caracteres (nota: o sinal+
substitui o tradicional/
aqui por shortness) -
sort -u
: caso você tenha vários processos trabalhando com a porta (acontece se o IPv4 e o IPv6 forem usados) -
xargs kill
: chamakill
usando a entrada padrão como parâmetro
Você pode precisar adicionar sudo
ao último, se o processo de matar for de outro usuário: sudo xargs kill
Como exemplo, você também pode usar variáveis (observe aqui o ponto-e-vírgula usado para separar comandos sem canalizar):
[email protected] ; port=2020 ; ssh -t $server "sudo netstat -plnt | grep $port | awk '{print \}' | sed s+/.*++g | sort -u | xargs kill"