Obtendo a data de um cliente ssh

2

Eu tenho um problema com um computador embutido em que ele não tem um Real Time Clock separado e, como tal, toda vez que eu o reinicializo, ele perde o controle da data atual. Isso é muito chato porque muitos processos dependem da verificação de carimbos de hora de arquivo.

Eu posso me conectar a esta máquina através do ssh e posso definir manualmente a data toda vez que eu fizer o login, mas é entediante e propenso a esquecer e criar estragos nos timestamps. A máquina sem data é o servidor ssh e eu conecto com meu PC como um cliente SSH.

O que eu quero saber é como definir a data no servidor remoto (máquina incorporada) com a data do cliente SSH (meu laptop) automaticamente no login.

Eu pensei que deveria fazer isso configurando o ssh_config do meu cliente para executar um LocalCommand, mas pelo que eu li no homem ele não funciona como eu quero. O comando seria como o descrito nesta questão mas com o data.

A outra maneira que pensei seria que o .profile do usuário que eu conectei à máquina remota tentaria se conectar ao meu laptop e executar a data para atualizar sua data.

Como devo fazer isso?

    
por Paulo Neves 14.05.2016 / 16:32

2 respostas

2

Você pode definir a data com

ssh root@embedded "date -s '$(date)'"

(ou seja, executar data localmente e fornecer a saída para data -s no sistema remoto.)

Claro que você precisa de outro comando ssh para abrir a sessão interativa, então use as chaves e o ssh-agent ou uma conexão master para efetuar o login.

Normalmente, eu também recomendaria o uso do NTP, mas se a máquina não tiver uma conexão com a Internet, você precisará configurar um servidor NTP em alguma máquina que possa ser acessada. Possivelmente o laptop.

O mesmo vale para executar o ntpdate / rdate / whatever a partir do script de login: você precisa de uma máquina executando algo para servir o tempo do sistema embarcado.

    
por 14.05.2016 / 20:43
0

Você pode criar um script em seu servidor local ou em qualquer outro servidor Linux em seu comando:

ssh root@server "date -s '$(date)'"

Você pode executá-lo com o cron a cada hora ou a cada poucos minutos, conforme desejar. No entanto, parece não ser a melhor coisa a fazer.

O seu sistema embarcado tem acesso à Internet ou acesso à rede para qualquer outro servidor Linux que você tenha?

A melhor maneira de implementar o que você precisa é usar o cliente NTP no sistema embarcado. Ele solicitará os dados de data e hora do servidor NTP e definirá os locais de acordo com ele.

Você pode ler sobre como instalar o servidor e o cliente NTP aqui .

    
por 27.05.2016 / 12:00

Tags