Kill processo remoto quando o salto duplo SSHing em um servidor

1
Estou fazendo um salto duplo SSH para entrar primeiro em um servidor que tem um endereço IP público e porta SSH aberta, em seguida, SSHing no próximo computador, enquanto ligando a minha porta VNC local para a porta de sistemas remotos. Em um diagrama:

[Meu sistema local] --- túnel SSH (porta 5900 para frente) - > [Servidor] - Tunnel SSH (porta 5900 para a frente) - > [Sistema Remoto]

Eu criei um único comando de string para fazer tudo isso, mas há um problema. x11VNC parece falhar uma quantidade excessiva. Como, literalmente, eu poderia ter 10 minutos de trabalho antes do meu sistema congelar novamente e eu tenho que reiniciar x11vnc. Mas isso não é o que esta questão é sobre.

O comando que estou usando é o seguinte:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 [email protected] 'ssh [REMOTE SYSTEM IP] 'pkill x11vnc; x11vnc --ncache 10''

Agora eu incluí o comando PKILL aqui para limpar a instância x11vnc congelada que ainda está em execução para liberar a porta 5900 (e não ter processos zumbis permeando meu sistema): No entanto, isso não funciona. Não importa o que eu faça, se for um hop duplo, isso apenas retorna x11vnc, comando não encontrado

NOTE : Se eu remover o pkill, esta sequência de comandos funciona perfeitamente. Mas eu preciso matar o zumbi

Se a partir do servidor, no entanto, tento executar o comando:

ssh [REMOTE SYSTEM IP] 'pkill x11vnc; x11vnc --ncache 10' 

isso funciona bem! Alguém sabe por que isso não vai funcionar quando se faz uma conexão ssh "double hop"?

    
por dynamphorous 01.03.2012 / 18:32

2 respostas

0

Consegui finalmente resolver o problema. Acontece que eu precisava usar 'em vez de' para o interior ''. (backtick (sotaque grave) em vez de aspas simples)

Então, o último comando de trabalho é:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 [email protected] 'ssh [REMOTE SYSTEM IP \'pkill x11vnc\; x11vnc --ncache 10\''
    
por 03.03.2012 / 00:56
1

No seu exemplo, parece que você está aninhando um conjunto de aspas simples em outro conjunto de aspas simples. Você precisará "escapar" do conjunto interno de aspas e do ponto-e-vírgula assim:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 [email protected] 'ssh [REMOTE SYSTEM IP] \'pkill x11vnc\; x11vnc --ncache 10\''

Como alternativa, você pode criar um pequeno arquivo de lote no sistema executando x11vnc. O script mata o x11vnc para você, então tudo que você faz é executar o script como seu comando final.

    
por 01.03.2012 / 20:25

Tags