lcavalheiro
(usa Slackware)
Enviado em 15/01/2016 - 22:58h
kidsaqua escreveu:
Não tem nenhum programa que chama o tunel. O comando que eu coloquei no meu rc.local e:
su - user -c "ssh -R xxxx:127.0.0.1:xxxx user@host -N" &
(xxxx são as portas)
Queria que esse comando fosse executado caso o tunel se fechasse se a internet cair.
Eu estava pensando em algo assim:
_LOG="/var/log/tunnel.log"
func_tunel(){
while true; do
echo -e "Tunnel to on port xxxx started at date" >> $_LOG
su - user -c "ssh -R xxxx:127.0.0.1:xxxx user@host -N" & >> $_LOG
echo -e "Tunnel down at date" >> $_LOG
sleep 30
done
}
func_tunnel &
O problema é colocar essa função dentro de um loop...
SEi que deve ser simples, mas não consigui....
Não vai conseguir porque esse é o jeito errado. Primeiro vamos corrigir uma coisa:
su - user -c "ssh -R xxxx:127.0.0.1:xxxx user@host -N" &
Meu filho, qualquer coisa que rode pelo rc.local já roda como root, né? O certo é
ssh -R xxxx:127.0.0.1:xxxx user@host -N &
Se você quer que o túnel se abra quando o usuário fizer login, coloque esse mesmo comando em $HOME/.profile
Agora sim, vamos nós:
1) Como root, crie um arquivo em /usr/local/bin/ chamado regras-tunnel.crontab. Cole o seguinte conteúdo nele:
#!/bin/bash
# now starts process if it isn't running
if [ ! "$(pidof ssh)" ] ; then
ssh -R xxxx:127.0.0.1:xxxx user@host -N
fi
E então rode o comando
# chmod +x /usr/local/bin/regras-tunnel.crontab
2) Inicie o túnel
Se o túnel for iniciar como root durante a inicialização do sistema, coloque em /etc/rc.d/rc.local a linha:
ssh -R xxxx:127.0.0.1:xxxx user@host -N &
Se for pro túnel se abrir quando o usuário fizer login, coloque em $HOME/.profile (pode criar o arquivo se ele não existir)
ssh -R xxxx:127.0.0.1:xxxx user@host -N &
3) Verificar a cada 30s se o túnel está rodando
Se o túnel for iniciar como root, rode o comando
# crontab -e
Se o túnel for iniciar no login do usuário, rode o comando
$ crontab -e
Nos dois casos, cole este conteúdo no arquivo que aparecer:
# tunnel check, this crontab rule is used to check every 30s if tunnel is running
0,5 * * * * /usr/loca/bin/regras-tunnel.crontab > /dev/null 2>&1
--
Dino®
Vi veri universum vivus vici
Public GPG signature: 0x246A590B
Só Slackware é GNU/Linux e Patrick Volkerding é o seu Profeta