Mit
snmpget kann mit "HOST-RESOURCES-MIB::hrSystemDate.0" die Systemzeit eines Hosts abgefragt werden.
Das Problem ist das Ausgabeformat, mit dem kein anderes Programm etwas anfangen kann.
Ein Beispiel: 2009-1-31,12:1:3.0,+1:0
Für Menschen ist es lesbar, aber an
date und co. kann man das so nicht übergeben, deshalb...
#!/bin/bash
# snmp Datumstring Format anpassen
remote_ip="127.0.0.1"
commun="public"
# das Datum ueber snmp holen
rdatestring=$( snmpget -v1 -c $commun $remote_ip HOST-RESOURCES-MIB::hrSystemDate.0 | gawk '{print $NF}' )
# den String aufteilen in Datum und Zeit
rdate=$( echo $rdatestring | gawk -F',' '{print $1}' )
rtime=$( echo $rdatestring | gawk -F',' '{print $2}' | gawk -F'.' '{print $1}' )
# das Format korrigieren (Monat, Tag, Stunde,... zweistellig)
cldate=$( echo $rdate | gawk -F'-' '{printf("%4i",$1)}; {printf("%02i",$2)}; {printf("%02i",$3)};' )
cltime=$( echo $rtime | gawk -F':' '{printf("%02i",$1)}; {printf("%02i",$2)}; {printf(" %02i",$3)};' )
# Timestamp mit date
rdate_s=$( date -d "$cldate $cltime sec" +%s )
echo $rdate_s
$rdate_s ist ein Unix Timestamp, mit dem dann z.B. gerechnet oder etwas verglichen werden kann.
Zum Einsatz kommt (mal wieder) printf, das die einstelligen Monat, Tag, usw. -Ausgaben vorne mit "0" auffüllt.