socat: chamando do script, bashrc ou systemd?

1

Eu quero usar socat para direcionar comandos seriais através de ethernet para um conversor serial-ethernet (endereço IP estático). Eu queria saber qual seria uma boa maneira de começar a socat.

Se eu entendi tudo corretamente, o systemd me permite ter certeza de que a socat está sempre em execução ou, em caso de falha, tenta reiniciar. O arquivo .service seria parecido com:

[Service]
Type=simple
Restart=always
RestartSec=5

[Unit] 
Description=my socat test
User=me
Group=me

ExecStart=/bin/bash -c '~/my_socat.sh'

[Install]
WantedBy=multi-user.target

O script seria parecido com

#!/bin/bash
socat PTY,link=/home/me/dev/valve1 TCP:192.168.11.101:5001 & socat PTY,link=/home/me/dev/valve2 TCP:192.168.11.101:5002

Esta abordagem faria o que eu quero? Socat seria reiniciado se morresse por algum motivo? E o que aconteceria se a conexão ethernet não estivesse disponível quando a socat fosse iniciada? Executá-lo a partir do shell sem conexão de rede não funciona e o comando falha com a mensagem de erro "a rede está inacessível".

Como você se certificaria se socat está sendo executado antes que meu script (python) seja executado? Você iniciaria o socat de dentro do python?

    
por Moritz 12.12.2016 / 21:58

0 respostas