Netcat as Daemon

0

Estou tentando configurar algo que faz telnet em um dispositivo e salva a saída no arquivo. Eu posso fazê-lo funcionar na CLI, mas não executá-lo na inicialização (usando crontab)

Isso funciona em execução na linha de comando:

$ nc <host> <port> | tee -a ~/log.txt

O desafio é fazer com que isso funcione na inicialização do sistema usando o cron. O nc não roda sozinho como um cron, então eu o executo na tela -d -m e ele fica aberto.

screen -d -m nc <host> <port> | tee -a ~/log.txt

Não há saída para o arquivo. Eu também tentei:

screen -d -m nc <host> <port> 2>&1 | tee -a ~/log.txt

Ainda não há nada sendo enviado para o arquivo ... Eu vi algumas pessoas recomendando a tag -d no nc, mas -d parece ser uma configuração de atraso no CentOS 7 e não "ignorar STDIN" como os outros estão dizendo .

    
por Jonathan Hurst 27.01.2018 / 23:20

2 respostas

0

Existem algumas coisas incompreensíveis na sua pergunta.

getting this to run on system boot using cron

Se você quer rodar no boot, você faz alguma mágica com o systemd (para o Redhat e seus seguidores; o Centos sucumbiu do vs 7 on) ou você o coloca no rc.local para sistemas Unix ou Unix-like. Se você colocá-lo no cron (ou mais exatamente: crontab), ele será executado em intervalos regulares.

Eu também não entendo por que você gostaria de envolver nc em um comando screen . Embora talvez seja possível, parece um exagero desnecessário.

Se você quer rodar na inicialização do sistema, geralmente não há um stdout disponível, então tee também é uma má idéia. E, se você quiser sair do seu script de inicialização, você vai querer que nc seja executado em segundo plano.

Então, eu aconselho você a colocar

nohup nc <host> <port> > /home/you/log.txt &

em rc.local e verifique com sudo systemctl edit --full rc-local que rc.local é executado na inicialização.

    
por 28.01.2018 / 00:05
0

Criando um serviço systemd trabalhado para mim. O nc fecharia imediatamente quando eu não tivesse a tag --recv-only. Isso parece mantê-lo funcionando conforme o esperado.

[Unit]
Description=test

[Service]
ExecStart=/bin/sh -c 'nc -t --recv-only 10.215.83.80 3004 >> /home/hursjohn/log.txt'

[Install]
WantedBy=multi-user.target
    
por 28.01.2018 / 18:54