Eu tenho um Lan IP local dinâmico no trabalho (temporariamente), mas para se conectar de casa, eu ssh para o host A (IP estático) e de lá para minha máquina.
No entanto, como o IP muda, eu gostaria de salvar no host A com frequência, por exemplo, toda vez que a conexão é ativada (muitas vezes perco minha conexão ethernet devido a cabos ruins).
Estou usando o NetowrkManager, então criei um arquivo em /etc/NetworkManager/dispatcher.d/90exportIP
, que executa o seguinte:
ssh hostA "echo $(date) enp4s0f2 IP: $(/sbin/ifconfig enp4s0f2 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://') >> todaysElanIP";
Isso obtém meu IP e o salva no arquivo todaysElanIP
no host A.
O problema é que este script é executado como root e minhas chaves não estão lá. Eu às vezes apenas executo este comando no bash e funciona. Mas eu gostaria que fosse executado automaticamente toda vez que a rede estivesse funcionando.
Eu tentei runuser -l myUser
, mas o ssh-agent não está acessível assim.
Não tem que funcionar todas as vezes. Por exemplo, na hora da inicialização ainda não adicionei minha chave ao ssh-agent. Se da próxima vez que a rede estiver inoperante e, em seguida, novamente a exportação acontecer, isso funcionaria para mim.
É um pouco confuso como posso facilmente fazer algo com um usuário não-root e parece tão difícil quanto root.
Tags ssh root ssh-agent not-root-user