xinetd
特定のサービスのコメントを外してインストールと許可を試みましたecho
。time
daytime
/etc/inetd.conf
ncでテストしてみました。
$ nc localhost echo #works like cat—✓
$ nc localhost daytime #works like date—✓
しかし、私は次のことを試しました。
$ nc localhost time
# => weird characters
さて、明らかに時間はバイナリタイムスタンプとして提供されます。
だから私はそれを数値に変換し、次のように入力すると復号化できると思いましたdate -d @$number
。
$ nc localhost time |wc -c #=>4 (4 bytes)
$ alias reverseBytes="perl -0777e 'print scalar reverse <>'"
$ date -d $(nc localhost time | reverseBytes | od -An -tu4|sed 's/^ */@/')
いいですね。これで、人間が読むことができる正確な時間があります。ただし、70年が過ぎた時間です。
何が問題なの? (openbds-inetd
同じ結果を提供します)。
ベストアンサー1
時間契約(RFC 868)日付は言うまでもなく、非常に異例です。
時間はバイナリとしてエンコードされますが、最も重要なのは、エポックが標準のUNIXエポック(1970-01-01 00:00:00)ではなく1900-01-01 00:00:00であることです。
次のようにデコードします。
python -c 'import struct, sys; print(struct.unpack(">L", sys.stdin.read())[0]-2208988800)'
たとえば、
nc localhost time | python -c 'import struct, sys; print(struct.unpack(">L", sys.stdin.read())[0]-2208988800)'
datetime
あるいは、いくつかの追加操作でPythonオブジェクトに変換することもできます。
python -c 'import struct, sys, datetime; print(datetime.datetime.utcfromtimestamp(int(struct.unpack(">L", sys.stdin.read())[0]-2208988800)))'