Inicia um processo remoto usando sshpass não funcionando

0

A máquina A se conecta a uma máquina remota B usando sshpass e a máquina remota B não concede ssh acesso a root diretamente, por isso, conecto-me a user e uso sudo e também desabilitou a senha para o user quando ele faz sudo su . Quando os comandos são simples, como ls -lrt /some/dir , recebo a saída correta para o comando, mas quando inicio um script de servidor / shell na máquina remota (o servidor não leva tempo enquanto o script leva 1 minuto para ser executado), a saída é mostrada, mas não voltar ao normal (ou seja, parece que está fazendo algum trabalho, mas eu sei que o servidor foi iniciado / script foi concluído).

Comando usado:

sshpass -p 'password' ssh -o StrictHostKeyChecking=no [email protected] "sudo ls /dev/ttyUSB*"

acima funciona bem, eu recebo a saída e o bash é retornado para que eu possa escrever mais comandos e fazer coisas.

sshpass -p 'password' ssh -o StrictHostKeyChecking=no [email protected] "sudo /root/path/server &"

sshpass -p 'password' ssh -o StrictHostKeyChecking=no [email protected] "sudo /root/path/to/script/scriptTakes1Minute param1 param2"

Mas, o acima não funciona como esperado. Parece que está fazendo trabalho, mas não é o bash não é retornado e por isso não posso escrever comandos mais.

Eu não posso compartilhar o script ou o programa do servidor, pois é o código da empresa. Mas o código do servidor usa sockets de datagrama UNIX para se comunicar.

/* Creating a UNIX datagram socket for Server Application */
if ((sock = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
{
    perror("server: socket");
    exit(1);
}

Quando tentei

sshpass -p 'password' ssh -o StrictHostKeyChecking=no [email protected] "sudo /root/path/server >/dev/null &2>1 </dev/null &"

o programa do servidor foi iniciado corretamente, mas o script não funcionou como esperado e não retornou o bash, mas assim que pressionei ENTER o bash retornou, eu sei que significa algo, mas não sei o quê. / p>

Não consigo redirecionar a saída para um arquivo, pois não sei quanto tempo o comando levará para ser executado no total, isso pode levar alguns minutos.

Eu encontrei algo que vai ajudar muito (eu acho). O script que é mantido nessa máquina B cria poucos processos em segundo plano e, portanto, o sshpass não retorna até que todos esses processos em segundo plano sejam eliminados manualmente da Máquina B. Assim que esses programas são eliminados, obtemos essa saída assim como o bash de volta.

O script cria 8 sessões ppp que são executadas em segundo plano.

    
por Shashank Singh 19.03.2018 / 06:48

0 respostas