O mais provável é que o script de inicialização seja executado em um ambiente raiz por padrão.
Assumindo que você está usando ~/.ssh/id_rsa.pub
como seu modo de autenticação (Você nunca mencionou que está usando uma senha e usando tal coisa, enquanto automatizar é uma má idéia de qualquer forma, então eu assumirei a autenticação por chave) .
Então, vou em frente e presumo ainda mais que você não permitiu que a (ou tenha uma) raiz-chave gerada fosse confiável em seu laptop?
Você tem duas opções neste caso.
- execute
ssh-keygen
como root e copie o conteúdo de/root/.ssh/id_rsa.pub
para seu arquivo/home/<user>/.ssh/authorized_keys
.
ou
- altere seu comando para
/usr/bin/ssh -i /home/<user>/.ssh/id_rsa.pub 'laptop_user'@'laptop_ip' "echo '### RaspberryPi 2 online ###' | /usr/bin/write 'laptop_user' pts/0"
O segundo é mais simples, pois usa o certificado de usuário que você já conhece.
pedido de inicialização da Debian e problema de conectividade de rede
Provavelmente (depois de ler seus comentários) este é um problema de ordem de inicialização de script, o que significa que seu script é executado. betwork network.d teve uma chance de DHCP sua interface e trazê-lo para cima.
mesmo rc.local
é executado depois de network.target
, mas isso não é o mesmo que network-online.target
desculpe dizer.
Você tem novamente algumas opções aqui, uma é simplesmente adicionar isso à sua linha crontab
:
@reboot sleep 60 && /usr/bin/ssh -i /home/<user>/.ssh/id_rsa.pub 'laptop_user'@'laptop_ip' "echo '### RaspberryPi 2 online ###' | /usr/bin/write 'laptop_user' pts/0"
Qual vai adiar seu comando por 60 segundos antes de executar o comando SSH.
Não é a coisa mais bonita do mundo, mas se você não se importa com as "notificações" em tempo real, é rápido e funciona.
Se você quiser opções mais confiáveis, , sugiro que crie um script init.d
com um requisito de destino para network-online.target
, que não acionará seu script de inicialização até que a rede seja conectados. Esta é a opção mais rápida e confiável para seguir.
Eu uso systemd
, portanto não posso escrever ou verificar um script init.d
adequado, tente seguir este guia e veja se funciona: link